Chapter 2: Operating System Structures Joe McCarthy CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures Outline Announcements / updates Gayle Laakman McDowell, Th, 10/11, 4:30pm, UW2-005 GUIs / IDEs for remotely accessing uw1-320-lab Catalyst GoPost guidelines Questions on Programming Assignment 1? Sample programs Using fork(), pipe(), dup2(), close(), execlp() Chapter 2: Operating Systems Structures Including more on fork(), pipe(), dup2(), close(), execlp() Live programming experiments (time permitting) Next time Chapter 3: Processes CSS 430: Operating Systems - OS Structures
Comfort, Growth & Panic Zones http://www.alljapaneseallthetime.com/blog/comfort-zone-growth-zone-panic-zone Goal: stretch as much as possible from your comfort zone into your growth zone while avoiding your panic zone TMI / too much help [on forum] comfort zone CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures Sample Programs C++ programs using fork(), pipe(), dup2() ~css430/examples/processmgmt on uw1-320-lab Recommendation: Decompose problem into small[er] chunks Experiment with small changes (compile, test, debug) testpipe[0-2].cpp Send “hello” through pipe to STDOUT Differences: hardcoded string vs. argv[1], write() vs execlp() pipedup2[a-f].cpp Using system calls to do ‘ps –A | tr a-z A-Z’ Differences Parent vs. child calling ps vs. tr Using read() & write() vs. execlp() for tr CSS 430: Operating Systems - OS Structures
Chapter 2: OS Structures Operating System Services User Operating System Interface System Calls Types of System Calls System Programs Operating System Design and Implementation Operating System Structure Virtual Machines Operating System Debugging Operating System Generation System Boot Material derived, in part, from Operating Systems Concepts with Java, 8th Ed. © 2009 Silberschatz, Galvin & Gagne CSS 430: Operating Systems - OS Structures
A View of Operating System Services CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures 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 Program Interface (API) rather than direct system call use Three common APIs are Win32 API for Windows POSIX API for POSIX-based systems UNIX, Linux, Mac OS X) Java API for the Java virtual machine (JVM) Why use APIs rather than system calls? (Note that the system-call names used throughout this text are generic) CSS 430: Operating Systems - OS Structures
Example of System Calls System call sequence to copy the contents of one file to another file CSS 430: Operating Systems - OS Structures
Example of System Calls System call sequence to copy the contents of one file to another file CSS 430: Operating Systems - OS Structures
Example of Standard API Consider the ReadFile() function in the Win32 API—a function for reading from a file A description of the parameters passed to ReadFile() HANDLE file—the file to be read LPVOID buffer—a buffer where the data will be read into and written from DWORD bytesToRead—the number of bytes to be read into the buffer LPDWORD bytesRead—the number of bytes read during the last read LPOVERLAPPED ovl—indicates if overlapped I/O is being used CSS 430: Operating Systems - OS Structures
API – System Call – OS Relationship CSS 430: Operating Systems - OS Structures
Standard C Library Example printf() C library call write() system call CSS 430: Operating Systems - OS Structures
System Call Parameter Passing Often, more information is required than simply the name of the desired system call Exact type & amount of information vary according to OS & call Three general methods used to pass parameters to the OS CSS 430: Operating Systems - OS Structures
System Call Parameter Passing Often, more information is required than simply the name of the desired system call Exact type & amount of information vary according to OS & call 3 general methods used to pass parameters to the OS Simplest: pass the parameters in 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 Parameters placed, or pushed, onto the stack by the program and popped off the stack by the operating system Advantages / disadvantages? CSS 430: Operating Systems - OS Structures
System Call Parameter Passing Often, more information is required than simply the name of the desired system call Exact type & amount of information vary according to OS & call 3 general methods used to pass parameters to the OS Simplest: pass the parameters in 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 Parameters placed, or pushed, onto the stack by the program and popped off the stack by the operating system Advantages / disadvantages Block and stack methods do not limit the number or length of parameters being passed CSS 430: Operating Systems - OS Structures
Parameter Passing via Table CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures Types of System Calls Process control File management Device management Status Information Communications Protection CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures Process Control Process: a program loaded in memory and able to execute CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures Process Control Process: a program loaded in memory and able to execute OS Operations: Create/terminate process Get/set process attributes Wait for time, event, signal Allocate/free memory CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures Process Control Process: a program loaded in memory and able to execute Process states Memory File Descriptor Table Registers OS Operations: Create/terminate process Get/set process attributes Wait for time, event, signal Allocate/free memory [Preview of Chapter 3] CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures fork() int main( ) { int fd[2]; int pid; if ( pipe( fd ) < 0 ) { perror( "pipe error" ); exit( EXIT_FAILURE ); } if ( ( pid = fork() ) < 0 ) { perror ( "fork error" ); … pid = fork() Process id of child (>0) parent child fd[0] fd[1] pid … fd[0] fd[1] pid … CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures pipe() int main( ) { int fd[2]; int pid; if ( pipe( fd ) < 0 ) { perror( "pipe error" ); exit( EXIT_FAILURE ); } if ( ( pid = fork() ) < 0 ) { perror ( "fork error" ); … http://vip.cs.utsa.edu/classes/cs3733s2009/notes/USP-06.html CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures pipe() + fork() int main( ) { int fd[2]; int pid; if ( pipe( fd ) < 0 ) { perror( "pipe error" ); exit( EXIT_FAILURE ); } if ( ( pid = fork() ) < 0 ) { perror ( "fork error" ); … http://vip.cs.utsa.edu/classes/cs3733s2009/notes/USP-06.html CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures close() + dup2() int main( ) { int fd[2]; int pid; if ( pipe( fd ) < 0 ) { … } if ( ( pid = fork() ) < 0 ) { …} … if ( pid > 0 ) { // parent close( fd[1] ); dup2( fd[0], 0 ); close( fd[0] ); else { // child dup2( fd[1], 1 ); execlp( "ps", "ps", "-A", NULL ); } http://vip.cs.utsa.edu/classes/cs3733s2009/notes/USP-06.html CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures fork() + execlp() (pipedup2a.cpp) int main( ) { int fd[2]; int pid; if ( pipe( fd ) < 0 ) { … } if ( ( pid = fork() ) < 0 ) { if ( pid > 0 ) { // parent close( fd[1] ); dup2( fd[0], 0 ); close( fd[0] ); else { // child dup2( fd[1], 1 ); execlp( "ps", "ps", "-A", NULL ); } … parent child fd[0] fd[1] pid … fd[0] fd[1] pid … pipedup2a ps -A CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures Resource Management File Management Device Management [joemcc@uw1-320-18 ThreadOS]$ ls -l Kernel*.java -rw------- 1 css430 users 10193 Nov 11 2004 Kernel_fil.java -rw------- 1 css430 users 8603 Dec 23 2010 Kernel_hw3part1.java -rw-r--r-- 1 css430 users 8395 Nov 13 2004 Kernel.java -rw------- 1 css430 users 8817 Nov 11 2004 Kernel_org.java [joemcc@uw1-320-18 ThreadOS]$ stat Kernel.java File: `Kernel.java' Size: 8395 Blocks: 24 IO Block: 32768 regular file Device: 17h/23d Inode: 130884 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1803/ css430) Gid: ( 100/ users) Access: 2011-11-12 19:40:45.000000000 -0800 Modify: 2004-11-13 20:36:20.000000000 -0800 Change: 2011-10-17 14:00:43.000000000 -0700 CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures Resource Management File Management Create file, delete file Open, close Read, write, reposition file pointer Get file attributes, set file attributes Device Management Request device, release device Read, write, reposition read/write head Get device attributes, set device attributes Logically attach (mount) or detach (unmount) devices CSS 430: Operating Systems - OS Structures
Maintaining info / connections Information Maintenance Communication CSS 430: Operating Systems - OS Structures
Maintaining info / connections Information Maintenance Get/set time or date Get/set system data Get/set process, file or device attributes Communication Create/delete communication connection Send/receive messages Maintain communication status information CSS 430: Operating Systems - OS Structures
Windows & Unix System Calls CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures MS-DOS execution (a) At system startup (b) running a program CSS 430: Operating Systems - OS Structures
FreeBSD Running Multiple Programs CSS 430: Operating Systems - OS Structures
OS Design & Implementation Important distinction: Policy: What will be done? Mechanism: How to do it? Benefits: Maximum flexibility Policy changes need not entail mechanism changes & vice versa CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures Simple Structure MS-DOS Goal: most functionality in the least space Not divided into modules Interfaces & levels of functionality not well separated CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures Layered Approach Modularity: Each layer (level) uses functions & services only from layer(s) directly below Provides functions & services only to layer(s) directly above CSS 430: Operating Systems - OS Structures
Layered Approach to Networking CSS 430: Operating Systems - OS Structures
Traditional UNIX System Structure CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures UNIX Two components Systems programs ls, rm, cp, mv, ps, grep, wc, … The kernel Everything below the system-call interface and above the physical hardware Provides the file system, CPU scheduling, memory management, and other operating-system functions; a large number of functions for one level CSS 430: Operating Systems - OS Structures
Microkernel System Structure Moves as much from the kernel into “user” space Communication takes place between user modules using message passing Benefits: Detriments: CSS 430: Operating Systems - OS Structures
Microkernel System Structure Moves as much from the kernel into “user” space Communication takes place between user modules using message passing Benefits: Easier to extend a microkernel Easier to port the operating system to new architectures More reliable (less code is running in kernel mode) More secure Detriments: Performance overhead of user space to kernel space communication CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures Mac OS X Structure CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures Modules Most modern operating systems implement kernel modules Uses object-oriented approach Each core component is separate Each talks to the others over known interfaces Each is loadable as needed within the kernel Overall, similar to layers but with more flexible CSS 430: Operating Systems - OS Structures
Solaris Modular Approach CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures Virtual Machines A virtual machine takes the layered approach to its logical conclusion. It treats hardware and the operating system kernel as though they were all hardware. A virtual machine provides an interface identical to the underlying bare hardware. The operating system host creates the illusion that a process has its own processor and (virtual memory). Each guest is provided with a (virtual) copy of underlying computer. CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures Virtual Machines (a) Nonvirtual machine (b) virtual machine CSS 430: Operating Systems - OS Structures
Solaris 10 with Two Containers CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures VMware Architecture CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures Java Java consists of: Programming language specification Application programming interface (API) Virtual machine specification CSS 430: Operating Systems - OS Structures
The Java Development Kit CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures Cloud Computing CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures http://news.cnet.com/8301-13953_3-9917409-80.html CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures Amazon Web Services CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures
The Cost of Convenience CSS 430: Operating Systems - OS Structures
CSS 430: Operating Systems - OS Structures For next time Readings Chapters 3: Processes CSS 430: Operating Systems - OS Structures