CMPT 880: Internet Architectures and Protocols

Download Report

Transcript CMPT 880: Internet Architectures and Protocols

School of Computing Science
Simon Fraser University
CMPT 300: Operating Systems I
Ch 2: Operating System Structures
Dr. Mohamed Hefeeda
1
Objectives
 Describe services provided by OS to users,
processes, and other systems
 Discuss various ways of structuring OS
 Explain customization of OS for different
machines and how OS boots
2
Operating System Services
OS provides two sets of services
One for user convenience
 Another for efficient use of resources
3
OS Services: User Convenience
 User interface
 Command-Line Interface (CLI) or Graphics User Interface (GUI)
 Program execution
 load program into memory and run it
 end execution, either normally or abnormally
 I/O operations
 programs may require I/O, which may involve a file or an I/O
device
 File-system manipulation
 programs may need to do the following on files/directories …
•
•
•
•
read, write
create, delete
search, list file Information
permission management
4
OS Services: User Convenience (cont’d)
 Communications
 Processes may exchange information, on the same
computer or between computers over a network
 Error detection
 OS needs to be constantly aware of possible errors
 May occur in CPU and memory hardware, in I/O devices,
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
5
OS Services: Efficient Use of Resources
 Resource allocation
 When multiple users or multiple jobs running concurrently,
resources must be allocated to each of them
 Accounting
 To keep track of which users use how much and what kinds
of computer resources
 Protection and security
 OS should provide secure and protected access to data
 Protection: involves ensuring that all access to system
resources is controlled
 Security: of the system from outsiders requires user
authentication
6
User-OS Interface: CLI
 CLI allows direct command entry
 Implemented in kernel or as a system program
 Called shell
 Multiple flavors (shells) may exist
 Function: get a command from user and execute it
• Command could be: built-in or user programs
 Example shells:
– bash, csh, tcsh, …
7
User-OS Interface: GUI
 User-friendly desktop metaphor interface
 Usually mouse, keyboard, and monitor
 Icons represent files, programs, actions, etc
 Various mouse buttons over objects in the interface
cause various actions (provide information, options,
execute function, open directory (known as a folder)
 Invented at Xerox PARC
 Many systems now include both CLI and GUI
 Microsoft Windows is GUI with CLI “command” shell
 Apple Mac OS X has “Aqua” GUI interface with UNIX
kernel underneath and shells available
 Solaris is CLI with optional GUI interfaces (Java
Desktop, KDE)
8
System Calls
 How can we access OS services?
 System calls
 A programming interface to OS services
 Typically written in high-level language (C or C++)
 Mostly accessed by programs via a high-level Application
Program Interface (API), rather than direct system call
 Why use APIs rather than direct system calls?
 Portability
 Ease
 Three most common APIs
 Win32 API for Windows
 POSIX API for POSIX-based systems (UNIX, Linux, and
Mac OS X). (POSIX = Portable Operating System Interface)
 Java API for the Java virtual machine (JVM)
9
System Calls: Example
 System call sequence to copy contents of a file to
another
10
Example: strace on Linux
 Try the following commands on a Linux machine:
 $ strace -c ls
 Displays summary info on system calls invoked during
the execution of the command ‘ls’
 $ strace –o trace.out ls
 Details of the invoked system calls during the
execution of the command ‘ls’ are saved in the file
‘trace.out’
 $ man strace
 Displays info (manual) on strace
11
System Call Implementation
 Typically
 A number is associated with each system call
 System call interface maintains table indexed based on
these numbers
 System call interface invokes intended system call in OS
kernel and returns status of system call and any return
values
 The caller needs to know nothing about how the
system call is implemented
 Just need to obey API and understand what OS will do
as a result
 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)
12
API – System Call – OS Relationship
13
Example: Standard C Library
 C program invoking
printf(), which calls
write() system call
 The mapping is done
by the standard C
Library
14
System Call: Parameter Passing
 Often, more information is required than simply
identity of desired system call
 Exact type and amount of information vary according
to OS and call
 Three methods to pass parameters to OS
 Simplest: pass the parameters in registers
• In some cases, may be more parameters than registers
 Parameters stored in a block, or table, in memory, and
address of block passed as a parameter in a register
• This approach taken by Linux and Solaris
 Parameters placed, or pushed, onto the stack by the
program and popped off the stack by OS
 Note: Block and stack methods do not limit the number
or length of parameters being passed
15
Types of System Calls
 Process control
 Create, load, execute, abort, …
 File management
 Open, close, read, write, delete, …
 Device management
 Read, write, request, release, …
 Information maintenance
 Get time/date, get process attributes, …
 Communications
 Send, receive, create communication channel, ….
16
System Programs
 System programs provide a convenient
environment for program development/execution
 Most users’ view of OS is defined by system
programs, not the actual system calls
 Examples:
 File management: create, copy, delete, list, …
 File modification: text editors, search, …
 Status info: disk space, memory usage, CPU utilization,
• Try: $top, $ps, $du, $df, $who
 Programming language support: compilers,
debuggers, …
• Check out $man gdb
(Gnu Debugger)
 Communications: email, web browser, remote log in, ..
 Application programs: database engine, spread sheet
