1/59
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai |
|---|
No analytics yet
Send a link to your students to track their progress
Operating systems
Provide an environment for execution of programs and services to programs and users
User interface
Almost all operating systems have a user interface (UI). Varies between Command-Line (CLI), Graphics User Interface (GUI), touch-screen, Batch
Program execution
The system must be able to load a program into memory and to run that program, end execution, either normally or abnormally (indicating error)
I/O operations
A running program may require I/O, which may involve a file or an I/O device
File-system manipulation
The file system is of particular interest. Programs need to read and write files and directories, create and delete them, search them, list file Information, permission management.
Communications
Processes may exchange information, on the same computer or between computers over a network.
Communications may be via shared memory or through message passing (packets moved by the OS)
Error detection
OS needs to be constantly aware of possible errors.
May occur in the 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
Resource allocation
When multiple users or multiple jobs running concurrently, resources must be allocated to each of them.
Many types of resources - CPU cycles, main memory, file storage, I/O devices.
Logging
To keep track of which users use how much and what kinds of computer resources
Protection and security
The owners of information stored in a multiuser or networked computer system may want to control use of that information, concurrent processes should not interfere with each other.
Protection involves ensuring that all access to system resources is controlled.
Security of the system from outsiders requires user authentication, extends to defending external I/O devices from invalid access attempts
CLI (Command Line Interpreter)
allows direct command entry
Sometimes implemented in kernel
sometimes by systems program
Sometimes multiple flavors implemented – shells.
Primarily fetches a command from user and executes it.
Sometimes commands built-in, sometimes just names of programs
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
Touchscreen Interfaces
___________ devices require new interfaces.
Mouse not possible or not desired.
Actions and selection based on gestures.
Virtual keyboard for text entry. Voice commands
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 Programming 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)
System Call Implementation
Typically, a number is associated with each system call.
System-call interface maintains a table indexed according to these numbers.
The system call interface invokes the 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)
Process control
create process, terminate process, end, abort, load, execute, get process attributes, set process attributes, wait for time, wait event, signal event, allocate and free memory, Dump memory if error, Debugger for determining bugs, single step execution, Locks for managing access to shared data between processes
File management
create file, delete file
open, close file
read, write, reposition
get and set file attributes
Device management
request device, release device
read, write, reposition
get device attributes, set device attributes
logically attach or detach devices
Information maintenance
get time or date, set time or date
get system data, set system data
get and set process, file, or device attributes
Communications (system calls)
create, delete communication connection
send, receive messages if message passing model to host name or process name, From client to server
Shared-memory model create and gain access to memory regions
transfer status information
attach and detach remote devices
Protection
Control access to resources, Get and set permissions, Allow and deny user access
System programs
provide a convenient environment for program development and execution
File manipulation
Create, delete, copy, rename, print, dump, list, and generally manipulate files and directories
Status information
Some ask the system for info - date, time, amount of available memory, disk space, number of users.
Others provide detailed performance, logging, and debugging information. Typically, these programs format and print the output to the terminal or other output devices. Some systems implement a registry - used to store and retrieve configuration information
File modification
Text editors to create and modify files.
Special commands to search contents of files or perform transformations of the text
Programming-language support
Compilers, assemblers, debuggers and interpreters sometimes provided
Program loading and execution
Absolute loaders, relocatable loaders, linkage editors, and overlay-loaders, debugging systems for higher-level and machine language
Communications (system services)
Provide the mechanism for creating virtual connections among processes, users, and computer systems. Allow users to send messages to one another’s screens, browse web pages, send electronic-mail messages, log in remotely, transfer files from one machine to another
Background Services
Launch at boot time.
Some for system startup, then terminate.
Some from system boot to shutdown.
Provide facilities like disk checking, process scheduling, error logging, printing.
Run in user context not kernel context.
Known as services, subsystems, daemons
Application programs
Don’t pertain to system.
Run by users.
Not typically considered part of OS.
Launched by command line, mouse click, finger poke
Relocatable object file
Source code compiled into object files designed to be loaded into any physical memory location
Linker
combines these into single binary executable file. Also brings in libraries
Loader
Must be brought into memory by loader to be executed.
Relocation assigns final addresses to program parts and adjusts code and data in program to match those addresses
Dynamically linked libraries
are loaded as needed, shared by all that use the same version of that same library (loaded once)
Application Binary Interface (ABI)
is architecture equivalent of API, defines how different components of binary code can interface for a given operating system on a given architecture, CPU, etc.
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
Policy
What needs to be done?
Example: Interrupt after every 100 seconds
Mechanism
How to do something?
Example: timer
Separate policy from mechanism
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
More complex
UNIX
Layered
an abstraction
Microkernel
Mach
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
Layered Approach
The operating system is divided into a number of layers (levels), each built on top of lower layers. The bottom layer (layer 0), is the hardware the highest (layer N) is the user interface. With modularity, layers are selected such that each uses functions (operations) and services of only lower-level layers
Microkernels
Moves as much from the kernel into user space.
Mach is an example of microkernel
Mac OS X kernel (Darwin) partly based on Mach
Communication takes place between user modules using message passing.
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.
Performance overhead of user space to kernel space communication
Loadable kernel modules (LKMs)
Many modern operating systems implement loadable kernel modules (LKMs). 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
Hybrid Systems
Most modern operating systems are not one pure model. Hybrid combines multiple approaches to address performance, security, usability needs
Android
Developed by Open Handset Alliance (mostly Google).
Open Source.
Based on Linux kernel but modified.
Provides process, memory, device-driver management.
Adds power management.
Runtime environment includes core set of libraries and Dalvik virtual machine
Apps developed in Java plus Android API
Java class files compiled to Java bytecode then translated to executable thnn runs in Dalvik VM
Libraries include frameworks for web browser (webkit), database (SQLite), multimedia, smaller libc
System Boot
When power initialized on system, execution starts at a fixed memory location. Operating system must be made available to hardware so hardware can start it. Small piece of code – bootstrap loader, BIOS, stored in ROM or EEPROM locates the kernel, loads it into memory, and starts it. Modern systems replace BIOS with Unified Extensible Firmware Interface (UEFI)
Debugging
finding and fixing errors, or bugs
Core dump file
capturing memory of the process
Crash dump file
containing kernel memory
Performance Tuning
Improve performance by removing bottlenecks. OS must provide means of computing and displaying measures of system behavior
Tracing
Collects data for a specific event, such as steps involved in a system call invocation
strace
trace system calls invoked by a process
gdb
source-level debugger
perf
collection of Linux performance tools
tcpdump
collects network packets