CH 2
CH 2
Operating-System Services
Outline
▪ Operating System Services
▪ User and Operating System-Interface
▪ System Calls
▪ System Services
▪ Linkers and Loaders
▪ Why Applications are Operating System Specific
▪ Design and Implementation
▪ Operating System Structure
▪ Building and Booting an Operating System
▪ Operating System Debugging
Objectives
Note that the system-call names used throughout this text are
generic
Example of System Calls
▪ System call sequence to copy the contents of one file to
another file
Example of Standard API
System Call Implementation
▪ Typically, a number is associated with each system call
• System-call interface maintains a table indexed
according to these numbers
▪ The system call interface invokes the intended system call
in OS kernel and returns status of the system call and any
return values
▪ The caller need know nothing about how the system call is
implemented
• Just needs to obey API and understand what OS will do as a result
call
• Most details of OS interface hidden from programmer by API
Managed by run-time support library (set of functions
built into libraries included with compiler)
API – System Call – OS Relationship
System Call Parameter Passing
▪ Often, more information is required than simply identity of
desired system call
• Exact type and amount of information vary according to
OS and call
▪ Three general methods used to pass parameters to the OS
• Simplest: pass the parameters in registers
In some cases, may be more parameters than registers
• Parameters stored in a block, or table, in memory, and
address of block passed as a parameter in a register
This approach taken by Linux and Solaris
▪ File management
• create file, delete file
• open, close file
• read, write, reposition
• get and set file attributes
▪ Device management
• request device, release device
• read, write, reposition
• get device attributes, set device attributes
• logically attach or detach devices
Types of System Calls (Cont.)
▪ Information maintenance
• get time or date, set time or date
• get system data, set system data
• get and set process, file, or device attributes
▪ Communications
• 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
Types of System Calls (Cont.)
▪ Protection
• Control access to resources
• Get and set permissions
• Allow and deny user access
Examples of Windows and Unix System Calls
Standard C Library Example
▪ C program invoking printf() library call, which calls write()
system call
Example: Arduino
▪ Single-tasking
▪ No operating system
▪ Programs (sketch) loaded
via USB into flash memory
▪ Single memory space
▪ Boot loader loads program
▪ Program exit -> shell
At system startup running a program
reloaded
Example: FreeBSD
▪ Unix variant
▪ Multitasking
▪ User login -> invoke user’s choice of shell
▪ Shell executes fork() system call to create
process
• Executes exec() to load program into
process
• Shell waits for process to terminate or
continues with user commands
▪ Process exits with:
• code = 0 – no error
• code > 0 – error code
System Services
▪ System programs provide a convenient environment for
program development and execution. They can be divided
into:
• File manipulation
• Status information sometimes stored in a file
• Programming language support
• Program loading and execution
• Communications
• Background services
• Application programs
▪ Most users’ view of the operating system is defined by
system programs, not the actual system calls
System Services (Cont.)
▪ Provide a convenient environment for program development and
execution
• Some of them are simply user interfaces to system calls; others
are considerably more complex
▪ File management - Create, delete, copy, rename, print, dump, list,
and generally manipulate files and directories
▪ Status information
• Some ask the system for info - date, time, amount of available
memory, disk space, number of users
• Others provide detailed performance, logging, and debugging
information
• Typically, these programs format and print the output to the
terminal or other output devices
• Some systems implement a registry - used to store and
retrieve configuration information
System Services (Cont.)
▪ File modification
• Text editors to create and modify files
• Special commands to search contents of files or perform
transformations of the text
▪ Programming-language support - Compilers, assemblers,
debuggers and interpreters sometimes provided
▪ Program loading and execution- Absolute loaders,
relocatable loaders, linkage editors, and overlay-loaders,
debugging systems for higher-level and machine language
▪ Communications - Provide the mechanism for creating
virtual connections among processes, users, and computer
systems
• Allow users to send messages to one another’s screens,
browse web pages, send electronic-mail messages, log
in remotely, transfer files from one machine to another
System Services (Cont.)
▪ Background Services
• Launch at boot time
Some for system startup, then terminate
Some from system boot to shutdown