Skip to content

OS Services and Structures

Operrating System Services

  • Operating systems provide an environment for execution of programs and services to programs and users
  • One set of operating-system services provides functions that are helpful to the user:

    • User interface - Almost all operating systems have a user interface (UI).
      • Varies between Command-Line (CLI), Graphics User Interface (GUI), touch-screen, Batch
    • Program execution - The system must be able to load a program into memory and to run that program, end execution, either normally or abnormally (indicating error)
    • I/O operations - A running program may require I/O, which may involve a file or an I/O device
    • File-system manipulation - The file system is of particular interest. Programs need to read and write files and directories, create and delete them, search them, list file Information, permission management.

    • Communications - Processes may exchange information, on the same computer or between computers over a network (IPC: internal procedure call / RPC: remote procedure call)

      • Communications may be via shared memory or through message passing (packets moved by the OS)
    • Error detection - OS needs to be constantly aware of possible errors
      • May occur in the CPU and memory hardware, in I/O devices, in user program
      • For each type of error, OS should take the appropriate action to ensure correct and consistent computing
      • Debugging facilities can greatly enhance the user's and programmer's abilities to efficiently use the system
    • Another set of OS functions exists for ensuring the efficient operation of the system itself via resource sharing
    • Resource allocation - When multiple users or multiple jobs running concurrently, resources must be allocated to each of them
      • Many types of resources - CPU cycles, main memory, file storage, l/O devices.
    • Logging - To keep track of which users use how much and what kinds of computer resources
      • Eg. top can monitor the usage information of resources
    • Protection and security - The owners of information stored in a multiuser or networked computer system may want to control use of that information, concurrent processes should not interfere with each other
      • Protection involves ensuring that all access to system resources is controlled
      • Security of the system from outsiders requires user authentication, extends to defending external I/O devices from invalid access attempts

../res/Pasted image 20240229160606.png A View of Operating System Services

System Calls

  • Programming interface to the services provided by the OS
  • Typically written in a high-level language (C or C++)
  • Mostly accessed by programs via a high-level Application Programming Interface (API) rather than direct system call use
    • Eg. libc on Linux
  • Three most common APIs are Win32 API for Windows, POSIX API for POSIX-based systems (including virtually all versions of UNIX, Linux, and Mac OS X), and Java API for the Java virtual machine (JVM)

Types of System Calls

  • Process control
    • create process, terminate process
      • For UNIX: Create = fork, terminate: exit
    • end, abort
    • load, execute
    • get process attributes, set process attributes
    • wait for time
      • For UNIX: wait
    • wait event, signal event
    • allocate and free memory
    • Dump memory if error
    • Debugger for determining bugs, single step execution
    • Locks for managing access to shared data between processes
  • File management: UNIX: open, read, write, close
    • create file, delete file
    • open, close file
    • read, write, reposition
    • get and set file attributes
  • Device management: UNIX: ioctl, read, write
    • request device, release device
    • read, write, reposition
    • get device attributes, set device attributes
    • logically attach or detach devices
  • Information maintenance Eg. getpid...
    • get time or date, set time or date
    • get system data, set system data
    • get and set process, file, or device attributes
  • Communications Eg. pipe, nmap
    • create, delete communication connection
    • send, receive messages if message passing model to host name or process name
      • From client to server
    • Shared-memory model create and gain access to memory regions
    • transfer status information
    • attach and detach remote devices
  • Protection Eg. umask, chown
    • Control access to resources
    • Get and set permissions
    • Allow and deny user access

Architecture Examples

MS-DOS Execution (Single Tasking OS)

../res/Pasted image 20240229161946.png

  • Command interpreter = special program = shell (cshell, korn shell)
    • Created at First Login / Program launch
    • Execute User-specified command

MS-DOS Layer Structure

../res/Pasted image 20240229162200.png

UNIX system structure

  • UNIX -
    • Limited hardware functionality -> the original UNIX operating system had limited structuring
    • UNIX OS consists of two separable parts
  • Systems programs
  • The kernel
    • Everything below the system-call interface and above the physical hardware
    • Provides
      • File system
      • CPU scheduling
      • Memory management
      • Etc.
    • A large number of functions for one level 同一层 / Same address base

../res/Pasted image 20240229162521.png UNIX Structure (Simplest Moderm System Structure) / Monolithic Kernel 单体核心操作系统设计原则

UNIX Running Multiple Programs

../res/Pasted image 20240229162810.png

Review: How BSD Operate 1:17:00

Communication Models

  • Message Passing
    • Through Kernel (System Call)
  • Shared Memory
    • 开销更低

../res/Pasted image 20240229163151.png

Layered Approach

VS Monolithic Design?

  • The operating system is divided into a number of layers (levels), each built on top of lower layers. The bottom layer (layer 0), is the hardware; the highest (layer N) is the user interface.
  • With modularity, layers are selected such that each uses functions (operations) and services of only lower-level layers

../res/Pasted image 20240229163544.png

  • High-level layers can invoke low-level layers
  • Friendlier to modify / maintain
  • BUT high performance overhead