Over the history of computing hardware, the number of transistors on integrated circuits doubles approximately every two years.
Compiler
A program that translates high-level language statements into assembly language statements.
Assembler
A program that translates a symbolic version of instructions into the binary version.
High-level programming langrage
A portable language that is composed of words and algebraic notation that can be translated by a compiler into assembly language.
Assembly language
Asymbolic representation of machine instructions.
Machine language
A binary representation of machine instructions.
5 components of a computer
Input, Output, Memory, Control, Datapath
The last two sometimes combined and called the processor.
Instruction set architecture
One key interface between the levels of abstraction is the instruction set architecture-the interface between the hardware and low-level software.
Researchers at M.I.T. joined forces with Bell Labs and Generic Electric and began designing a second-generation system, MULTICS(Multiplexed Information and Computing Service)
One of the Bell Labs researchers, Ken Thompson wrote a stripped-down MULTICS on a PDP-7 minicomputer. The system is called UNICS(UNiplexed Information and Computing Service) jokingly by Brian Kernighan, Bell Labs.
Thompson tied to rewite UNIX with B language of his own design and failed. Ritchie then designed a successor to B, called C. Working together, they rewrote UNIX in C.
Steve Johnson of Bell Labs designed and implemented the portable C compiler, which could be retargeted to produce code for any resonable machine with a only a moderate amount of effort.
Standard UNIX
AT&T released its first commercial UNIX: System III, then System V.
Aided by U.S. Dept. of Defense, Berkeley released an improved PDP-11 called 1BSD(First Berkeley Software Distribution), which supported virtual memory, TCP/IP, vi, csh, etc.
IEEE came up with POSIX(Portable Operating System of UNIXish), witch reconcile the two flavors of UNIX.
block devices stores information in fixed-size blocks, each one with its own address.
character devices delivers or accepts a stream of characters, without regard to any block structure.
device controller/adapter takes the form of a chip on the parentboard or a printed circuit card that can be inserted into a (PCI) expansion slot.
Memory-Mapped I/O
Each control register is assigned a unique memory address to which no memory is assigned.
Pros:
if special I/O instructions are needed to read/write the device control registers, access to them requires nothing more than standard C code, otherwise needs the use of addembly code.
with memory-mapped I/O, no special protection mechanism is needed to keep user processes from performing I/O.
With memory-mapped I/O, every instruction that can reference memory can also reference control registers.
Cons:
most computers nowadays have some form of caching of memory words. Caching a device control register would be disastrous.
If there is only one address space, then all memory modules and all I/O devices must examine all memory references to see which ones to respond to.
Running multiple programs by static relocation: Modify the second program on the fly as it loaded it into memory.
The lack of memory abstraction is still common in embedded and smart card systems.
A Memory Abstraction: Address Spaces
Address space is the set of addresses that a process can use to address memory.
Dynamic relocation uses base and limit registers to map each process' address space onto a different part of physical memory in a simple way.
The disadvantage of relocation using base and limit registers is the need to perform an addition and comparison on every memory reference.
Swapping is used to deal with memory overload, bringing in each process in its entirety, running for a while, then putting it back on the disk.
When swapping creates multiple holes in memory, it's possible to combine them all into one big one, which is called memory compaction.
Free memory can be recorded as bitmaps or linked lists.