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的更多相关文章

  1. CSAPP Chapter 8:Exception Control Flow

    prcesssor在运行时,假设program counter的值为a0, a1, ... , an-1,每个ak表示相对应的instruction的地址.从ak到ak+1的变化被称为control ...

  2. Chapter 2. Overview gradle概览

    2.1. Features //gradle特性 Here is a list of some of Gradle's features. Declarative builds and build-b ...

  3. optimization blocks (csapp chapter 5.1)

    p_511 编译器在没有指示下,会做‘ safe optimization',因此有些优化在没有参数的指示下是不会对代码做优化的,故在程序中应该避免某一类代码,因为它们妨碍了编译器做优化. optim ...

  4. Chapter 1. Introduction gradle介绍

      We would like to introduce Gradle to you, a build system that we think is a quantum leap for build ...

  5. 计算机网络 Computer Networks​ 期末复习总提纲

    平时不学习,期末火葬场. 一周时间靠王道考研和各路 pdf 自学计网,留下的提纲都在这里了.全是干货.全文 pdf 可以在这里下载:http://cloud.billc.io/s/xNHarppQPG ...

  6. 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 ...

  7. Image Segmentation的定义

    Definition 图像分割将一张图分为\(n\)个region, 需要满足下面5个条件 每一个像素都要属于一个region 每个region都是连通的 region与region之间没有交集 re ...

  8. 正则表达式——语法

    正则表达式(regular expression)--描述一种字符串匹配模式,可以用来检测一个字符串是否包含特定的子串.用其他字符串将其代替.提取出某个符合要求的子串. 正则表达式   由普通字符 和 ...

  9. <转载> OpenGL Projection Matrix

    原文 OpenGL Projection Matrix Related Topics: OpenGL Transformation Overview Perspective Projection Or ...

随机推荐

  1. CUDA Samples: Long Vector Add

    以下CUDA sample是分别用C++和CUDA实现的两个非常大的向量相加操作,并对其中使用到的CUDA函数进行了解说,各个文件内容如下: common.hpp: #ifndef FBC_CUDA_ ...

  2. React-Native进阶_7.TextInput的使用实现搜索功能

    前面使用TabBar 实现了底部tab标签,通过stackNavigator 实现了页面跳转,接下来,使用TextInput 来实现一个搜索功能. TextInput 属性比较多,不一一介绍,具体可以 ...

  3. keras系列︱seq2seq系列相关实现与案例(feedback、peek、attention类型)

    之前在看<Semi-supervised Sequence Learning>这篇文章的时候对seq2seq半监督的方式做文本分类的方式产生了一定兴趣,于是开始简单研究了seq2seq.先 ...

  4. Android逆向之旅---Android中锁屏密码算法解析以及破解方案

    一.前言 最近玩王者荣耀,下载了一个辅助样本,结果被锁机了,当然破解它很简单,这个后面会详细分析这个样本,但是因为这个样本引发出的欲望就是解析Android中锁屏密码算法,然后用一种高效的方式制作锁机 ...

  5. postgresql与Oracle:空字符串与null

    空字符串:两个单引号,中间无空格等任何内容 在postgresql中,空字符串与null是不同的:而oracle中,空字符串与null等同.测试如下: postgresql中: postgres=# ...

  6. angularjs 缓存

    设置缓存请求的数据:只有请求URL不变,就不会重新发请求 设置带定时时间的缓存: .factory('cacheInterceptor', ['$cacheFactory', '$timeout', ...

  7. js 要写严格模式

    js 为了能在移动端通用,要写严格模式: 这里多了个逗号,在pc上浏览器可以通过,但是在手机端就不能.

  8. Mac设置SVN:Cornerstone3

    前因 在windows下用Tortoisesvn.可惜Tortoisesvn没有Mac版,只能上知乎寻找适合于 Mac的SVN软件. 经过 找到了一款名为Cornerstone的软件.在App Sto ...

  9. 两台linux完美实现双机热备【来源网络尚未实践】

    [来源:http://rainbird.blog.51cto.com/211214/225541/]       一直想做基于linux的双机热备,一直没有时间和机会.一直以为只要做双机热备的实验就必 ...

  10. 20179223《Linux内核原理与分析》第三周学习笔记

    测试3的实验: 1. 用gcc -g编译vi输入的代码 2. 在main函数中设置一个行断点 3. 在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点 4. 提交调 ...