CSAPP随笔: 操作系统管理硬件

 

 

     操作系统看作是应用程序和硬件之间的一层软件,两个基本功能:1. 防止失控的应用程序滥用硬件。2. 向应用程序提供 简单一致 的机制来控制不同级别的硬件设备。

     操作系统的抽象概念:

     

 

     文件 是对 I/O设备 的抽象表示,向应用程序提供了一个统一的视图,虚拟内存 是对  主存及磁盘I/O设备 的抽象, 进程 是对 处理器主存及I/O设备 的抽象表示。

     进程 可以让 处理器 看上去 只处理 系统内存中的代码及数据。

     并发运行:通过处理器在 进程间的切换 来实现 两个进程的 指令交错执行,每个进行看上去独占硬件资源。

     什么是上下文?操作系统保持跟踪进程运行所需的所有状态信息,(PC,寄存器文件的当前值及主存的内容)。

     上下文切换的过程:1. 保存当前进程的上下文  2. 恢复新进程的上下文  3. 控制权传递到新进程。 4. 开始新的进程。

 

     线程:进程 由 多个执行单元 线程 组成, 每个 线程 运行在进程的 上下文中, 共享相同的 代码及 全局数据。相比 进程,更容易共享数据,更高效。

     虚拟内存: 让进程看到的内存是一致的,每个进程独占的使用主存。 地址空间最上面 保留给操作系统的代码及数据, 底部区域存放的是用户进程定义的代码及数据。

 

  分区介绍: 

              0. 代码从同一固定地址开始。

              1. 代码及数据区:存放C的全局变量,按照目标文件内容初始化。其大小 在进程 开始运行时被指定。

              2. 堆:大小在运行时可以调整。

              3. 共享库:中间部分存放 如 C标准库和数学库 的代码和数据。

              4. 栈:位于 用户 虚拟地址的 顶部,用于编译器实现函数调用,在执行期可以动态的缩放,函数调用时,栈会增长,函数返回时,栈会收缩。

              5. 内存虚拟内存: 虚拟地址顶部 为内核保留,禁止读写或直接调用内核代码定义的函数,必须由内核执行该区域的代码。

 

虚拟内存运作的软硬件交互: 硬件翻译处理器生成的地址,将 进程虚拟内存的内容 存放到 磁盘中,用主存 作为 磁盘的 高速缓存。

 

 

      指令集架构: 对实际处理器硬件的抽象。

      进程: 对正在运行程序的抽象。

      虚拟机:对整个计算机的抽象, 包括 操作系统,处理器及程序。

posted @ 2023-01-27 11:58  fourmii  阅读(30)  评论(0编辑  收藏  举报