[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 ...
随机推荐
- SQL基础四(例子)
------------------------------------------------ --分别创建student/course/score表 Create table student ( ...
- Scala函数式编程——近半年的痛并快乐着
从9月初啃完那本让人痛不欲生却又欲罢不能的<七周七并发模型>,我差不多销声匿迹了整整4个月.这几个月里,除了忙着讨食,便是继续啃另一本"锯著"--<Scala函数 ...
- 利用ajax完成项目图册上传删除【实际项目】
[项目页面效果] [前台jsp页面] jsp的js代码 <script type="text/javascript"> //上传项目图片 function upload ...
- IntelliJ-IDEA中mybatis三剑客
一.mybatis-generator的使用 作用:根据数据库自动生成pojo.dao和xml文件. 1.引入mybatis-generator pom.xml中引入配置:
- FastJson的一些使用
前言 最近经常使用json的一些转换,使用的是fastjson,所以就对fastjson进行了一些汇总,记录下来. 正文 主要的api 首先是一些类库的说明: SerializeWriter:相当于S ...
- 解决 mklink 使用中的各种坑(硬链接,软链接/符号链接,目录链接)
通过 mklink 命令可以创建文件或文件夹的链接,而这种链接跟快捷方式是不一样的.然而我们还可能会遇到其使用过程中的一些坑,本文将整理这些坑并提供解决方法. 0x00 背景介绍:mklink m ...
- 无法连接到SQL数据库
问题: 连接到服务器------------------------------无法连接到 .. 其他信息:在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服 ...
- BZOJ5369 [Pkusc2018]最大前缀和
题意 小C是一个算法竞赛爱好者,有一天小C遇到了一个非常难的问题:求一个序列的最大子段和. 但是小C并不会做这个题,于是小C决定把序列随机打乱,然后取序列的最大前缀和作为答案. 小C是一个非常有自知之 ...
- “RPC好,还是RESTful好?”
REST 和 RESTful 什么区别?REST,即Representational State Transfer的缩写.翻译过来是表现层状态转换.如果一个架构符合REST原则,就称它为RESTful ...
- 【转】Eclipse的启动问题【an error has occurred see the log file】
原文网址:http://coderlin.blog.51cto.com/7386328/1275215 方法1: 今天打开Eclipse的时候出现来了一个问题,导致了Eclipse打不开 错误的提示是 ...