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
- Eg.
- 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
- User interface - Almost all operating systems have a user interface (UI).
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
- Eg.
- 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
- create process, terminate process
- 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)
- Command interpreter = special program = shell (cshell, korn shell)
- Created at First Login / Program launch
- Execute User-specified command
MS-DOS Layer Structure
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
UNIX Structure (Simplest Moderm System Structure) / Monolithic Kernel 单体核心操作系统设计原则
UNIX Running Multiple Programs
Review: How BSD Operate 1:17:00
Communication Models
- Message Passing
- Through Kernel (System Call)
- Shared Memory
- 开销更低
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
- High-level layers can invoke low-level layers
- Friendlier to modify / maintain
- BUT high performance overhead