UNIX Foundations - Computer Science

Download Report

Transcript UNIX Foundations - Computer Science

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