第五部分 操作系统层

第10章 操作系统

10.1 操作系统的角色

  • 应用软件(application software):帮助我们解决现实世界问题的程序。
  • 系统软件(system software):管理计算机系统并与硬件进行交互的程序。
  • 操作系统(operating system):管理计算机资源并为系统交互提供界面的系统软件。

  一台计算机通常只有一个活动的操作系统,在系统运行中负责控制工作。计算机硬件是靠电线连接的,初始时载人永久性存储器ROM) 中存储的一小组系统指令。这些指令将从二级存储器(通常是硬盘)中载人大部分系统软件。最终将载人操作系统软件的所有关键元素,执行启动程序,提供用户界面,系统就准备就绪了。这个过程叫作引导计算机。术语“引导”来自于“靠自己的努力振作起来”这一思想,这也正是计算机开机后它所做的事情。计算机可以具备两个或者更多个操作系统,用户在计算机开机时可以选择使用哪个操作系统。这种配置称为双引导或多引导系统。不过,任何时候都只有一个操作系统在控制计算机。

10.1.1 内存、进程与CPU管理

  • 多道程序设计(multiprogramming):同时在主存中驻留多个程序,由它们竞争CPU的技术。
  • 内存管理(memory management):了解主存中载有多少个程序以及它们的位置的技术。
  • 进程(progress):程序执行过程中的动态表示法。
  • 进程管理(progress management):了解活动进程的信息的动作。
  • CPU调度(CPU scheduling):确定主存中的哪个进程可以访问CPU以便执行的动作。

10.1.2 批处理

  • 分时(timesharing):多个交互用户同时共享CPU时间的系统。
  • 虚拟机(virtual machine):分时系统创建的每个用户都有专有机器的假象。
  • 主机(mainframe):一一个大型的多用户计算机,通常与早期的分时系统相关。
  • 哑终端(dumb terminal):在早期的分时系统中用户用于访问主机的套显示器和键盘。

10.1.4 其他OS要素

  要把计算机通常要连接到网络这个因素考虑在内。
  负责与各种各样的设备通信。   支持实时系统。

  • 实时系统(real——time system):应用程序的特性决定了响应时间至关重要的系统。
  • 响应时间(response time):收到信号和生成响应之间的延迟时间。

10.2 内存管理

多道程序设计环境决定操作系统必须采用下列技术:

  • 跟踪一个程序驻留在内存的什么位置以及是如何驻留的。
  • 把逻辑程序地址转换成实际的内存地址。

  在编译程序时,对标识符(如变量名)的引用将被转化为逻辑地址。当程序最终载人内存时,每个逻辑地址将被转换成对应的物理地址。逻辑地址和物理地址间的映射叫作地址联编。把逻辑地址联编到物理地址的时间越迟,得到的灵活度越大。逻辑地址使得程序可以在内存中移动,或者每次载人不同的位置。只要知道程序存储的位置,就可以确定任何逻辑地址对应的物理地址。

  • 逻辑地址(logic address):对一个储存值的引用,是相对于引用它的程序的。
  • 物理地址(physical address):主存储设备中的真实地址。
  • 地址联编(addressbinding):逻辑地址和物理地址间的映射。

10.2.1 单块内存管理

  单块内存管理(single contiguous memory management):把应用程序载入一段连续的内存区域的内存管理方法。

10.2.2 分区内存管理

  • 固定分区法(fixed-partition technique):把内存分成特定数目的分区以载入程序的内存管理方法。
  • 动态分区法(dynamic-partition technique):根据容纳程序的需要对内存分区的内存管理方法。
  • 基址寄存器(base register):存放当前分区的起始地址的寄存器。
  • 界限寄存器(bounds register):存放当前分区的长度的寄存器。

  • 最先匹配,即把第一个足够容纳程序的分区分配给它。

  • 最佳匹配,即把最小的能够容纳程序的分区分配给它。
  • 最差匹配,即把最大的能够容纳程序的分区分配给它。

  在固定分区法中,最差匹配没有意义,因为它将浪费较大的分区。最先匹配和最佳匹配适用于固定分区。但在动态分区中,最差匹配常常是最有用的,因为它留下了最大可能的空白分区,可以容纳之后的其他程序。 当程序终止时,分区表将被更新,以反映这个分区现在是空白的,新程序可以使用它了。在动态分区中,连续的空白分区将被合并成一个大的空白分区。 分区内存管理同时把几个程序载人内存,从而可以有效地利用主存。但要记住,一个分区必须要能够容纳整个程序。虽然固定分区比动态分区容易管理,但却限制了进来的程序的机会。系统本身可能有足够的空间容纳这些程序。在动态分区中,作业可以在内存中移动,以创建较大的空白分区。这个过程叫作压缩。

10.2.3 页式内存管理

  • 页式内存管理法( paged memory technique):把进程划分为大小固定的页,载人内存时存储在帧中的内存管理方法。
  • 帧(frame):大小固定的一部分主存,用于存放进程页。
  • 页(page): 大小固定的一部分进程,存储在内存帧中。
  • 页映射表(Page Map Table, PMT):操作系统用于记录页和帧之间的关系的表。

