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