Chapter 2: OS Structures

Download Report

Transcript Chapter 2: OS Structures

COSC 4740
Chapter 2
Operating System Structures
O/S Components
•
•
•
•
•
•
•
Process management
I/O management
Main Memory management
File & Storage Management
Networking/Communications
Protection and Error Detection
User interface
– Varies between Command-Line (CLI), Graphics User
Interface (GUI), Batch Command Interpreter
A View of Operating System
Services
Process Management
• Process (or job): A program or a fraction of a
program that is loaded in main memory and
executing.
– We do not need the entire program code at once.
To process an instruction, CPU fetches and
executes one instruction of a process after
another in the main memory.
Tasks of Process Management
o Create, load, execute, suspend, resume, and
terminate processes
o Switch system among multiple processes in the main
memory (process scheduling)
o Provides communication mechanisms so that
processes can send (or receive) data to (or from)
each other (process communication).
o Control concurrent* access to shared data to keep
shared data consistent (process synchronization).
o Allocate/de-allocate resources properly to prevent or
avoid deadlock situation**
I/O Management
• Motivations:
o Provide the abstract level of H/W devices and keep the
details from applications to ensure proper use of devices,
to prevent errors, and to provide users with convenient
and efficient programming environment.
• Tasks of I/O Management of OS:
o Hide the details of H/W devices
o Manage main memory for the devices using cache, buffer,
and spooling
o Maintain and provide device driver interfaces
Main Memory management
Process must be mapped to physical addresses and
loaded into main memory to be executed.
• Motivations:
o Increase system performance by increasing “hit” ratio
(e.g., optimum: when CPU read data or instruction, it is in
the main memory always)
o Maximize memory utilization
• Tasks of Main Memory Management of OS:
o Keep track of which memory area is used by whom.
o Allocate/de-allocated memory as need
File & Storage Management
• Motivation:
o Almost everything is stored in secondary storage.
Therefore, secondary storage access must be
efficient (i.e., performance) and convenient (i.e.,
easy to program I/O function in application level)
o Important data are duplicated and/or stored in
ternary storage.
• Tasks of File Management
o Create, manipulate, delete files and directories
• Tasks of Storage Management
o Allocate, de-allocate, and defrag blocks[1]
o Bad block marking
o Scheduling for multiple I/O request to optimize
the performance
Networking/Communications
• Allow communications between computers
(more important for Client/Server OS and
Distributed OS).
• Communications may be via shared memory
or through message passing (packets moved
by the OS)
Protection and Error Detection
• Protection
– Hardware resources, Kernel code, processes, files, and
data from erroneous programs and malicious programs.
• Error detection
– May occur in the CPU and memory hardware, in I/O
devices, and in user program
– For each type of error, OS should take the appropriate
action to ensure correct and consistent computing
– Debugging facilities can greatly enhance the user’s and
programmer’s abilities to efficiently use the system
Command Interpreter
• Command Interpreter is one of the most important
system programs[1]. Because almost every OS provide
system programs, some people argue that command
interpreter is a part of OS.
• Motivation:
o Allow human users to interact with OS
o Provide convenient programming environment to users
• Tasks:
o Execute a user command by calling one or more number of
underlying system programs or system calls
• Examples:
o Windows DOS command window
o Bash of Unix/Linux
o CSHELL of Unix/Linux
System Calls
• Programming interface to the services provided by the OS
– Typically written in a high-level language (C or C++)
– Mostly accessed by programs via a high-level Application Program
Interface (API) rather than direct system call use
• Three most common APIs are Win32 API for Windows, POSIX
API for POSIX-based systems (including virtually all versions of
UNIX, Linux, and Mac OS X), and Java API for the Java virtual
machine (JVM)
• Why use APIs rather than system calls?
Example of System Calls
• System call sequence to copy the contents
of one file to another file
Example of Standard API
• Consider the ReadFile() function in the
• Win32 API—a function for reading from a file
• A description of the parameters passed to ReadFile()
–
–
–
–
–
HANDLE file—the file to be read
LPVOID buffer—a buffer where the data will be read into and written from
DWORD bytesToRead—the number of bytes to be read into the buffer
LPDWORD bytesRead—the number of bytes read during the last read
LPOVERLAPPED ovl—indicates if overlapped I/O is being used
Types of System Calls
•
•
•
•
•
Process control
File management
Device management
Information maintenance
Communications
System Call Implementation
• Typically, a number associated with each system call
– System-call interface maintains a table indexed according to
these numbers
• The system call interface invokes intended system call in
OS kernel and returns status of the system call and any
return values
• The caller need know nothing about how the system
call is implemented
– Just needs to obey API and understand what OS will do as a
result call
– Most details of OS interface hidden from programmer by API
• Managed by run-time support library (set of functions built into
libraries included with compiler)
API – System Call – OS Relationship
Standard C Library Example
• C program
invoking printf()
library call, which
calls write()
system call
API vs. System Call summary
• An API is application programming interface
– This are a set of standard functions that the
program calls.
– This API then call the specific System call for that
specific O/S
• A system call is specific to an O/S
– The system call for an O/S may be different
between versions
• Different parameters, even different names.
Operating System Design and
Implementation
• Design and Implementation of OS not “solvable”, but
some approaches have proven successful
• Internal structure of different Operating Systems
can vary widely
• Start by defining goals and specifications
• User goals and System goals
– User goals – operating system should be convenient to
use, easy to learn, reliable, safe, and fast
– System goals – operating system should be easy to design,
implement, and maintain, as well as flexible, reliable,
error-free, and efficient
Operating System Design and Implementation
(Cont.)
• Important principle to separate
Policy: What will be done?
Mechanism: How to do it?
• Mechanisms determine how to do something,
policies decide what will be done
– The separation of policy from mechanism is a very
important principle, it allows maximum flexibility if policy
decisions are to be changed later
Simple Structure
• MS-DOS – written to provide the most
functionality in the least space
– Not divided into modules
– Although MS-DOS has some structure, its
interfaces and levels of functionality are not well
separated
MS-DOS Layer Structure
Monolithic (The big mass) O/S
• OS is simply a collection of functions, which can call
any other ones when needed.
• One very big OS including everything (system calls, system
programs, every managers, device drivers, etc)
• Entire OS resides in main memory
• Pros:
• High performance
• Easy to implement
• Cons:
• Difficult to debug, modify, and upgrade
• Poor security, protection, and stability of OS
Layered Approach
• still large single program but
internally broken up into
layers providing different
functionalities.
• Information hiding between
layers  Increased security
and protection
• Easy to debug, test, and
modify OS
• If one layer stops working,
entire system will stop
• Example:
System Calls
Memory Management
Process Scheduling
I/O Management
Device Drivers
• Mapping overhead between
layers
• Difficult to categorize into
layers
Layered Operating System
UNIX
• UNIX – limited by hardware functionality, the
original UNIX operating system had limited
structuring. The UNIX OS consists of two
separable parts
– Systems programs
– The kernel
• Consists of everything below the system-call interface
and above the physical hardware
• Provides the file system, CPU scheduling, memory
management, and other operating-system functions; a
large number of functions for one level
UNIX System Structure
Microkernel System Structure
• Moves as much from the kernel into “user” space
• OS is made up of several separated/independent modules
– kernel, FS, MM, etc and only kernel resides in main memory.
• Kernel calls other modules as needed to perform certain
tasks.
– Benefits:
•
•
•
•
Easier to extend a microkernel
Easier to port the operating system to new architectures
More reliable (less code is running in kernel mode)
More secure
– Detriments:
• Performance overhead of user space to kernel space communication
Mac OS X Structure
Modules
• Most modern operating systems implement
kernel modules
– Uses object-oriented approach
– Each core component is separate
– Each talks to the others over known interfaces
– Each is loadable as needed within the kernel
• Overall, similar to layers but with more flexible
Solaris Modular Approach
Virtual Machines
• A virtual machine takes the layered
approach to its logical conclusion. It treats
hardware and the operating system kernel
as though they were all hardware
• A virtual machine provides an interface
identical to the underlying bare hardware
• The operating system creates the illusion of
multiple processes, each executing on its
own processor with its own (virtual)
memory
Virtual Machines Cont.
• Allow multiple different OS to run on a single
machine. VM gives an illusion that the machine is at
entire disposal of OS by providing each OS an
abstract machine.
o Pros:
o Solve machine-OS-software compatibility issues.
o Stable and Good for OS development and testing (If one
OS fails, the other OS can continue to run)
o Cons:
o Complex to develop/implement
– Poor performance (abstract layer, mapping overhead
between layers, …)
Virtual Machines History and Benefits
• First appeared commercially in IBM mainframes in 1972
• Fundamentally, multiple execution environments (different
operating systems) can share the same hardware
• Protect from each other
• Some sharing of file can be permitted, controlled
• Commutate with each other, other physical systems via
networking
• Useful for development, testing
• Consolidation of many low-resource use systems onto fewer
busier systems
• “Open Virtual Machine Format”, standard format of virtual
machines, allows a VM to run within many different virtual
machine (host) platforms
Virtual Machines (Cont.)
Non-virtual Machine
Virtual Machine
(a) Nonvirtual machine (b) virtual machine
VMware Architecture
The Java Virtual Machine
Client-Server
• OS consists of servers, clients, and kernel. Kernel is
very tiny and handles only the communication
between the clients and servers. Both clients and
servers run in user mode.
o Pros:
o Stable (If a server fails, the OS can still operate)
o Small kernel
o Cons:
o Complex to develop/implement (servers run in user mode and can
access resources through kernel)
o Security problem because servers reside in user space.
Back to Design Goals
• Efficiency and Convenience
• Keep kernel adequately small
o Too much functionality in kernel  low flexibility at higher
level
o Too little functionality in kernel  low functional support
at higher level
• Maximize the utilization, performance, and
functionality of the underlying H/W resources
o OS design is affected by H/W properties
o OS design is affected by the type of system to design (e.g.,
Multiprogramming, Multi-tasking, Real-time, Distributed,
.etc)
System Generation
• We should configure OS for the underlying hardware
when we install it (i.e., installing OS)
• Approaches:
• Modify the source code of OS and recompile it on
the target machine
• Pros: small OS size, We can tune the details for the H/W
• Cons: Very difficult, less flexible for H/W upgrade
System Generation Cont.
• Provide many pre-compiled modules (e.g., five
different memory manager object files). When
we install OS, select certain object modules
and link them together accordingly.
• Pros: easy to configure, flexible for H/W upgrade
• Cons: big OS size, We cannot tune the very details
for the H/W
System Boot
• Operating system must be made available
to hardware so hardware can start it
– Small piece of code – bootstrap loader,
locates the kernel, loads it into memory, and
starts it
– Sometimes two-step process where boot
block at fixed location loads bootstrap loader
– When power initialized on system, execution
starts at a fixed memory location
• Firmware used to hold initial boot code
Q&A