页式内存管理系统中的逻辑地址与分区系统中的一样,都是从一个相对于程序起始点的整数值开始。但这个地址被转换成两个值一页编号和偏移量。用页面大小除逻辑地址得到的商是页编号,余数是偏移量。因此,如果页面大小是1024,那么逻辑地址2566对应的就是进程的第2页的第518个字节。逻辑地址通常被表示为<页编号,偏移量>,如<2, 518>
要生成物理地址,首先需要查看PMT,找到页所在的帧的编号,然后用帧编号乘以帧大小,加上偏移量即可。例如图10-8中的例子,如果进程1是活动的,逻辑地址<1,222>将被进行如下处理:进程1的页面1存储在帧12中,因此这个逻辑地址对应的物理地址是12x 1024+222=12510。注意,有两种逻辑地址是无效的,一种是越过了进程的界限,一种是偏移量大于帧大小。

  • 请求分页( demand paging):页式内存管理法的扩展,只有当页面被引用(请求)时才会被载人内存。
  • 页面交换( page swap):把一- 个页面从二级存储设备载人内存,通常会使另一一个页面从内存中删除。
  • 虚拟内存(virtual memory):由于整个程序不必同时处于内存而造成的程序大小没有限制的假象。
  • 系统颠簸(thrashing): 频繁的页面交换造成的低效处理。

10.3 进程管理

10.3.1 进程状态

  • 创建阶段
  • 准备就绪状态
  • 运行状态
  • 等待状态
  • 终止状态

10.3.2 进程控制块

进程控制块(process control block):操作系统管理进程信息使用的数据结构。
上下文切换(context switch):当一个进程移出CPU,另一个进程取代它时发生的寄存器信息交换。

10.4 CPU调度

  • 非抢先调度(nonpreemptive scheduling):当当前执行的进程自愿放弃了CPU时发生的CPU调度。
  • 抢先调度(preemptive scheduling):当操作系统决定照顾另一个进程而抢占当前执行进程的CPU资源时发生的CPU调度。
  • 周转周期(turnaround time):从进程进入准备就绪状态到它最终完成之间的时间间隔,是评估CPU调度算法的标准。

10.4.1 先到先服务

  在先到先服务(FCFS) 调度方法中,进程按照它们到达运行状态的顺序转移到在状态S调度是非抢先的。且进程获得 了CPU 的访问权, 那么除非它强制请求转人等待状念(如请求其他进程正在使用的设备),否则将一 直占用CPU。
  限设进程pl到p5几乎同时到达准备就绪状态(为了简化计算)。但它们仍然有进人地序并具有特定的服务时间。

10.4.2 最短作业优先

最短作业优先(SJN)CPU调度算法将查看所有处于准备就绪状态的进程,并分派一个具有最短服务时间的。和FCFS一样,它通常被实现为非抢先算法。

10.4.3 轮询法

时间片(time slice):在CPU轮询算法中分配给每个进程的时间量。

第11章 文件系统和目录

11.1 文件系统

  • 文件(file):数据的有名集合,用于组织二级存储设备。
  • 文件系统(file system):操作系统为它管理的文件提供的逻辑视图。
  • 目录(directory):文件的有名分组。

11.1.1 文本文件和二进制文件

  • 文本文件(text file):包含字符的文件
  • 二进制文件(binary file):包含特定格式的数据的文件,要求给位串一个特定的解释。

11.1.2 文件类型

  • 文件类型(file type):文件(如Java程序或Microsoft文档)中存放的关于类型的信息。
  • 文件扩展名(file extension):文件名中说明文件类型的部分。

11.1.3 文件操作

11.1.4 文件访问

  • 顺序文件访问(sequential file access):以线性方式访问文件中的数据方法。
  • 直接文件访问(direct file access):通过指定逻辑记录编号直接访问文件中的数据的方法。

11.1.5 文件保护

11.2 目录

11.2.1 目录树

  • 目录树(directory tree):展示文件系统的嵌套目录组织的结构。
  • 根目录(root directory):包含其它所有目录的最高层目录。
  • 工作目录(working directory):当前活动的子目录。

11.2.2 路径名

  • 路径(path):文件或子目录在文件系统中的位置的文本名称。
  • 绝对路径(absolut path):从根目录开始,包括所有后继子目录的路径。
  • 相对路径(relative path):从当前工作目录开始的路径。

11.3 磁盘调度

  磁盘调度(disk scheduling):决定先满足哪个磁盘I/O请求的操作。

11.3.1 先到先服务磁盘调度法

  FCFS按照请求到达的顺序处理它们,并不考虑读写头的当前位置。

11.3.2 最短寻道时间优先磁盘调度法

  虽然这种方法不能保证读写头的整体移动最少,但通常比FCFS算法有所改进。不过这种方法会带来一个重要问题。假设已有的请求还未解决,而新的请求仍然源源不断地到来,并且新的请求总是比早期的请求所需要的柱面离当前位置更近。那么从理论上来说,早期的请求将永远得不到满足,因为不断到来的请求总有优先权。这种情况叫作饿死。先到先服务磁盘调度算法不会出现饿死的情况。

11.3.3 SCAN磁盘调度法

  读写头向轴心移动,然后再向盘片边缘移动。

问题

  • 逻辑地址与物理地址之间的联系不太清楚
  • 三种内存管理方式(单块、分区、页式)
  • 文件操作时如何让实现的

Copyright © 2024 罗雪峰
Powered by .NET 8.0 on Kubernetes