深入理解计算机操作系统 上
0x00 前言
本书只是初读以及会添加一些自己的理解,自己的理解我会用括号进行表述,后续理解更深后可能会进行文章的修改。
0x01 计算机系统漫游
1.信息是 位+上下文
系统中的所有信息,都是由一串比特(位)表示的,区分不同数据对象的唯一方法是我们读到这些数据对象的时候的上下文。
2.程序被其他程序翻译成不同的格式
- 预处理阶段。宏展开,头文件展开,删除注释。
- 编译阶段。输出汇编程序。(大概过程有,词法分析,语法分析,语义分析,源代码优化,目标代码生成,目标代码优化)
- 汇编阶段。汇编生成可重定位目标程序(可执行文件)。
- 链接阶段。所使用到的函数,如果代码没有需要进行链接(如动态链接,静态链接,静态链接是把函数代码一起生成可执行文件,动态链接是在运行的时候载入内存)
3.系统硬件组成
- 总线
- 通常总线被设计成传送定长的字节块,也就是(word)字。字中的字节数是字长,所以字长实际上是根据系统而变化的。
- I/O设备
- 每个I/O设备通过一个控制器或适配器与I/O总线相连。控制器和适配器之间的区别主要在于其封装方式。控制器是I/O设备本身或系统主板上的芯片组,适配器是插在主板卡槽上的卡。
- 主存
- 主存是一个临时处理器,物理上来说由DRAM组成。
- 处理器
- CPU,处理器的核心是一个大小为一个字的存储设备或(寄存器)成为PC。在任何时刻,PC都指向主存中的某条机器语言指令(64位中eip指向的地址,所以说cpu的每一个核都有一套自己的寄存器和ALU算术/逻辑单元)
4.hello程序运行过程
输入的读入寄存器,寄存器写入内存,执行指令,输出结果(输出显示器的过程实际上是写入显存的过程,显存也在逻辑化的虚拟内存中)。
5.高速缓存至关重要
加快处理器的运行速度比加快主存的运行速度要容易和便宜的多
L1是L2的高速缓存,依次迭代。
6.操作系统管理硬件
进程
进程是操作系统对一个正在运行的程序的一种抽象。在一个系统上可以同时运行多个进程,而每个进程好像在独占硬件。而并发运行是说一个进程和另一个进程交错执行。操作系统实现这个交错的机制称作上下文切换。
操作系统持续跟踪进程所需要的所有状态信息。这些状态,也就是上下文,如PC和寄存器值,主存的内容。当操作系统切换上下文,就会进行上下文转换,即保存当前进程的上下文,恢复新进程的续航下文,然后将控制权交给新进程。内核不是一个独立的进程,它是该系统管理全部进程所用代码和数据结构的集合。
线程
在现代系统中,一个进程实际上可以由多被称为线程的执行单元组成,每个线程都运行在进程的上下文中并共享通用的代码和全局数据。
虚拟内存
此为linux虚拟内存。
文件
文件就是字节序列,每个I/O设备都可以看作是文件。系统中所有的输入输出都是通过使用一小组被成为unix I/O的系统调用读写文件实现的。
7.重要主题
并发和并行
concurrency并发,值一个同时具有多个活动的系统;parallelism并行指的是用并发来是一个系统运行的更快。
- 线程级并发
- 多核CPU是将多个CPU(成为“核”)集成到一个集成电路芯片上
- 超线程,有时称为同时多线程,是一项允许一个CPU执行多个控制流的技术。它涉及某些CPU硬件由多备份,比如程序计数器PC和寄存器文件,而其他的硬件部分只有一份,比如执行浮点算术运算的单元。
- 指令级并行
- 现代处理器可以同时执行多条指令的属性成为指令级并行。早期的微处理器需要多个时钟周期来执行一条指令,最近的处理器可以保持每个时钟周期2~4条指令的执行速率。其实每条指令从开始到结束需要长的多的时间,但是处理器能同时处理多达100条指令。
- 单指令,多数据并行
- 允许一条指令产生多个可并行执行的操作,即SIMD并行。
文章评论