[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的更多相关文章
- CSAPP Chapter 8:Exception Control Flow
prcesssor在运行时,假设program counter的值为a0, a1, ... , an-1,每个ak表示相对应的instruction的地址.从ak到ak+1的变化被称为control ...
- Chapter 2. Overview gradle概览
2.1. Features //gradle特性 Here is a list of some of Gradle's features. Declarative builds and build-b ...
- optimization blocks (csapp chapter 5.1)
p_511 编译器在没有指示下,会做‘ safe optimization',因此有些优化在没有参数的指示下是不会对代码做优化的,故在程序中应该避免某一类代码,因为它们妨碍了编译器做优化. optim ...
- Chapter 1. Introduction gradle介绍
We would like to introduce Gradle to you, a build system that we think is a quantum leap for build ...
- 计算机网络 Computer Networks 期末复习总提纲
平时不学习,期末火葬场. 一周时间靠王道考研和各路 pdf 自学计网,留下的提纲都在这里了.全是干货.全文 pdf 可以在这里下载:http://cloud.billc.io/s/xNHarppQPG ...
- Networked Graphics: Building Networked Games and Virtual Environments (Anthony Steed / Manuel Fradinho Oliveira 著)
PART I GROUNDWORK CHAPTER 1 Introduction CHAPTER 2 One on One (101) CHAPTER 3 Overview of the Intern ...
- Image Segmentation的定义
Definition 图像分割将一张图分为\(n\)个region, 需要满足下面5个条件 每一个像素都要属于一个region 每个region都是连通的 region与region之间没有交集 re ...
- 正则表达式——语法
正则表达式(regular expression)--描述一种字符串匹配模式,可以用来检测一个字符串是否包含特定的子串.用其他字符串将其代替.提取出某个符合要求的子串. 正则表达式 由普通字符 和 ...
- <转载> OpenGL Projection Matrix
原文 OpenGL Projection Matrix Related Topics: OpenGL Transformation Overview Perspective Projection Or ...
随机推荐
- python基础第一章
Python基础 第一个python程序 变量 程序交互 基本数据类型 格式化输出 基本运算符 流程控制if...else... 流程控制-循环 第一个python程序 文件执行 1.用notepad ...
- Qt QScrollArea and layout in code
Qt QScrollArea and layout in code 一.参考文档: . Qt 第六章 QScrollArea类给QWidget添加滚动条 http://blog.csdn.net/co ...
- vue-cli搭建及项目目录结构
今天总结一下vue的脚手架的搭建.很简单,今天我们就来说一下 一.vue 脚手架的搭建. 对于脚手架的具体搭建方法,我这里不在很详细的书写,具体方法我推荐菜鸟教程的方法,和具体,你一步一步的来就可以实 ...
- ios逆向工程-动态分析
先说说为什么要分析应用吧,如果你想从一个ios应用中获取有用的信息,或者你想修改该应用的一些功能,前提当然是要先知道该app的逻辑和结构了. 动态分享工具比较少,我们先分析个简单的,全民工具Cycri ...
- Map集合学习
Java中常用的Map实现类主要有:HashMap.HashTable.TreeMap.LinkedHashMap. 一:HashMap HashMap介绍 HashMap的底层其实是“链表的数组”, ...
- Scala的=>作用
举例: var increase = (x: Int) => x + 1 increase(10) res0: Int = 11 类似于转化符号,=>指明这个函数把左边的东西(任何整数x) ...
- mysql 关联左表不存在数据 并 根据身份证计算查找大于65岁以上老人
--- //查找左边不存在数据,不能用 = '' SELECT m.uid FROM es_members m LEFT JOIN es_user_self_care_assessment u ON ...
- 使用gopherjs 进行web 应用开发
1. 安装 go get -u github.com/gopherjs/gopherjs 2. 基本代码使用 备注: 这个只是一个简单的demo,进行pi 运算,结果还真是快 a. code gola ...
- Unite 2018 | 《崩坏3》:在Unity中实现高品质的卡通渲染(上)
http://forum.china.unity3d.com/thread-32271-1-1.html 我们已经发布了Unite 2018 江毅冰的<发条乐师>.Hit-Point的&l ...
- getpwuid()
getpwuid函数是通过用户的uid查找用户的passwd数据.如果出错时,它们都返回一个空指针并设置errno的值,用户可以根据perror函数查看出错的信息. 外文名 getpwuid() 头文 ...