2019-2020-1学期20192429《网络空间安全专业导论》第五周学习总结
#第十章 操作系统#
10.1 操作系统的角色
- 应用软件(application software): 帮助我们解决现实世界问题(特定)的程序。
- 系统软件(system soffware):基础层上管理计算机系统并与硬件进行交互的程序。
- 操作系统(operating system):系统软件的核心,管理计算机资源并为系统交互提供界面的系统软件。
- 一台计算机通常只有一个活动的操作系统, 在系统运行中负责控制工作。计算机硬件是靠电线连接的,初始时载人永久性存储器(ROM)中存储的一-小组系统指令。这些指令将从二级存储器(通常是硬盘)中载人大部分系统软件。最终将载人操作系统软件的所有关键元素,执行启动程序,提供用户界面,系统就准备就绪了。这个过程叫作引导 计算机 。术语“引导”来自于“靠自己的努力振作起来”这一思想,这也正是计算机开机后它所做的事情。
- 计算机可以具备两个或者更多个操作系统,用户在计算机开机时可以选择使用哪个操作系统。这种配置称为双引导 或多引导 系统。不过,任何时候都只有一个操作系统在控制计算机。
10.1.1 内存、进程与CPU管理 - 多道程序设计(multiprogramming): 同时在主存中驻留多个程序,由它们竞争CPU的技术。
- 内存管理(memory management):了解主存中载有多少个程序以及它们的位置的动作。
- 进程(process): 程序执行过程中的动态表示法。
- 进程管理( process management):了 解活动进程的信息的动作 。
- CPU调度(CPU scheduling):确定主存中的哪个进程可以访问CPU以便执行的动作。
10.1.2 批处理 - 作业:程序和系统指令集合在一起
- 现在术语“批”表示的是一个系统,在这个系统中,程序和系统资源的协作与执行不需用户和程序之间的交互。现代操作系统中的批处理概念允许用户把一组OS命令定义为一个批文件,以控制一个大型程序或一组交互程序的处理。
10.1.3 分时 - 分时(timesharing):多个交互用户同时共享CPU时间的系统。
- 虚拟机(virtual machine):分时系统创建的每个用户都有专有机器的假象。
- 主机(mainframe):一个大型的多用户计算机,通常与早期的分时系统相关。
- 哑终端(dumb terminal):在早期的分时系统中用户用于访问主机的一.套显示器和键盘。
Q:不明白系统的工作原理
Q:为什么用户运行程序时,创建另一个进程,不是已经有一个进程在运行了么
10.1.4 其他OS要素 - 实时系统(real-time system):应用程序的特性决定了响应时间至关重要的系统。
- 响应时间(response time):收到信号和生成响应之间的延迟时间。
10.2 内存管理
操作系统必须采用下列技术:
- 跟踪一个程序驻留在内存的什么位置以及是如何驻留的
- 把逻辑程序地址转换成实际的内存地址
- 逻辑地址(有时又叫做虚拟地址或相对地址)(logical address):对一个存储值的引用,是相对于引用它的程序的。
- 物理地址(physical address):主存储设备中的真实地址。
- 在编译程序时,对标识符(如变量名)的引用将被转化为逻辑地址。当程序最终载入内存时,每个逻辑地址将被转换成对应的物理地址。逻辑地址和物理地址间的映射叫作地址联编。 **把逻辑地址联编到物理地址的时间越迟,得到的灵活度越大 **。逻辑地址使得程序可以在内存中移动,或者每次载入不同的位置。只要知道程序存储的位置,就可以确定任何逻辑地址对应的物理地址。
- 地址联编(address binding):逻辑地址和物理地址间的映射。
10.2.1 单块内存管理 - 单块内存管理( single contiguous memory mangement):把应用程序载人一段连续的内存区域的内存管理方法。
10.2.2 分区内存管理 - 固定分区法(fixed-partition technique ):把内存分成特定数目的分区以载人程序的内存管理方法。
- 动态分区法( dynamic-partition technique):根据容纳程序的需要对内存分区的内存管理方法。
- 基址寄存器(baseregister):存放当前分区的起始地址的寄存器。
- 界限寄存器(bounds register):存放当前分区的长度的寄存器。
- 分配一个新程序给哪个分区的方法
•最先匹配,即把第一个足够容纳程序的分区分配给它。
•最佳匹配,即把最小的能够容纳程序的分区分配给它。
•最差匹配,即把最大的能够容纳程序的分区分配给它。
在固定分区法中,最差匹配没有意义,因为它将浪费较大的分区。最先匹配和最佳匹配适用于固定分区。但在动态分区中,最差匹配常常是最有用的,因为它留下了最大可能的空白分区,可以容纳之后的其他程序。
Q:为什么程序终止,分区表要更新,要反映这个分区是空白的;为什么动态分区中,连续的空白分区被合成为一个大的空白分区 - 分区内存管理同时把几个程序载人内存,从而可以有效地利用主存。但要记住,一个分区必须要能够容纳整个程序。虽然固定分区比动态分区容易管理,但却限制了进来的程序的机会。系统本身可能有足够的空间容纳这些程序。在动态分区中,作业可以在内存中移动,以创建较大的空白分区。这个过程叫作压缩
10.2.3 页式内存管理 - 页式内存管理法( paged memory technique):把进程划分为大小固定的页,载人内存时存储在帧中的内存管理方法。
- 帧(frame):大小固定的一部分主存, 用于存放进程页。
- 页(page):大小固定的一部分进程 ,存储在内存帧中。
- 页映射表(Page Map Table, PMT): 操作系统用于记录页和帧之间的关系的表。
用页面大小除逻辑地址得到的商是页编号,余数是偏移量
注意:有两种逻辑地址是无效的,一种是越过了进程的界限,一种是偏移量大于帧大小 。 - 请求分页( demand paging):页式内存管理法的扩展,只有当页面被引用(请求)时才会被载人内存
- 页面交换(page swap):把一个页面从二级存储设备载人内存,通常会使另一个页面从内存中删除。
- 虚拟内存(virtualmemory):由于整个程序不必同时处于内存而造成的程序大小没有限制的假象。
- 系统颠簸(thrashing): 频繁的页面交换造成的低效处理。
10.3 进程管理
10.3.1 进程状态
- 进程状态(process state):在操作系统的管理下,进程历经的概念性阶段
- 分析在进程的每个状态会发生哪些事情:
- 创建状态,将创建一个新进程。
- 准备就绪状态中,进程没有任何执行障碍。
- 运行状态下的进程是当前CPU执行的进程。
- 等待状态下的进程是当前在等待资源(除了CPU以外的资源)的进程。
- 等待状态下的进程是当前在等待资源(除了CPU以外的资源)的进程。
- 注意:可能同时有多个进程处于准备就绪或等待状态,但只有一个进程处于运行状态。
10.3.2 进程控制块 - 进程控制块(process control block,PCB):操作系统管理进程信息使用的数据结构
- 通常,每个状态由一个PCB列表表示,处于该状态的每个进程对应一个PCB。当进程从一个状态转移到另一个状态时,它对应的PCB也会从一个状态列表中转移到另一个状态列表。新的PCB是在最初创建进程(新状态)的时候创建的,将一直保持到进程终止。
- PCB存储了有关进程的各种信息,包括程序计数器的当前值(说明了进程中下一条要执行的指令)。 如图10-8的生命周期所示,进程在执行过程中可能会被中断多次。每次中断时,它的程序计数器的值将被保存起来,以便当它再次进人运行状态时可以从中断处开始执行。
- PCB还存储了进程在其他所有CPU寄存器中的值。记住,只有一个CPU,因此只有一套CPU寄存器。 这些寄存器存放的是当前执行的进程的值(处于运行状态的进程)。每当--个进程进人了运行状态,当前正在运行的进程的寄存器值将被存人它的PCB,新运行的进程的寄存器值将被载人CPU。这种信息交换叫作上下文切换。
- PCB还要维护关于CPU调度的信息,如操作系统给予进程的优先级。 它还包括内存管理的信息,如(分区系统的)基址寄存器和界限寄存器的值或(页式系统的)页表。最后,PCB还具有核算信息,如账户、时间限制以及迄今为止使用的CPU时间。
10.4 CPU调度
该算法将决定把CPU给予哪个进程,以便它能够运行。 - 非抢先调度(nonpreemptive scheduling):当当前执行的进程自愿放弃了CPU时发生的CPU调度。
- 抢先调度( preemptive scheduling):当操作系统决定照顾另一个进程而抢占当前执行进程的CPU资源时发生的CPU调度。
Q:为什么进程会自愿放弃调度
Q:操作系统如何做出决策照顾另一个进程 - 周转周期(turnaround time):从进程进人准备就绪状态到它最终完成之间的时间间隔,是评估CPU调度算法的标准。进程的平均周转周期越短越好
10.4.1 先到先服务(FCFS) - 在先到先服务(FCFS)调度方法中,进程按照它们到达运行状态的顺序转移到CPU。FCFS调度是非抢先的。一旦进程获得了CPU的访问权,那么除非它强制请求转入等待状态(如请求其他进程正在使用的设备),否则将一直占用CPU。
10.4.2 最短作业优先(SJN) - 最短作业优先( SJN) CPU调度算法将查看所有处于准备就绪状态的进程,并分派一个具有最短服务时间的。和FCFS一样,它通常被实现为非抢先算法
- 注意,SJN算法是基于未来信息的。也就是说,它将把CPU给予执行时需要最短时间的作业。这个时间基本上是不可能确定的。因此要运行这个算法,每个进程的服务时间是操作系统根据各种概率因素和作业类型估算的。但如果估算错误,算法的前提就崩溃了,它的性能将恶化。
SJN算法是可证明最佳的,意思是如果知道每个作业的服务时间,那么相对于其他算法来说,SJN算法能使所有作业生成最短的周转周期
10.4.3 轮询法 - 定义:将把处理的时间平均分配给所有准备就绪的进程
- 时间片(time slice);在CPU轮询算法中分配给每个进程的时间量。
- 注意:轮询法是抢先的,时间片到期,进程就会被强制移出CPU。
- 最公平的算法
## 第十一章 文件系统和目录 ##
11.1 文件系统
- 硬盘上的数据都存储在文件中,这是在电子媒介上组织数据的一种机制。
- 文件是可以写入二级存储设备的最小数据量,用文件组织所有信息呈现出一个统一的数据存储视图
- 文件(file):数据的有名集合,用于组织二级存储设备
- 文件系统(file system):操作系统为它管理的文件提供的逻辑视图
- 目录(directory):文件的有名分组
Q:这里的有名指的是什么?
11.1.1 文本文件和二进制文件 - 文本文件(text file):包含字符的文件
- 二进制文件(binay file):包含特定格式的数据的文件,要求给位串一个特定的解释
Q:什么是格式化位串的方式 - 用高级语言编写的程序也会被储存位文本文件,有时组织文件叫作源文件
11.1.2 文件类型 - 大多数文件都包含有特定类型的信息,大多数操作系统都能识别一系列特定的文件类型
- 文件类型(file type):文件(如Java程序或Microsoft文档)中存放的关于类型的信息
- 文件扩展名(file extension):文件中说明文件类型的部分
- 文件扩展名只说明了文件中存放的是什么。你可以任意命名我(只要文件名中使用的字符在操作系统允许的范围之内)
11.1.3 文件操作
在操作系统的协助下,可以对文件进行下列操作:
- 创建文件
- 删除文件
- 打开文件
- 关闭文件
- 从文件中读取数据
- 把数据写入文件
- 重定位文件中的当前文件指针
- 把数据附加到文件结尾
- 删减文件(删除它的内容)
- 重命名文件
- 复制文件
Q:文件指针到底是什么?
Q:该怎么理解剪切这个功能?
- 操作系统用两种方式跟踪二级存储设备。它维护了一个表以说明哪些内存块是空的(也就是说是可用的),还为每个目录维护一个表,以记录该目录下的文件的信息。
11.1.4 文件访问 - 顺序文件访问(sequential file access):以线性方式访问文件中的数据的方法
- 直接文件访问(direct access):通过制定逻辑记录编号直接访问文件中的数据的方法(概念性)
11.1.5 文件保护
在多用户系统中,文件保护的重要性居于首要地位
11.2 目录树 - 目录树(directory tree):展示文件系统的嵌套目录组织的结构
- 根目录(root directory):包含其他所有目录 的最高层目录
Q:访问文件时会常常遇到没有root的问题,这里的root是指我没有最高访问权限么?
- 一个目录可以包含多个子目录;另外,子目录也可以有主见的子目录,这样就形成了一种分级结构。
- 任何一个目录下的所有文件的名字必须是唯一的,但不同目录或子目录下的文件则可以是同名的。这些文件存放的数据可能相同,也可能不同,我们所知道的只是它们的名字相同
- 工作目录(working directory):当前活动的子目录
11.2.2 路径名 - 路径(path):文件或子目录在文件系统中的位置的文本名称。
- 绝对路径(absolute path):从根目录开始,包括所有后继子目录的路径、
- 相对路径(relative path):从当前目录开始的路径
- 绝对路径:每个路径都从目录开始,沿着目录结构向下推进。每个子目录都由分隔。
- 注意:一个路径既可以说明一个特定的文档,也可以说明整个子目录
- 相对路径:相对于当前位置,可以从当前目录下开始路径。任何有效的相对路径的第一部分都在工作目录中
- 使用相对路径,有时需要返回上一层。注意:使用绝对路径不会遇到这种情况
Q:为什么绝对路径不会遇到这种情况 - 大多数操作系统使用两个点(..)来表示父目录(一个点用于表示当前工作目录)
11.3 磁盘调度 - 实践证明,把数据传入或传出二级存储设备是一般计算机系统的首要瓶颈
- 由于二级I/O是一般计算机系统中最慢的部分,所以访问磁盘驱动器上的信息的方法对于外界系统至关重要
- 磁盘调度(disk scheduling):决定先满足哪个磁盘I/O请求的操作
- 最重要的一点是在任意时刻都有一组读写头在所有盘片的特定柱面上盘旋。寻到时间的要求更高,因此它是磁盘调度算法处理的重点
11.3.1 先到先服务磁盘调度法(最容易) - FCFS算法按照请求到达的顺序处理它们,并不考虑读写头的当前位置
11.3.2 最短寻道时间有限磁盘调度 - 这种算法将通过尽可能少的读写头移动满足所有未解决的请求。这种方法可能会在满足一个请求后改变读写头的移动方向
- 这种方法会带来一个重要问题:假设已有的请求还未解决,而新的请求仍然源源不断地到来,而且新的请求总是比早期的请求所需要的柱面离当前位置更近。那么从理论上来说,早期的请求将永远得不到满足,因为不断到来的请求总有优先权。这种情况叫作饿死。先到先服务磁盘调度算法不会出现饿死的情况
11.3.3 SCAN磁盘调度 - 读写头向轴心移动,然后再向盘片边缘移动,就这样在轴心和盘片边缘之间来回移动
- 该算法决定读写头最初移动的方向
- 它们可能在早期的请求之前收到服务,也可能在早期请求之后,这是由读写头当前的位置和它们移动的方向决定的。如果新的请求恰好在读写头到达柱面之前到达,它将被立刻处理。如果新的请求是在读写头刚经过那个柱面之后到达的,那么它必须等待读写头再次返回。不可能出现饿死现象,因为美国柱面都会被依次处理到。
- 另一种变体则是最小化到轴心和到盘片边缘的移动极限。读写头只移动到请求的最外面或最里面的柱面,不再移动到盘片边缘或轴心。在移动到下一个请求的柱面之前,有种算法会检查未处理的请求的列表,判断当前移动到的方向是否正确。这种变体叫作LOOK磁盘调度算法,因为它会预先判断读写头是否应该继续按照当前的方向移动。