- Trang Chủ
- Hệ điều hành
- Lecture Operating system concepts (Fifth edition): Module 21 - Avi Silberschatz, Peter Galvin
Xem mẫu
- Module 21: The Unix System
• History
• Design Principles
• Programmer Interface
• User Interface
• Process Management
• Memory Management
• File System
• I/O System
• Interprocess Communication
21.1 Silberschatz and Galvin 1999
- History
• First developed in 1969 by Ken Thompson and Dennis Ritchie of
the Research Group at Bell Laboratories; incorporated features of
other operating systems, especially MULTICS.
• The third version was written in C, which was developed at Bell
Labs specifically to support UNIX.
• The most influential of the non-Bell Labs and non-AT&T UNIX
development groups — University of California at Berkeley
(Berkeley Software Distributions).
– 4BSD UNIX resulted from DARPA funding to develop a
standard UNIX system for government use.
– Developed for the VAX, 4.3BSD is one of the most
influential versions, and has been ported to many other
platforms.
• Several standardization projects seek to consolidate the variant
flavors of UNIX leading to one programming interface to UNIX.
21.2 Silberschatz and Galvin 1999
- History of UNIX Versions
21.3 Silberschatz and Galvin 1999
- Early Advantages of UNIX
• Written in a high-level language.
• Distributed in source form.
• Provided powerful operating-system primitives on an
inexpensive platform.
• Small size, modular, clean design.
21.4 Silberschatz and Galvin 1999
- UNIX Design Principles
• Designed to be a time-sharing system.
• Has a simple standard user interface (shell) that can be
replaced.
• File system with multilevel tree-structured directories.
• Files are supported by the kernel as unstructured sequences of
bytes.
• Supports multiple processes; a process can easily create new
processes.
• High priority given to making system interactive, and providing
facilities for program development.
21.5 Silberschatz and Galvin 1999
- Programmer Interface
Like most computer systems, UNIX consists of two separable parts:
• Kernel: everything below the system-call interface and above the
physical hardware.
– Provides file system, CPU scheduling, memory
management, and other OS functions through system calls.
• Systems programs: use the kernel-supported system calls to
provide useful functions, such as compilation and file
manipulation.
21.6 Silberschatz and Galvin 1999
- 4.3BSD Layer Structure
21.7 Silberschatz and Galvin 1999
- System Calls
• System calls define the programmer interface to UNIX
• The set of systems programs commonly available defines the
user interface.
• The programmer and user interface define the context that the
kernel must support.
• Roughly three categories of system calls in UNIX.
– File manipulation (same system calls also support device
manipulation)
– Process control
– Information manipulation.
21.8 Silberschatz and Galvin 1999
- File Manipulation
• A file is a sequence of bytes; the kernel does not impose a
structure on files.
• Files are organized in tree-structured directories.
• Directories are files that contain information on how to find other
files.
• Path name: identifies a file by specifying a path through the
directory structure to the file.
– Absolute path names start at root of file system
– Relative path names start at the current directory
• System calls for basic file manipulation: create, open, read,
write, close, unlink, trunc.
21.9 Silberschatz and Galvin 1999
- Typical UNIX directory structure
21.10 Silberschatz and Galvin 1999
- Process Control
• A process is a program in execution.
• Processes are identified by their process identifier, an integer.
• Process control system calls
– fork creates a new process
– execve is used after a fork to replace on of the two
processes’s virtual memory space with a new program
– exit terminates a process
– A parent may wait for a child process to terminate; wait
provides the process id of a terminated child so that the
parent can tell which child terminated.
– wait3 allows the parent to collect performance statistics
about the child
• A zombie process results when the parent of a defunct child
process exits before the terminated child.
21.11 Silberschatz and Galvin 1999
- Illustration of Process Control Calls
21.12 Silberschatz and Galvin 1999
- Process Control (Cont.)
• Processes communicate via pipes; queues of bytes between
two processes that are accessed by a file descriptor.
• All user processes are descendants of one original process, init.
• init forks a getty process: initializes terminal line parameters and
passes the user’s login name to login.
– login sets the numeric user identifier of the process to that
of the user
– executes a shell which forks subprocesses for user
commands.
21.13 Silberschatz and Galvin 1999
- Process Control (Cont.)
• setuid bit sets the effective user identifier of the process to the
user identifier of the owner of the file, and leaves the real user
identifier as it was.
• setuid scheme allows certain processes to have more than
ordinary privileges while still being executable by ordinary
users.
21.14 Silberschatz and Galvin 1999
- Signals
• Facility for handling exceptional conditions similar to software
interrupts.
• The interrupt signal, SIGINT, is used to stop a command before
that command completes (usually produced by ^C).
• Signal use has expanded beyond dealing with exceptional
events.
– Start and stop subprocesses on demand
– SIGWINCH informs a process that the window in which
output is being displayed has changed size.
– Deliver urgent data from network connections.
21.15 Silberschatz and Galvin 1999
- Process Groups
• Set of related processes that cooperate to accomplish a
common task.
• Only one process group may use a terminal device for I/O at
any time.
– The foreground job has the attention of the user on the
terminal.
– Background jobs – nonattached jobs that perform their
function without user interaction.
• Access to the terminal is controlled by process group signals.
21.16 Silberschatz and Galvin 1999
- Process Groups (Cont.)
• Each job inherits a controlling terminal from its parent.
– If the process group of the controlling terminal matches the
group of a process, that process is in the foreground.
– SIGTTIN or SIGTTOU freezes a background process that
attempts to perform I/O; if the user foregrounds that
process, SIGCONT indicates that the process can now
perform I/O.
– SIGSTOP freezes a foreground process.
21.17 Silberschatz and Galvin 1999
- Information Manipulation
• System calls to set and return an interval timer:
getitmer/setitmer.
• Calls to set and return the current time:
gettimeofday/settimeofday.
• Processes can ask for
– their process identifier: getpid
– their group identifier: getgid
– the name of the machine on which they are executing:
gethostname
21.18 Silberschatz and Galvin 1999
- Library Routines
• The system-call interface to UNIX is supported and augmented
by a large collection of library routines
• Header files provide the definition of complex data structures
used in system calls.
• Additional library support is provided for mathematical functions,
network access, data conversion, etc.
21.19 Silberschatz and Galvin 1999
- User Interface
• Programmers and users mainly deal with already existing
systems programs: the needed system calls are embedded
within the program and do not need to be obvious to the user.
• The most common systems programs are file or directory
oriented.
– Directory: mkdir, rmdir, cd, pwd
– File: ls, cp, mv, rm
• Other programs relate to editors (e.g., emacs, vi) text formatters
(e.g., troff, TEX), and other activities.
21.20 Silberschatz and Galvin 1999
nguon tai.lieu . vn