读书笔记:A tour of computer system

1. 信息其实就是一些有特定含义的010101的bits文件

aside:c语言是system-level语言,他的诞生和unix系统紧紧相关。

2. 程序本身被其他的一些程序不断的转化直到机器可以执行

        例如:预编译,编译,汇编,链接 的过程,程序本身在不断转化

3. 编译系统很值得去了解,因为它可以让我们做到:

        a)优化程序,在了解c语言被编译成什么样的machine-level code的和machine-level code的基础上,可以作出很多优化。

b)理解一些link error

c)避免安全漏洞,比如buffer overflow就常常别人利用进行攻击。

4.处理器读取和解析储存在内存中的instructions

电脑的硬件系统组成有bus(连接传输作用), I/O device, main memory, processor, 其中cpu的功能主要有四种

i)load, memory->register

ii) store, register->memory

iii)operator, register->ALU

iiii)jump, 改变PC(program count)用来标记当前程序运行到的位置

5. cache的重要性,可以利用这个提升软件效率

L0(reg)->L1(CPU SRAM)->L2(CPU SRAM)->L3(CPU SRAM)->L4(main memory DRAM)->L5(local disk)->L6(remote disk)   7级缓存

6. 操作系统帮助我们管理底层的硬件,并抽象出一些接口

process:根据PC, register file, context of main memory 在user code和kernel code之间切换

thread

virtual memory:使每个process看起来他都有一个完整的memory结构

file


Kernel virtual memory

User stack(created at run time)

 

Memory mapped region forshared libraries

 

Run-time heap(created at run time bymalloc)

Read/write data

Read-only code and data

 

7 一些重要的主题

a) concurrency   vs  parallelism   第一个是多任务并行其并不会提升软件效率只是看起来可以有多个任务同时执行,第二个是多个CPU的同时运行,往往和多线程相关,可以提升软件效率,

i) 主要有thread-level的并行

ii) instruction-level的并行比如流水线,过去一个指令要几个时钟周期,现在是一个周期多个指令

iii) SIMD的并行,有效利用一些复杂的CPU指令

b)abstruction 抽象了就方便了别人的理解和使用




你可能感兴趣的:(读书笔记:A tour of computer system)