Linux Operating System Review Chapter 10 cs431-cotter 1 Overview • • • • • • • • System Overview Linux Processes CPU Scheduler Process Synchronization Memory Management Input / Output File Systems Security cs431-cotter 2 Interfaces to Linux Figure 10-1. The layers in a Linux system. cs431-cotter Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 3 Linux Utility Programs cs431-cotter Figure 10-2. A few of the common Linux utility programs required by POSIX. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 4 Kernel Structure cs431-cotter Figure 10-3. Structure of the Linux kernel Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 5 Overview • • • • • • • • System Overview Linux Processes CPU Scheduler Process Synchronization Memory Management Input / Output File Systems Security cs431-cotter 6 Linux Processes int pid; : pid = fork (); if (pid < 0) errexit(); else if (pid == 0) { : } else { : } cs431-cotter //create a child process // fork failed!! // handle error //child process work goes here //pid must be > 0 //parent process work goes here 7 Process Management System Calls in Linux Figure 10-6. Some system calls relating to processes. cs431-cotter Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 8 Implementation of Exec Figure 10-8. The steps in executing the command ls typed to the shell. cs431-cotter Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 9 Overview • • • • • • • • System Overview Linux Processes CPU Scheduler Process Synchronization Memory Management Input / Output File Systems Security cs431-cotter 10 Linux Scheduling Algorithm • SCHED_FIFO Designed for static priority. Soft real-time processes. • SCHED_RR designed for real-time processes that require fair assignment of CPU time. • SCHED_OTHER designed for normal user processes. Preemptible. Priority determined by base priority and time remaining in quantum. cs431-cotter 11 Scheduling in Linux Figure 10-10. Illustration of Linux runqueue and priority arrays. cs431-cotter Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 12 Overview • • • • • • • • System Overview Linux Processes CPU Scheduler Process Synchronization Memory Management Input / Output File Systems Security cs431-cotter 13 Signals in Linux (1) Figure 10-5. The signals required by POSIX. cs431-cotter Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 14 Signals must be captured with signal handler • Program must explicitly handle signals, if it does not want to use default handling (usually termination) • sigaction (signal_to_catch, new_action, old_action) • struct sigaction { void * sa_handler; // What function do we call? sigset_t mask; // Mask of signals to block when called int sa_flags; // Special flags to set. }; • Will be executed automatically on reception of appropriate signal cs431-cotter 15 Semaphores • POSIX version of semaphores – #include <semaphore.h> – classic semaphore implementation • System V version of semaphores – #include <sys/sem.h> – Enhanced version of semaphores to include sets cs431-cotter 16 Mutexes in Pthreads Figure 2-30. Some of the Pthreads calls relating to mutexes. cs431-cotter Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 17 Named Pipes • Permanent objects • Available to processes that can access the filespace (same system or on a shared file system) • Processes do not have to be related. cs431-cotter 18 Message Queues • A “linked list of messages” • Message queue has kernel persistence – Supports asynchronous communications. – Messages are stored in the queue, independent of the sender (sender can close queue without losing messages). – Receiver can retrieve messages at a later time. • Messages have a priority – Higher priority messages are retrieved first (POSIX) – Max priority is 32768 cs431-cotter 19 Shared Memory • Allows 2 or more processes to share the same main memory space – Memory can be allocated as blocks (pages) of memory – Memory can be mapped as a file that is available in memory to multiple processes cs431-cotter 20 Overview • • • • • • • • System Overview Linux Processes CPU Scheduler Process Synchronization Memory Management Input / Output File Systems Security cs431-cotter 21 Memory Management in Linux (1) (a) (b) (c) Figure 10-12. (a) Process A’s virtual address space. (b) Physical cs431-cotter memory. (c) Process B’s virtual address space. 22 Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 Memory Management in Linux (2) (a) (b) (c) Figure 10-13. Two processes can share a mapped file. cs431-cotter Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 23 Physical Memory Management (3) Figure 10-16. Linux uses four-level page tables. cs431-cotter Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 24 Memory Allocation Mechanisms (a) (b) (c) (d) (e) (f) (g) (h) (i) Figure 10-17. Operation of the buddy algorithm. cs431-cotter Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 25 Overview • • • • • • • • System Overview Linux Processes CPU Scheduler Process Synchronization Memory Management Input / Output File Systems Security cs431-cotter 26 Implementation of Input/Output Figure 10-22. The Linux I/O system showing one file system in detail. cs431-cotter Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 27 Overview • • • • • • • • System Overview Linux Processes CPU Scheduler Process Synchronization Memory Management Input / Output File Systems Security cs431-cotter 28 System Organization • Like UNIX... • Predefined root directory structure with preferred locations for kernel files / (root) bin dev boot cs431-cotter home etc mnt lib root proc tmp sbin var usr 29 The Linux File System (2) Figure 10-24. (a) Before linking. (b) After linking. cs431-cotter Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 30 The Linux File System (3) Figure 10-25. (a) Separate file systems. (b) After mounting. cs431-cotter Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 31 The Linux Virtual File System Figure 10-30. File system abstractions supported by the VFS. cs431-cotter Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 32 The Linux Ext2 File System (1) Figure 10-31. Disk layout of the Linux ext2 file system. cs431-cotter Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 33 The Linux Ext2 File System (4) Figure 10-34. The relation between the file descriptor table, the open file description table, and the i-node table. cs431-cotter Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 34 Journal File Systems • Designed to speed file system recovery from system crashes. • Traditional systems use an fs recovery tool (e.g. fsck) to verify system integrity • As file system grows, recovery time grows. • Journal File Systems track changes in meta-data to allow rapid recovery from crashes cs431-cotter 35 Journal File System • Uses a version of a transaction log to track changes to file system directory records. • If a system crash occurs, the transaction log can be reviewed back to a check point to verify any pending work (either undo or redo). • For large systems, recovery time goes from hours or days to seconds. cs431-cotter 36 Journal File System - Examples • ReiserFS – – – – – – Designed originally for Linux (32 bit system) Supports file systems to 2TB -> 16TB Journal support of meta-data Btree structure supports large file counts Supports block packing for small files No fixed inode allocation - more flexible. cs431-cotter 37 NFS Protocols Figure 10-35. Examples of remote mounted file systems. Directories shown as squares, files shown as circles. cs431-cotter Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 38 NFS Implementation Figure 10-36. The NFS layer structure cs431-cotter Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 39 Overview • • • • • • • • System Overview Linux Processes CPU Scheduler Process Synchronization Memory Management Input / Output File Systems Security cs431-cotter 40 Security In Linux Figure 10-37. Some example file protection modes. cs431-cotter Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 41 Security System Calls in Linux Figure 10-38. system calls relating to security. cs431-cotter Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 42 Summary • • • • • • • • System Overview Linux Processes CPU Scheduler Process Synchronization Memory Management Input / Output File Systems Security cs431-cotter 43 Questions • What command would be needed to print the last 250 characters of a file “data.txt” • What function can a parent process use to capture the exit code from a child process? • In terms of Linux scheduling what is a runqueue? • How does Linux use the Buddy algorithm to allocate memory for a process? • What information is kept in an open file description table that isn’t kept anywhere else? • What is the primary advantage of a journaling file system over earlier file systems (such as ext2fs)? cs431-cotter 44