第十章 操作系统

10.1 操作系统的角色
应用软件:帮助我们解决现实世界问题的程序。
系统软件:管理计算机系统并与硬件进行交互的程序。
操作系统(os):管理计算机资源并为系统交互提供界面的系统软件。
一台计算机通常只有一个活动的操作系统。(计算机可以具备两个或多个操作系统,开机时可以选择操作系统,这种配置称为双引导或多引导系统,但任何时候都只有一个操作系统在控制计算机。)
计算机硬件是靠电线连接的,在初始时就载入ROM中储存的一小组系统指令。
引导计算机:让载入操作系统软件的所有关键元素,执行启动程序,提供用户界面,系统就准备就绪了。
智能手机,平板电脑等移动设备所运行的操作系统都是量身定做。(内存限制,更小的外围设备)
操作系统负责管理资源(资源由使用它们的程序共享),确保每个程序都能得到执行机会。
多个并发执行的共享主存,一次使用CPU,竞争使用输入/输出设备机会。

10.1.1 内存,进程与CPU管理
多道程序设计:同时在主存中驻留多个程序,有它们竞争CPU的技术。
内存管理:了解主存中载有多少个程序以及它们的位置的动作。
进程(process):程序执行过程中的动态表示法。
进程管理:了解活动进程的信息的动作。
CPU调度:确定主存中哪个进程可以访问CPU以便执行的动作。
操作系统自身也是必须执行的程序,要把os进程排入竞争CPU的队列中。

10.1.2 批处理
一个分批包含一组需要相同或相似资源的作业。它们竞争CPU和其他共享资源的使用权,当有资源的使用权后将被调度使用CPU。
现代“批”--系统
现代操作系统中的批处理概念允许用户把一组OS命令定义为一个批文件,以控制一个大型程序或一组交互程序的处理。

10.1.3 分时
分时(timesharing):多个交互用户同时共享CPU时间的系统。(分时系统运行多个用户同时与计算机进行交互)
虚拟机(virtual machine):分时系统创建的每个用户都有专有机器的假想。
主机:一个大型的多用户计算机,通常与早期的分时系统有关。
哑终端(dumb terminal):在早期的分时系统中用户用于访问主机的一套显示器和键盘。
其他用户可以用其他计算机通过网络连接到这台计算机上,实现分时。

10.1.4 其他OS要素
小型机--微型机--PC
设备驱动程序:“了解”特定设备接收和发布信息所希望采用的方式的小程序。(抽象)
实时系统:应用程序的特性决定了响应时间至关重要的系统。(必须给用户提供最少响应时间的系统)
响应时间:收到信号和生成相应之间的延迟时间。

10.2 内存管理
操作系统能跟踪一个程序驻留在内存的什么位置以及是如何驻留的,能把逻辑程序地址转换成实际的内存地址。
逻辑地址(logical):对一个存储值的引用,是相对于引用它的程序。(相对地址)
物理地址(physical):主存储设备中的真实地址。
地址联编(address binding):逻辑地址和物理地址间的映射。
逻辑地址使得程序可以在内存中移动,或者每次载入不同的位置。
-单块内存管理
-分区内存管理
-页式内存管理

10.2.1 单块内存管理
单块内存地址:把应用程序载入一段连续的内存区域的内存管理方法。(整个应用程序被载入一大块内存,进行地址联编只需把操作系统的地址考虑在内,一次处理一个程序)
物理地址=逻辑地址+载入程序内存的地址
优点:实现和管理都很简单
缺点:大大浪费了内存空间和CPU的时间

10.2.2 分区内存管理
固定分区法:将主存划分为特定数目的分区,分区大小不一定相同,但在操作系统初始引导时大小就固定了。
动态分区法:根据程序的需要创建分区。
动态分区信息表中地址信息会随着程序的载入和清除而改变。
基址寄存器:存储程序的分区起始地址。
界限寄存器:存储程序的分区的长度。
-最先匹配:把第一个足够容纳程序的分区分配给它。
-最佳匹配:把最小的能够容纳程序的分区分配给它。
-最差匹配:把最大的能够容纳程序的分区分配给它。
压缩:在动态分区中,作业可以在内存中移动,以创建较大的空白分区。
在动态分区中,最差匹配常常是最有用的,它留下了最大可能的空白分区,以容纳之后的其他程序。

10.2.3 页式内存管理
缺点:需要跟踪分配的内存,还要解析地址。
在页式内存管理法中,内存被分为小的大小固定的存储块,叫帧。进程被分化为页。
页:大小固定的一部分进程,存储在内存帧中。
页映射表(PMT):操作系统用于记录页和帧之间的关系的表。
页和帧都是从0开始编号,简化地址。
逻辑地址除以页面大小得到的商是页编号,余数是偏移量。
逻辑地址<页编号,偏移量>
两种无效逻辑地址:一种是越过了进程的界限,一种是偏移量大于帧大小。
分页的优点:不必把进程存储在连续的内存空间中。(把为进程寻找一大块可用空间的问题转化成寻找足够多的小块内存)
请求分页:页式内存管理法的扩展,只有当页面被引用(请求)时才会被载入内存。
页面交换:把一个页面从二级存储设备载入内存,通常会使另一个页面从内存中删除。(任何时候CPU都只访问进程的一个页面)
虚拟内存:由于整个程序不必同时处于内存而造成的程序大小没有限制的假象。
系统颠簸:频繁的页面交换造成的低效处理。

10.3 进程管理
操作系统必须管理的另一个重要资源是每个进程使用的CPU时间。

