首页 > 代码库 > [CSAPP] Chapter 1 Overview of Computer

[CSAPP] Chapter 1 Overview of Computer

1.1 information is bits + context

All computer programs are just a sequence of bits, each with a value of 0 or 1, organized in 8-bit chunks called by bytes.

8 bits = 1 byte

 

All files is binary files.

 

1.2 Programs are translated by other programs into different forms

技术分享

To compile a program, we have 4 phases.

 

Preprocessoring phases: The preprocessor modifies the original program acording to the character in the program.

                                    The result is another program. Just like how preprocessor deal with ‘#‘ in C program.

Compiler phases: translate high-level language into assembler language

Assembler phases: translate the program into machine language

Linker phases: link to the standard libary

 

1.4 Processors read and Interpret Instructions stored in memory

The shell is a command-line interpreter. If the first word does not correspond to a built-in shell command, then shell will assume that it‘s a executable file.

 

1.4.1 Hardware organization of a System 

技术分享

 

Buses: running through the system, a collection of electrical conduits

           carry bytes of information between devices

I/O Devices: system‘s connection to the external world

                   Each I/O device is connected to the I/O bus by either a controlled or an adapter.

Main memory: a temporary storage device

Processor: CPU or simple processor, control the hold system

 

1.5 Caches Matter


A system spend a lot of time moving information from one place to another.

A major goal is decrease the copy time.

 

The major part of copy time is copying between processor and memory.

Between these two devices, we have processor-memory gap.

To solve this problem, we will use cache.

技术分享

 1.6 storage devices form a hierarchy

 技术分享 

 

1.7 OS manage the hardware

OS is a layer between the application program and the hardware.

技术分享

 

purpose:

(1) protect hardware from misuse;

(2) make the hardware easy to use.

技术分享

 

 

 1.7.1 Processes


A process is the operating system‘s abstraction for a running program.

Multiple processes can run concurrently on the same system, and each process appears to have exclusive use of hardware.

Single CPU can appear to execute multiple processes concurrently by having the processor switch among them.

This mechanism is called context switching.

技术分享

 

 

1.7.2 Threads

Threads running in the context of the process and sharing the same code and global data

Multi-threading can make program run faster.

 

1.7.3 virtual memory 

Virtual memory is an abstraction that provides each process with the illusion that it has exclusive use of the main memory.

Each process -----> uniform view of memory -----> virtual address space

技术分享

 

 

Program code and data:

Code begins at the same fixed address for all process followed by data locations.

 

Heap:

expand and contract dynamically at run time as a result of calls to standard C library routines such as malloc and free.

 

Shared libraries:

hold the codes and data for shared libraries such as C standard library and the math library

 

Stack:

compiler uses to implement functions call

expand and contract dynamically at run time

 

Kernel Virtual Memory:

the part of OS

 

1.7.4 files

A sequence of bytes

Every I/O devices is modeled as a file

 

1.8 Systems communicate with other systems using Networks

networks can be just viewed as an I/O device.

main memory ---> network adapter ----> network ----> another machine
技术分享

 

 

技术分享

 

 

1.9 Important Themes

1.9.1 Concurrency and Parallelism

Thread-level concurrency:

multiple programs execute at the same time

Hyperthreading = simultaneous multi-threading allows a single CPU to execute multiple flows of control.技术分享

 

技术分享

 

 

Instruction-level Parallelism:

Processors execute multiple instructions at one time.

 

Single-instruction, Multiple-Data(SIMD) Parallelism:

special hardware allows a single instruction to cause multiple operations to be performed in parallel

 

1.9.2 The importance of abstractions in Computer System

formulate a simple application-program interface (API) for a set of functions that allows programmers to use the code without diving into its inner workings

技术分享

 

 

1.10 summary

computer system = hardware + software

Information = groups of bits

Computer spends most of time copying data ----> the storage device is a hierarchy

3 fundamenta abstractions:

(1) Files are abstractions for I/O devices.

(2) Virtual memory is an abstraction for both main memory and disk.

(3) Processes are abstractions for the processor, main memory and I/O device.

 

[CSAPP] Chapter 1 Overview of Computer