Keep Learning

伪程序员记录点滴

深入理解计算机系统-笔记 Ch1

计算机系统漫游

信息就是上下文
由gcc处理的程序包括四个步骤,这四个步骤的处理程序分别是:预处理器、编译器、汇编器、链接器,对应的四个阶段分别是:预处理阶段(将头文件、预处理指令插入到源代码中),编译阶段(将c文件生成为汇编语言文件),汇编阶段(将汇编语言翻译成为机器文件),链接阶段(将各个目标代码合并生成一个可执行程序)。

了解编译系统的工作流程的好处:

  • 优化程序性能;
  • 理解链接时出现的错误;
  • 避免安全漏洞。

寄存器文件是一个小的存储设备,由一些字长为1的寄存器组成,每个寄存器有唯一的名字。

指令集结构与微体系结构的区别:指令集结构描述的是每条机器代码指令的效果;而微体系结构描述的是处理器实际上是如何实现的。

操作系统通过几个基本抽象概念(进程、虚拟存储器和文件)来实现两个功能:

  • 防止硬件被失控的应用程序滥用;
  • 向应用程序提供简单一致的机制来控制复杂而又大相径庭的低级硬件设备。

文件是对I/O设备的抽象表示,虚拟存储器是对主存储器和磁盘I/O设备的抽象表示,进程则是对处理器、主存和I/O设备的抽象表示。

进程是操作系统对一个正在运行的程序的一种抽象。操作系统在多个进程间进行交错执行的机制称为上下文切换;而操作系统保持跟踪进程运行所需要的所有状态信息,这些状态信息便是上下文。

虚拟存储器抽象中,每个进程看到的是一致的存储器,称为虚拟地址空间。对Linux系统来说,地址空间最上面的区域是为操作系统中的代码和数据保留的。地址空间的底部存放的是用户进程的代码和数据。

每个进程看到的虚拟地址空间是由大量准确重复定义的区构成的,每个区有专门的功能。从地址的最下到最上分别是:程序代码和数据区,堆,共享库,栈,内核虚拟存储器。对于所有的进程来说,代码是从同一个固定的地址开始,在程序一开始运行时,程序代码和数据区的大小便是固定的,但是堆和栈的大小是可变的,内核虚拟存储器总是常驻内存中,是操作系统的一部分。

文件就是字节序列,它向应用程序提供了一个统一的视角来看待系统中可能含有的所有的各式各样的I/O设备。

系统是硬件和系统软件互相交织的集合体,它们必须共同协作以达到运行应用程序的最终目的。

并发(concurrency)是一个通用的概念,指一个同时具有多个活动的系统;并行(parallelism)指的是用并发使一个系统运行的更快。并发一共有三个层级:

  • 线程即并发;
  • 指令集并发;
  • 单指令、多数据并发。

Comments