10.3.1 进程状态
进程状态:在操作系统的管理下,进程历经的概念性阶段。
进入系统,准备执行,等待资源,执行,执行结束。
进程可能中断以便另一个进程能够获得CPU资源。
正在运行的进程还可以请求一个为准备好的资源或请求I/O读取新引用的部分进程,而自身被转移到等待状态。
两种结果:得到足够的CPU时间以完成它的处理,正常终止;或生成一个无法解决的错误,异常终止。
得到等待资源后,等待中的进程转移到准备就绪状态。

10.3.2 进程控制块
进程控制块(PCB):操作系统管理进程信息使用的数据结构。
每个状态由一个PCB列表表示,处于该状态的每个进程对应一个PCB。
PCB在创建进程时创建,一直保持到进程终止。
每次程序中断时,它的程序计数器的值将被保存,以便当它再次进入运行状态时可以从中断处开始执行。
上下文切换:当一个进程移出CPU,另一个进程取代它时发生的寄存器信息交换。
PCB要维护关于CPU调度的信息,内存管理信息,核算信息。

10.4 CPU调度
CPU调度算法将决定把CPU给予哪个进程,以便能够运行它。
非抢先调度:当当前执行的进程自愿放弃了CPU时发生的CPU调度。
抢先调度:当操作系统决定照顾另一个进程而抢占当前执行进程的CPU资源时发生的CPU调度。
周转周期:从进程进入准备就绪状态到它最终完成之间的时间间隔,是评估CPU调度算法的标准。

10.4.1 先到先服务(FCFS)(非抢先)
一旦进程获得了CPU的访问权,除非它强制请求转入等待状态(如请求其他进程正在使用的设备)。

10.4.2 最短作业优先(SJN)(非抢先)
SJN将查看所有处于准备就绪状态的进程,并分派一个具有最短服务时间的。
SJN算法基于未来信息,如果估算正确,为最理想的算法。

10.4.3 轮询法(抢先)
时间片:在CPU轮询算法中分配给每个进程的时间量。
轮询法,应用最广泛,一般支持所有的作业,最公平的算法。

第11章 文件系统和目录
11.1 文件系统
主存具有易失性,二级存储设备具有永久性。
文件:数据的有名集合,用于组织二级存储设备。(文件时可以写入二级存储设备的最小数据量)
文件系统:操作系统为它管理的文件提供的逻辑视图,使用户能够按照文件集合的方式管理数据。
目录:文件的有名分组。(通常被用来组织文件)
文件的创建者决定了如何组织文件中的数据,文件中的所有用户都必须理解这种组织方式。

11.1. 文本文件和二进制文件
文本文件:包含字符的文件。
二进制文件:包含特定格式的数据的文件,要求给位串一个特定的解释。
文本编辑器可以创建,查看和修改文本文件的内容,无论它存储的是什么类型的信息。
有些通过定义特定的二进制格式需要用专门解释这种类型的数据的程序才能阅读或修改它。

11.1.2 文件类型
文件类型:文档中包括的信息的种类叫作文件类型。
文件拓展名:文件名中说明文件类型的部分。
操作系统有一个能识别的文件类型的清单,而且会把每种类型关联到特定的应用程序。
文件扩展名只说明了文件中存放的是什么。可以任意改变命名文件,但改变文件扩展名不会改变文件中的数据或它的内部格式。

11.1.3 文件操作
文件操作:创建,删除,打开,关闭,从文件中读取数据,把数据写入文件,重定位文件中的当前文件指针,把数据附加到文件结尾,删减,重命名,复制。
操作系统维护一个表,以说明哪些内存可用;为每个目录维护一个表,以记录该目录下的文件的信息。
创建:找空间,把条目加入目录表,记录文件的名字和位置。(反之为删除)
一个打开的文件都有一个当前文件指针(一个地址),说明下一次读写操作要发生在什么位置。
读文件:操作信息提交文件中从当前文件指针开始的数据的副本。读操作后,文件指针将被更新。
写信息:把数据存储到当前文件指针所指向的位置,然后更新文件指针。
不允许同时进行读和写。
删减文件:仅删除文件的内容,但不删除文件表中的管理条目。

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

11.1.5 文件保护
owner:可读,可写/删除,不可执行
Group:可读,不可写/删除,不可执行
World:不可读,不可写/删除,不可执行

11.2 目录
对于任何指定的文件,目录中存放有文件名,文件类型,文件存储在硬盘上的地址以及文件的当前大小。目录还存放文件的保护设置的信息,以及文件是何时创建的,何时被最后修改的。

11.2.1 目录树
包含其他目录的目录叫作父目录,被包含的目录叫作子目录。
目录树:展示文件系统的嵌套目录组织的结构。
根目录:包含其他所有目录的最高层目录。
嵌套的目录结构允许存在多个同名文件,但不同目录或子目录下的文件则可以是同名的。
工作目录:当前活动的子目录。

11.2.2 路径名
路径:文件或子目录在文件系统中的位置的文本名称。
绝对路径:从根目录开始,包括所有后继子目录的路径。
相对路径:从当前工作目录开始的路径。
通常用操作系统变量PATH指定这组路径,该变量存放的字符串中包含多个绝对路径名。

11.3 磁盘刻度
磁盘刻度:决定先满足哪个磁盘I/O请求的操作。
寻道时间:读写头到达指定柱面时间(要求更高)
等待时间:盘片旋转到正确的位置的时间。

11.3.1 先到先服务磁盘调度法(FCFS)
按照顺序

11.3.2 最短寻道时间优先磁盘调度法(SSTF)
通过尽可能少的读写头移动满足所有未解决的请求。(每次找最近的)
饿死:早期的请求永远得不到满足。

11.3.3 SCAN磁盘调度法
读写头在轴心和盘片之间来回移动
LOOK磁盘调度算法:读写头只移动到请求的最外面或最里面的柱面。