17
OS Design and Implementation
 Internal structure of different OS can vary widely
 Affected by choice of hardware, type of system
 Guideline:
 Start by defining goals and specifications
 User goals vs. System goals
 User goals – OS should be convenient to use, easy to
learn, reliable, safe, and fast
 System goals – OS should be easy to design,
implement, and maintain, as well as flexible, reliable,
error-free, and efficient
18
OS Design and Implementation (cont’d)
 Important principle:
Separate Policy from Mechanism
 What is policy and what is mechanism?
 Policy decides what will be done
 Mechanism determines how to do it
 Why separation?
 Allows maximum flexibility if policy decisions are to be
changed later
 Example
 Policy: CPU-intensive programs get higher priority over
I/O-intensive ones
 Mechanism: implement a priority system with different
levels
19
Operating System Structure
 How would you structure a complex system like
OS?
 Simple
 monolithic (one layer) or some layering but no clear
interfaces
 Layered
 Microkernel
 Modular
 Virtual Machines
20
Simple Structure: Old UNIX
 Monolithic structure: two parts
 System programs
 Kernel: everything below system-call interface and above
hardware
• File system, CPU scheduling, memory management, ….
 Difficult to implement and maintain: Too much in one layer
21
Simple Structure: MS-DOS
 MS-DOS – written to
provide the most
functionality in the
least space
 Although MS-DOS has
some structure, its
interfaces and levels
of functionality are not
well separated
 No protection
 Apps crash whole
system
 Limited by hardware
at that time
22
Layered Structure
 OS is divided into layers
 Each layer uses services
of only lower-level layers
 Easy to develop, debug,
and update: Focus on one
layer at a time
 Problems with layering?
 Less efficient: every layer
adds some overhead
 Tricky to define layers
 Ex: two layers that
need each other’s
services
 CPU scheduler and
disk driver
23
Microkernel Structure
 Kernel provides minimal services:
 Process and memory management, and communication facility
 Rest of services are moved to user space
 Communication takes place between user modules using
message passing (through the kernel)
 Benefits:
 Easier to extend microkernel
 Easier to port the operating system to new architectures
 More reliable and secure
•
Less code is running in kernel mode, most are user mode ==>
service fails, the rest of OS is untouched
 Disadvantages:
 Performance overhead: communication among user modules
and the kernel
24
Modular Structure
 Implement OS as separate components (modules)
 Each module has a well-defined interface
 Modules talk to each other using interfaces
 Modules are loaded within the kernel when
needed
 Most modern OSes (e.g., Solaris, Linux)
implement kernel modules
25
Modular Structure: Solaris
26
Modular Structure: Advantages?
 Similar to layers but more flexible
 Avoids the problem of defining layers
 Easy to maintain, update, and debug: focus on
one module at a time
 Efficient: modules can call each others directly
(no layers in between and no message passing)
27
Hybrid Structure: Mac OS X
 Layered approach with one layer as a microkernel
 Mach provides: memory management, RPC, IPC,
scheduling
 BSD provides: file system, CLI, networking, APIs
 Allows for kernel extensions (loadable modules)
28
Virtual Machines
 Virtual machine abstracts hardware of a single
computer into several different execution
environments (OSes)
 Resources are shared to create virtual machines
 CPU scheduling and virtual-memory techniques help to
create the illusion that users have their own processors
and memory
 Examples
 VMware
 Java Virtual Machine
29
Example: VMware Architecture
30
Virtual Machines (cont’d)
 Why VMs?
 OS research and development
 Test OS on VMs with various configurations
 Safer, faster, and cost-effective to test on VMs
 VMs provide complete protection of system
resources
 Each virtual machine is isolated from all others
31
Operating System Configuration
 Do we develop OSes on machines that run them?
 NO! Usually develop on a machine and run on
another
 Think of OS for cell phones or slow/small computers
 How would we customize OS for a target
machine?
 Get information about target machine
 e.g., CPU, memory, hard drive, I/O devices attached
 Save this info in configuration files
 THEN: ??
32
Operating System Configuration (cont’d)
 Recompile OS code with configuration files
 Tailor OS precisely for target machine
 Efficient OS, but not flexible and recompilation takes
time; OR
 Load or link modules based on configuration files
 Modules (e.g., device drivers) are precompiled
 Fast configuration, produce fairly general systems
 less efficient; OR
 Select during run time
 Kernel contains code for all supported configurations
 Selection occurs at execution time
 flexible, but large kernel
 When would you use each of these methods?
33
System Boot
 OS must be available to hardware to start it
 When computer is powered up, the instruction
register (in CPU) is loaded with a predefined
memory location
 Typically, the address of the bootstrap loader in ROM
 Bootstrap loader routine
 Performs diagnostic tests (Power-on Self Testing)
 Loads a small piece of code from a fixed location
(block 0) on the disk into memory, which
 loads the rest of the loader from disk, which
 loads kernel itself
 Examples:
 LiLo (Linux Loader) and Grub
34
Summary
 OS provides two sets of services for
 user convenience and
 efficient use of resources
 OS-user interface: CLI (shells) or GUI (windows)
 System calls: interface to OS services
 Typically used through APIs for portability and ease
 OS design: specify requirements, separate
policies from mechanisms
 OS structure: simple, layered, microkernel,
modular, VM
 OS configuration and boot
35