重读&笔记系列-《深入理解计算机系统》第一章

本文详细介绍了计算机系统的构成,包括处理器、内存、I/O设备和高速缓存,以及程序的编译、链接过程。讨论了操作系统如何管理硬件资源,如进程、虚拟内存,并强调了抽象在系统设计中的重要性。还涵盖了存储器层次结构和高速缓存的作用,以及操作系统提供的API和文件系统。
摘要由CSDN通过智能技术生成

《深入理解计算机系统》笔记


1 计算机系统漫游

计算机由系统软件和硬件组成,其内在概念亘古不变。

通过对hello world程序的生命期来了解计算机系统。

1.1 信息就是位+上下文

信息+上下文=信息,不同类型的信息有不同的上下文,上下文就是编码规则。

只由ASCII字符构成的文件为文本文件,其他所有文件为二进制文件。

C语言成功的因素:Unix由C语言编写、小而简单、为实践目的设计。

1.2 程序被翻译成不同的格式

预处理阶段(.c->.i):处理#开头的命令,载入头文件,替换宏定义。

编译阶段(.i->.s):将c代码翻译成汇编。

汇编阶段(.s->.o):将汇编代码翻译成机器语言。

链接阶段:将所有目标文件合并为可执行文件。

GNU是开源文化的起源,其给linux内核提供了基础环境。

1.3 熟悉编译系统带来的好处

优化程序性能、理解链接出错的原因、避免安全漏洞。

1.4 处理器读并解释内存中的指令

shell是一个命令解释器。

系统硬件组成:

  • 总线:电子管道。传送定长字节,4字节(32位),8字节(64位)。

  • I/O设备:系统与外部联系通道。键盘、鼠标、显示器、磁盘等。

  • 主存:DRAM。一个线性数组,数据类型决定每个数据项大小。

  • 处理器。CPU,一个字的存储设备。一直执行指令并更新计数器PC。

    • 加载:主存->寄存器。
    • 存储:寄存器->主存。
    • 操作:寄存器->ALU->寄存器。
    • 跳转:更新PC。

hello world运行过程:键盘./hello -> shell hello -> 内存 -> 键盘回车 -> shell hello.c -> 内存 -> CPU -> 寄存器 -> 显示器。

1.5 高速缓存

寄存器->主存->磁盘之间速度差异太大,1000倍->100倍,缓存作为暂存设备弥补这种差异。

利用高速缓存的局部性原理,存放可能经常访问的数据。

L1、L2:SRAM

利用高速缓存能将程序的性能提高一个数量级。

1.6 存储器层次结构

L0 寄存器

L1 高速缓存(SRAM)

L2 高速缓存(SRAM)

L3高速缓存(SRAM)

主存(DRAM)

本地二级存储(磁盘)

远程二级存储(分布式文件系统、Web服务器)

1.7 操作系统

所有应用对硬件的操作都必须通过操作系统,shell和hello world程序都没有直接访问设备。

操作系统两个基本功能:防止硬件被应用滥用、为应用提供统一简单的API操作硬件。

进程是程序的运行态,使每个程序好像独占计算机资源。

操作系统通过上下文切换来交替执行每个进程,实现并发运行。

一个进程可由多个线程组成,多线程之间比多进程更加容易共享数据,因此更加高效。

虚拟内存为进程屏蔽了物理地址,使每个进程在虚拟地址空间运行,造成每个进程感觉独占内存空间。

虚拟内存空间由如下组成:

  • 程序代码和数据。
  • 堆。
  • 共享库。
  • 栈。
  • 内核虚拟内存。

一切皆文件,unix将所有I/O设备抽象成文件,使得应用程序可以使用统一的方式来处理各种I/O设备。

网络也可以视为一个I/O设备,数据从网络中来,telnet通过网络I/O进行远程通信。

抽象是计算机科学中最重要的概念,文件是对I/O设备的抽象,虚拟内存是对存储器的抽象,进程是对运行中程序的抽象,

虚拟机是对计算机的抽象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值