provides an easier-to-use interface to the hardware for the user and programmer
is resource manager for hardware and software resources
algorithms and abstractions: algorithms to manage the computer's resources and abstractions that make the computer easier to use
multiple processes are an abstraction of the CPU, virtual address spaces are an abstraction of physical memory, and files are an abstraction of the disk
hardwired programming, sign up for a block of time, provide own device drivers, device driver library, card decks and multiprogramming, timesharing and interactive terminals, GUIs, PCs, networking, distributed computing
mainframe, server (file server, Web server, database), multiprocessor, desktop PC, real time, embedded, PDA, smart card, distributed computing (most OSes today are multiprocessor capable because of multiple core CPU chips in PCs)
process, process address space of N bytes (up to 232) where N is guessed by the compiler, byte addresses are 0 to N-1 inclusive
0 N-1 ---------------------------------------------------- | code (read-only) | data | heap--> (gap) <--stack | ----------------------------------------------------data for globals, heap for new and malloc, stack for return addresses and passed parameters and called procedure local variables
Example program.
process table, command interpreter (shell), UID, GID, super user, deadlock, file, directory, absolute path, relative path, root directory, current working directory, file descriptor, mount a file system, redirect IO with < and >, pipe: command1 | command2, rwx protection bits
monolithic (big hunk of code), shared single RAM client-server, distributed multiple RAMs client-server (file server, process server), virtual machine (IBM mainframe VM, VMWare, VirtualBox, Xen, Parallels, KVM, Microsoft Hyper-V, etc.)
home page:
http://elvis.rowan.edu/~hartley/index.html
e-mail:
hartley@elvis.rowan.edu