UNIX Foundations The Process and the Kernel 1 Course Description The Goals for this course Understand UNIX Understand Operating Systems Prerequisites: COSC 2P13 : Introduction to Operating Systems COSC 2P91 : Procedural Programming Course Description An intensive study of computer operating system design Multiprogramming Time-sharing Real-time processing Job and task control Synchronization of concurrent processes and processors Resource scheduling Protection Management of hierarchical storage. How to study this course Read and remember Read the book, remember the concepts and commands Think Think operating systems as natural administrative agents Practice Coding with UNIX, use and understand of UNIX commands and get the results The Textbook Used Uresh Vahalia, UNIX Internals: The New Frontiers, Prentice Hall, 1996 Why we use this book? UNIX is one of the most popular operating systems of the world. If you understand UNIX, you can understand other operating systems. References William Stallings, Operating Systems,5th Ed., Prentice Hall,2005 A. Tanenbaum, Modern Operating Systems, 2nd ed. Prentice Hall 2001 Kay A. Robbins and Steven Robbins, UNIX Systems Programming, Prentice Hall,2003 W. R. Stevens, Advanced Programming in the UNIX Environment, Addison Wesley, 1992 Summary of UNIX History XPG SVID POSIX Solaris Digital UNIX ULTRIX SVR4 HP-UX 4.3BSD SCO UNIX SVR3 XENIX SunOS AIX 4.2BSD SVR2 4BSD 3BSD 7 4.4BSD UNIX V1 . . . V6 Summary of UNIX History Xenix BSD V7 PWB Xenix2 PWB2 32V SIII V8 SYSV SCO 2BSD . . . 2.9BSD 3BSD 2.10BSD 4BSD 2.11BSD V10 4.2BSD 4.3BSD V.2 Plan9 Ultrix V.3 SUNOS AIX V.3.2 SVR4 8 4.4BSD Mach Solaris LINUX OSF1 Flexibility Traditional Kernel: file, scheduling, executable file formats 9 Modern UNIX Kernel 10 Assessment of UNIX Advantages: - open software process, - well designed, small and simple kernel, - text files in system databases, - simple, uniform interface to I/O devices, - portability (written in C) 11 Assessment of UNIX Disadvantages: - expansion of the more and more complex I/O library, - unfriendly user interface, - building block approach to tools, but not to the kernel, - too many versions and standards, - monolithic, unmodular and more and more complex kernel. 12 UNIX Architecture Hardware is surrounded by the operating-system Operating system is called the kernel Comes with a number of user services and interfaces shell C 13 compiler UNIX Architecture Application Programs 14 Compiler Components Compiler Shell Editors, and Private User Programs Kernel Hardware User Interface The layers of a UNIX system. 15 UNIX Utility Programs A few of the more common UNIX utility programs required by 16 POSIX UNIX shell programming cp src dest head –20 file ls *.c sort <in >out sort <in >temp;head –30<temp;rm temp sort <in | head –30 grep ter *.t | sort | head –20 | tail –5 >foo sort <x | head & 17 Process In UNIX Process is an instance of a running program. Lifetime: fork/vfork->exec->exit Well-defined hierarchy: parent,child,init, init process: the top process swapper & pagedeamon Orphans: the parent process is terminated. 18 19 Process Creation Submission of a batch job User logs on Created to provide a service such as printing Spawned by an existing process 20 Process Termination Batch job issues Halt instruction User logs off Process executes a service request to terminate Error and fault conditions 21 Reasons for Process Termination Normal completion Time limit exceeded Memory unavailable Bounds violation Protection error example write to read-only file Arithmetic error Time overrun process waited longer than a specified maximum for an event 22 Reasons for Process Termination I/O failure Invalid instruction happens when try to execute data Privileged instruction Data misuse Operating system intervention such Parent as when deadlock occurs terminates so child processes terminate Parent request 23 Process States The Running state The process that gets executed (single CPU) The Ready state any The process that is ready to be executed Blocked state when a process cannot execute until some event occurs (ex: the completion of an I/O) 24 Process States The New state OS has performed the necessary actions to create the process has created a process identifier has created tables needed to manage the process but has not yet committed to execute the process (not yet admitted) The because resources are limited Exit state Termination moves the process to this state It is no longer eligible for execution Tables and other info are temporarily preserved for auxiliary program 25 Five-State Process Model Dispatch New Admit Ready Release Running Time-out Event Occurs Blocked 26 Event Wait Exit Single Blocked Queue Ready Queue Release Dispatch Admit Processor Time-out Event Wait Event Occurs Blocked Queue 27 Multiple Blocked Queues Ready Queue Release Dispatch Admit Processor Time-out Event 1 Wait Event 1 Occurs Event 1 Queue Event 2 Wait Event 2 Occurs 28 Event 2 Queue Suspended Processes Processor is faster than I/O so all processes could be waiting for I/O Swap these processes to disk to free up more memory Blocked state becomes suspend state when swapped to disk Two new states Blocked, suspend Ready, suspend 29 Process State Transition Diagram with Two Suspend States Ready Admit Admit Suspend Dispatch Activate Ready, suspend Ready Suspend Time out Event Occurs Event Occurs Activate Blocked, suspend 30 Running Blocked Event Wait Exit Processor State Information Contents of processor registers User-visible registers Control and status registers Stack pointers Program status word (PSW) contains 31 status information Process Control Information Additional information needed by the operating system to control and coordinate the various active processes scheduling and state information data structuring interprocess communication process privileges memory management resource ownership and utilization 32 Process Creation Assign a unique process identifier Allocate space for the process Initialize process control block Set up appropriate linkages Ex: add new process to linked list used for scheduling queue Other maintain 33 an accounting file When to Switch a Process Interrupts Clock process has executed for the maximum allowable time slice I/O Memory fault memory address is in virtual memory so it must be brought into main memory Trap error occurred may cause process to be moved to Exit state Supervisor such 34 call as file open Change of Process State Save context of processor including program counter and other registers Update the process control block with the new state and any accounting information Move process control block to appropriate queue - ready, blocked Select another process for execution Update the process control block of the process selected Update memory-management data structures Restore context of the selected process 35 UNIX Process State 36 Initial (idle) Ready to run Kernel/User running Zombie Asleep for 4BSD: stopped/suspend Process states and state transitions 37 Process Context User address space: code, data, stack, shared memory regions, Control information: u area, proc, kernel stack, ATM Credentials: UID & GID Environment variables: inherited Hardware context(in PCB of u area): PC, 38 from the parent SP, PSW, MMR, FPU User Credentials Superuser: UID=0, GID=1 Real IDs: log in, send signals Effective IDs: file creation and access exec: suid mode: that of the owner; sgid mode: that of the calling process setuid / setgid: SV & BSD are different with these saved 39 UID, saved GID in SV setgroup in BSD The u Area part of the process space, needed only when running. 40 PCB proc pointer UID s Arguments, results, error status from system calls Signal handlers and related information Info from the program header, text, data, stack size, MM info Open file descriptor Vnodes & controlling terminal pointers CPU usage statistics, profiling info, disk quotas, & resource limits Per-process kernel stack Process table The proc Id Location of the kernel address map for the u area Current process state Forward and backward pointers in scheduled queue Sleep channel (7.2.3) Scheduling priority and related (Chapter 5) Signal handling info(Chapter 4). MM info Pointers to link active, free, zombie processes in lists Flags Pointers to keep structures on a hash queue by PID Hierarchy info 41 Process ID A typical process hierarchy in Parent Process ID pointer to 4.3BSD UNIX parent’s proc Pointer to the younger sibling 42 Pointer to the oldest child Typical Functions of an Operating-System Kernel Process Management Process creation and termination Process scheduling and dispatching Process switching Process synchronization and support for interprocess communication Management of process control blocks Memory Management Allocation of address space to processes Swapping Page 43 and segment management Typical Functions of an Operating-System Kernel I/O Management Buffer management Allocation of I/O channels and devices to processes Support Functions Interrupt handling Accounting Monitoring 44 Operating System Control Structures An OS maintains the following tables for managing processes and resources: Memory tables I/O tables File tables Process tables 45 Memory Tables Allocation of main memory to processes Allocation of secondary memory to processes Protection attributes for access to shared memory regions Information needed to manage virtual memory 46 I/O Tables I/O device is available or assigned Status of I/O operation Location in main memory being used as the source or destination of the I/O transfer 47 File Tables Existence of files Location on secondary memory Current Status Attributes Sometimes this information is maintained by a file-management system 48 Process Table Process image consists of program, data, stack, and attributes Attributes process 49 control block Process Control Block Process Identification Unique numeric identifier may be an index into the primary process table User identifier who 50 is responsible for the job Execution of the Operating System Nonprocess Kernel execute kernel outside of any process operating system code is executed as a separate entity that operates in privileged mode Execution operating Within User Processes system software within context of a user process process executes in privileged mode when executing operating system code 51 Execution of the Operating System Process-Based major Operating System kernel functions are separate processes a process is invoked by the operating system 52 The UNIX kernel A special program that runs directly on the hardware. Implements the process model and services. Resides on disk, in a file /vmunix or /unix. Bootstrapping: loads the kernel. Initializes the system and sets up the environment, remains in memory before shut down 53 UNIX Services System call interface Hardware exceptions Divide by 0, overflowing user stack Interrupts Devices Swapper, 54 pagedaemon The Kernel interacts with processes and devices 55 BACK Mode,Space & Context By modes: some critical resources can be protected. Kernel Mode: More privileged, kernel functions User Mode: Less privileged, user functions Virtual VM Memory space Address Translation Maps Memory Management Unit 56 Kernel data Current process & Context switch One instance of the kernel Global data structure Pre-process objects System call, Mode Switch User area: info. about a process Kernel stack: 57 Context UNIX kernel is re-entrant: several processes may be involved in kernel activities concurrently. Execution context Process context: System context (Interrupt context): 58 Execution mode and Context 59 Executing in Kernel Mode 3 types of events: Device interrupts Exceptions Traps or software interrupts Dispatch table System context: interrupts Process context: traps, exceptions & software interrupts 60 The System Call Interface syscall(): the starting point in kernel mode, but in process context. Copy arguments , save hardware context on the kernel stack. Use system call number to index dispatch vector Return results in registers, restore hardware context, to user mode, control back to the library routine. 61 UNIX Interrupt Handling Interrupt handler(interrupt service routine): runs in kernel mode and system context, not permitted to block. the time used to service an interrupt charged to the interrupted process The clock interrupt handler charges the clock tick to the current process ipl(interrupt priority level)- specified for each interrupt and saved in interrupt register of the processor status word Interrupts are preemptive 62 Setting the interrupt priority in 4.3BSD and SVR4 63 Interrupt handling 64 Synchronization UNIX is reentrant UNIX is nonpreemptive, keeping the kernel states consistent. Relinquish CPU voluntarily. 65 Blocking Operations Blocks the process (make it sleep). Lock: a single bit flag wanted(flag): sleep(): wake(): wake all the waiting processes. upon waking up: check once again to make sure. 66 Algorithm for resource locking 67 Blocking Interrupts Blocking interrupts while accessing critical sections. int x = splbio();/* raise ipl*/ modify disk buffer cache; splx(x); /*restore ipl*/ Critical region:few & brief. Blocked interrupts may access the critical region. Different interrupts may have the same ipl Blocking an interrupt may block others. 68 UNIX Process Implementation 69 New Processes & Programs fork: creates a new process. returns 0 to the child, PID to the parent exec: 70 begins to execute a new program Using fork & exec if ((result = fork()==0){ /* child code*/ …… if (execve(“new program”),…)<0) perror(“execve failed!”); } else if (result<0) { perror(“fork”);/*fork failed*/ } /*parent continures here*/ 71 Shell creating a process A highly simplified shell 72 The ls Command Steps in executing the command ls typed to the shell 73 Process Creation Almost an exact clone of the parent. Reserve swap space for the child Allocate a new PID and proc structure for the child Initialize proc structure Allocate address translation map (ATM) Allocate u area and copy Update the u area to refer to the new ATM & Swap space Add the child to the set of processes sharing the text region of the program Duplicate the parent’s data and stack regions update ATM to refer to these new pages. Acquire references to shared resources inherited by the child Initialize the hardware context Make the child runnable and put it on a scheduler queue Arrange to return with 0 Return the PID to the parent 74 fork Optimization It is wasteful to make an actual copy of the address space of the parent Copy-on-write (SV) : only the pages that are modified must be copied vfork (BSD): The parent loans the address space and blocks until the child returns to it. 75 dangerous! csh: exploits it. Invoking a New Program Process Text: address space code Initialized data: Uninitialized data(bss): Shared memory(SV): Shared libraries: Heap: dynamic space User stack: space allocated by the kernel 76 exec System Call 77 Parse & access Verify the permission Read the header and check if valid executable If the file has SUID or SGID bits set in its mode, change the caller’s effective UID or GID to that of the owner Copy the arguments to exec and the env. variables into kernel. Allocate swap space for the data and stack region Set up the new address space. Copy the arguments and env. variables back onto the new user stack. Reset all signal handlers to default actions. Initialize the hardware context. Process Termination (exit()) 78 Turns off all signals. Closes all open files. Releases the text file and other resources such as the current directory. Writes to the accounting log. Saves resource usage statistics and exit status in the proc structure. Changes state to SZOMB, and puts the proc on the zombie process list. Makes the init process inherit any live children of the exiting process. Releases the address space, u area, ATM, and swap space. Notifies the parent by sending it a SIGCHLD signal. Wakes up the parent if it is asleep. Calls swtch() to schedule a new process to run. Awaiting Process Termination 79 wait(stat_loc);/* SV, BSD & POSIX*/ wait3(statusp, options, rusagep); /*BSD*/ waitpid(pid, stat_loc, options);/*POSIX*/ waitid(idtype, id, infop, options);/*SVR4*/ Zombie Processes after exit(), process holds only proc structure and is in zombie state until cleaned completely. wait() (issued by the parent or the init process)frees the proc structure and completes process exit, If the child dies before the parent which does not wait for it, the proc is not released until the system is rebooted. Parent can specify that it will not wait for its children 80 LINUX 81 Modular structure – collection of modules, some of them loadable and unloadable on demand, Module – object file whose code be linked and unlinked from the kernel at runtime, executed in kernel mode on behalf of the current process Loadable module characteristic – Dynamic linking, -- Stackable modules – may serve as libraries when they are referenced by client modules higher up in the hierarchy, and as clients when they reference modules further down the hierarchy. 82 Linux components 83 At user level – tasks (specific to Linux – combine features of processes and threads); At kernel level – interacting collection of components; Hardware components – in this case IA-64 Intel Itanium architecture 84 Linux Task Data Structure State Scheduling information Identifiers Interprocess communication Links Times and timers File system Address space Processor-specific context 85 Linux States of a Process/Thread Running Interruptable Uninterruptable Stopped Zombie 86 87