Slides(PowerPoint)

Download Report

Transcript Slides(PowerPoint)

Introduction
Operating Systems
Spring 2003
OS Spring’03
What is Operating System?
 It is a program!
 It is the first piece of software to run
after boot
 It coordinates the execution of all other
software
User programs
 It provides various common services
needed by users and applications
OS Spring’03
Today’s plan
 Operating system functionality
 Hardware support for the operating
system
 Course overview, bibliography,
administrative questions
OS Spring’03
The Operating System
controls the machine
gdb
gcc
User
diff
Application
Operating System
Hardware
vi
OS Kernel
Hard
ware
xterm
date
emacs
netscape
OS Spring’03
grep
A better picture
Many
applications
Application
One Operating
System
calls
Operating
System
Machine
instructions
Privileged
instructions
Hardware
OS Spring’03
System
One Hardware
The OS is a reactive program
 It is idly waiting for events
 When an event happens, the OS reacts
It handles the event
 E.g., schedules another application to run
 The event handling must take as little
time as possible
 Event types
Interrupts and system calls
OS Spring’03
The running application state
diagram
Interrupt/
System call
Application
code
runs
Schedule
OS runs
Resume execution
of the app. code
I/O
completed
Wait for
I/O completion
OS Spring’03
Ready
To run
Sleep
The OS performs
Resource Management
 Resources for user programs
CPU, main memory, disk space
 OS internal resources
Disk space for paging memory (swap space)
Entries in system tables
 Process table, open file table
Statically allocated
OS Spring’03
CPU management
 How to share one CPU among many
processes
 Time slicing:
Each process is run for a short while and
then preempted
 Scheduling:
The decision about which application to run
next
OS Spring’03
Memory management
 Programs need main memory frames to store
their code, data and stack
 The total amount of memory used by currently
running programs usually exceed the available
main memory
 Solution: paging
Temporarily unused pages are stored on disk
(swapped out)
When they are needed again, they are brought back
into the memory (swapped in)
OS Spring’03
The OS supports abstractions
 Creates an illusion that each application
got the whole machine to run on
In reality: an application can be preempted,
wait for I/O, have its pages being swapped
out, etc…
 File and file system
Data on disks are stored in blocks
Disk controllers can only write/read blocks
OS Spring’03
Hardware support for OS
 Support for executing certain instructions




in a protected mode
Support for interrupts
Support for handling interrupts
Support for system calls
Support for other services
OS Spring’03
CPU execution modes
 CPU supports (at least) 2 execution
modes:
 User mode
The code of the user programs
 Kernel (supervisor, privileged, monitor,
system) mode
The code of OS
 The execution mode is indicated by a bit
in the processor status word (PSW)
OS Spring’03
Kernel Mode
 Almost unrestricted control of the
hardware:
Special CPU instructions
Unrestricted access to memory, disk, etc…
OS Spring’03
Instructions available only in
the Kernel mode
 To load/store special CPU registers
 E.g., registers used to define the accessible
memory addresses

isolate simultaneously active applications from one
another
 To map memory pages to the address
space of a specific process
 Instructions to set the interrupt priority
level
 Instructions to activate I/O devices
OS Spring’03
Protecting Kernel mode
 OS code executes in the Kernel mode
Interrupt, system call
 Only the OS code is allowed to be
executed in the Kernel mode
 The user code must never be executed in
the Kernel mode
The program counter (PC) is set to point to
the OS code when the CPU goes to the
Kernel mode
OS Spring’03
Switching to the Kernel mode
 Change the bit in the PSW
 Set PC to point to the appropriate OS
code
The interrupt handler code
The system call code
OS Spring’03
Interrupts
 Interrupts is the way by which hardware
informs OS of special conditions that
require OS’ attention
 Interrupt causes the CPU not to execute
the next instruction
 Instead, the control is passed to OS
OS Spring’03
Handling interrupts
 Interrupt handler is a piece of the OS
code intended to do something about the
condition which caused the interrupt
Pointers to the interrupt handlers are stored
in the interrupt vector
The interrupt vector is stored at a predefined memory location
OS Spring’03
Handling Interrupts (II)
 When an interrupt occurs:
The CPU enters kernel mode, and
Passes control to the appropriate interrupt
handler
The handler address is found using the
interrupt number as an index into the
interrupt vector:
 Jump &int[interrupt#]
OS Spring’03
Interrupt vector
 The interrupt vector address and the
interrupt numbering is a part of the
hardware specification
 Operating system loads handler
addresses into the interrupt vector during
the boot
OS Spring’03
Interrupt types
 Asynchronous interrupts are generated by
external devices at unpredictable times
 Internal (synchronous) interrupts are
generated synchronously by CPU as a
result of an exceptional condition
An error condition
A temporary problem
OS Spring’03
System calls
 Used to request a service from the OS
A collection of the system calls is the OS API
Packaged as a library
 Typical system calls
Open/read/write/close the file
Get the current time
Create a new process
Request more memory
OS Spring’03
Handling system calls
 An application executes a special trap
(syscall) instruction
Causes the CPU to enter kernel mode and set
PC to a special system entry point (gate
routine)
 The gate routine address is typically stored
in a predefined interrupt vector entry
Intel architecture: int[80]
A single entry serves all system calls (why?)
OS Spring’03
An example
open(“/tmp/foo”):
USER: store the system call number and the parameters in a
predefined kernel memory location;
trap();
retrieve the response from a predefined kernel
memory location;
return the response to the calling application;
KERNEL:
trap():
jump &int[80]; // transfer control to the gate routine
Gate routine:
switch(sys_call_num) {
case OPEN: …
}
OS Spring’03
Other hardware support
 Memory management unit (MMU):
Translating virtual address into a physical
address
Support for “used” (“reference”) bit for
memory pages
 Direct memory access (DMA)
Frees the CPU from handling I/O
OS Spring’03
The course plan
 Preliminaries
Introduction and computer architecture
background
Performance evaluation
 Basic OS services
Process management
Memory management
File system
OS Spring’03
The course plan (continued)
 Advanced OS services and topics
Communication and networking
Distributed systems
Security (?)
New storage architectures
OS Spring’03
Bibliography
 Notes by Dror Feitelson
Will be published weekly
 Operating System Concepts, by
A. Silberschatz, P. Galvin, G. Gagne
 Operating Systems Internals and Design
Principles, by W. Stallings
 See the notes for more references
OS Spring’03
Next:
 Performance evaluation
OS Spring’03