20212306张阳

导航

 

2021-2022-1学期20212306《计算机科学概论》第五周学习总结

学习内容:《计算机科学概论》第10,11章

第10章:操作系统

计算机的操作系统把硬件和软件紧密结合在一起,它是其他软件依附的基础,并且允许我们编写与机器进行交互的程序。

10.1操作系统的角色

现代软件可分为两类:应用软件,系统软件(他们反映了不同程序设计的目的)

应用软件:是为了满足特定需求,解决现实世界问题而编写的。
系统软件:负责在基础层上管理计算机系统,它为创建和运行应用软件提供了工具和环境。

系统软件通常直接与硬件交互,提供的功能比硬件自身提供的多。

计算机的操作系统:是系统软件的核心。操作系统负责管理计算机的资源并提供人机交互的界面。

操作系统负责管理硬件资源,它允许应用软件直接或通过其他系统软件访问系统资源。它提供了人机交互界面。
一台计算机通常只有一个活动的操作系统,在系统运行中负责控制工作。计算机硬件是靠电线连接的,初始时载入ROM中存储的一小组系统指令。这些指令将从二级存储器(通常是硬盘)中载入大部分系统软件。最终将载入操作系统软件的所有关键元素,执行启动程序,提供用户界面,这个过程叫做引导计算机
计算机可以具备两个或者多个操作系统,开机时候可以选择用哪一个——这个配置叫做双引导或多引导系统,不过,任何时候都只有一个操作系统在控制计算机
至于手机,目前安卓和iOS已经统治了当前移动操作系统市场。
操作系统的各种角色通常都围绕着一个中心思想——“良好的共享”

10.1.1内存,进程与CPU管理

多道程序设计:同时在主存中驻留多个程序,由他们竞争CPU的技术。

现代计算机都采用多道程序设计技术,操作系统必须执行内存管理,以明确内存中有哪些程序以及他们驻留在内存中什么位置。

内存管理:了解主存中载有多少个程序以及他们的位置的动作。

进程:持续执行过程中的动态表示法。(可以将他定义为正在执行的程序。)

程序只是一套静态指令,进程则是动态的实体。

进程管理:了解活动进程的信息的动作
CPU调度:确定主存中的哪个进程可以访问CPU以便执行的动作

操作系统自身也是必须执行的程序,所以在内存中也要和其他系统软件及应用程序一起管理和维护OS进程。执行OS的CPU就是执行其他程序的CPU,因此也要把OS进程排入竞争CPU的队列中。

10.1.2批处理

现代操作系统中的批处理概念允许用户把一组OS命令定义为一个批文件,以控制一个大型程序或一组交互程序的处理。尽管目前使用的大多数计算机是交互式的,但有写作业仍然会自行批处理。

10.1.3分时

分时系统允许多个用户同时与计算机进行交互。多道程序设计法允许同时有多个活动进程,从而给了程序员直接与计算机系统交互且仍然共享其资源的能力。
在分时系统中,每个用户都有自己的虚拟机,可以使用虚拟机中的所有系统资源,但其实这些资源是由多个用户共享的。分时系统最初由一台主机和一组连接到主机的哑终端构成。

分时:多个用户同时共享CPU时间的系统
虚拟机:分时系统从创建的每个用户都有专用机器的假象
主机:一个大型的多用户计算机,通常与早期的分时系统有关
哑终端:在早期的分时系统中用户用于访问主机的一套显示器和键盘

当系统负荷过重时,每个用户的机器看起来都变慢了。
虽然主机是过时的概念,但是分时不是。目前许多台式计算机运行的操作系统都以分式的方式支持多个用户。

10.1.4其他OS元素

大型机变成小型机,小型机变成微型机,计算技术正在不断改进。微型机第一次采用单个的集成芯片作为CPU,从而引发了PC的想法。
操作系统需要支持实时系统的,实时系统就是必须给用户提供最少响应时间的系统。必须严格控制收到信号和生成响应之间的延迟。尽管所有操作系统都知道响应时间的重要性,但是实时操作系统则更加致力于优化该方面。

实时系统:应用程序的特性决定了响应时间至关重要的系统
响应时间:收到信号和生成响应之间的延迟时间

10.2内存管理

程序中到处都是对变量的引用和对程序其他部分的引用。我们如何知道使用的是什么地址呢?
解决方法是使用两种地址逻辑地址和物理地址

逻辑地址:(虚拟/相对地址)是指定了一个普通地址的值,这个地址是相对于程序而不是相对于主存
物理地址:是主存储设备中的真实地址。

在编译程序时,对标识符的引用将会被转化为逻辑地址。当程序最终被载入内存时,每个逻辑地址将被转换成对应的物理地址。

物理地址和逻辑地址之间的映射叫做地址联编

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

10.2.1单块内存管理

单块内存管理:把应用程序载入一段连续的内存区域的内存管理方法

整个应用程序被载入了一大块内存中,除了在操作系统外,一次只能处理一个程序。进行地址联编所要做的只是把操作系统的地址考虑在内。
在这种内存管理机制中,逻辑地址只是一个相对于程序起始位置的整数值。要生成物理地址,只要用逻辑地址加上程序在物理主存中的起始地址即可。
单块内存管理法的优点在于实现和管理都很简单,但是大大浪费了内存空间和CPU时间。

10.2.2分区管理内存

一旦多个程序在内存中,操作系统的工作就是确保一个程序不会访问另一个程序的内存空间。
有两种划分内存的方法:固定分区法,动态分区法
固定分区法:主存将会被划分为特定数目的分区。在操作系统初始引导时,他们的大小就固定了。
动态分区法:根据程序需要创建分区。但在动态分区中,地址信息会随着程序的载入和清除而改变。
无论是固定分区还是动态分区,任何时候内存都是被划分为一组分区。二者的地址联编基本上是一样的。
OS处理地址转换细节的方式有很多,一种方法是使用CPU中的两个专用寄存器帮助管理寻址。当CPU开始运行一个程序时,OS将把程序的分区起始地址存储到基址寄存器中,分区的长度将被存入界限寄存器,当逻辑地址被引用时,首先它将与界限寄存器中的值进行比较,确保该引用属于分配给程序中的内存空间。如果是这样,那么逻辑地址的值将被加到基址寄存器中的值上以生成物理地址。
对于一个新程序,下面有三种常见的分区选择法:
·最先匹配:把第一个足够容纳程序的分区分配给它。
·最佳匹配:把最小的能够容纳程序的分区分配给它。
·最差匹配:把最大的能够容纳程序的分区分配给它。
在固定分区法中,最差匹配没有意义,因为他浪费了较大的分区,最佳匹配和最先匹配适用于固定分区;
动态分区中,最差匹配常常是最有用的,因为他留下了最大可能的空白分区,可以容纳之后的其他程序。
在动态分区中,作业可以在内存中移动以创建较大的空白分区,这个过程叫做压缩

10.2.3页式内存管理

相关概念:

页式内存管理:把进程划分为大小固定的页,载入内存时存储在帧中的内存管理方法。
帧:大小固定的一部分主存,用于存放进程页。
页:大小固定的一部分进程,存储在内存帧中。

程序执行时,进程的页将会被载入分散在内存中的各个未使用的帧中,因此一个进程的页可能是四处散落的无序的,与其他进程道德页混合在一起。为了掌握进程页的分布,我们需要“页映射表”,把每个页映射到载入它的帧。

页映射表:操作系统用于记录页和帧之间的关系的表。

页式内存管理系统中的逻辑地址也是从一个相对于程序起始点的整数值开始。但这个地址转换成两个值——页编号和偏移量。用页面大小除逻辑地址得到的商就是页编号,余数是偏移量,逻辑地址通常被表示为<页编号,偏移量>。
要生成物理地址,首先需要查看PMT,找到页所在的帧的编号,然后用帧编号乘以帧大小再加上偏移量即可。但是,有两种逻辑地址是无效的,一种是越过了进程的界限,一种是偏移量大于帧大小。
分页的优点在于不必再把进程存储在连续的内存空间中。

请求分页:页式内存管理法的扩展,只有当页面被引用(请求)时才会被载入内存。
页面交换:把一个界面从二级存储设备载入内存当中,通常会使另一个页面从内存中删除。

虚拟内存:由于整个程序不必同时处于内存而造成的程序大小没有限制的假象。
系统颠簸:连续页面交替造成的低效处理。

10.3进程管理

10.3.1进程状态

在计算机系统的管理下,进程会历经几种状态,即进入系统、准备执行、执行、等待资源以及执行结束。

进程状态:在操作系统的管理下,进程历经的概念性阶段。

下面我们来看一下每个状态会发生哪些事情
创建阶段,将创建一个新进程。例如,可能是由用户登录到一个分时系统创建了一个登录进程,也可能是在用户提交程序后创建了一个应用进程,或者是操作系统为了完成某个特定的系统任务而创建了一个系统进程。
准备就绪状态中,进程没有任何执行障碍。也就是说,准备就绪状态下的进程并不是在等待某个事件发生,也不是在等待从二级存储设备载入数据,而只是等待使用CPU的机会。
运行状态下的进程是当前CPU执行的进程。它的指令将按照读取-执行周期被处理。
等待状态下的进程是当前在等待资源(除了CPU以外的资源)的进程。例如,一个处于等待状态的进程可能在等待从二级存储设备载入一个页面,也可能在等待另一个进程给它发送信号,以便继续执行。
终止状态下的进程已经完成了它的执行,不再是活动进程。此时,操作系统不再需要维护有关这个进程的信息。

可能同时有多个进程处于准备就绪或等待状态,但是只能有一个进程处于运行状态。
在运行过程中,进程可能被操作系统中断,以便另一个进程能够获得CPU资源。

10.3.2进程控制块(PCB)

操作系统必须为每个活动进程管理大量的数据。这些数据通常存储在称为进程控制块的数据结构中。
通常每个状态由一个PCB列表表示,处于该状态的每个进程对应一个PCB。当进程状态转移时,PCB也会相应的转移,新的PCB是在当初创建进程的时候创建的,将一直保持到进程中止。
PCB中存储了有关进程的各种信息,包括 程序计数器的当前值(说明了进程中下一条要执行的指令。)PCB还存储了进程在其他所有CPU寄存器中的值。只有一套一套CPU寄存器

上下文切换:当一个进程移出CPU,另一个进程取代它时发生在寄存器信息交换。

10.4CPU调度

CPU调度就是确定把哪个处于准备就绪状态的进程移入运行状态。
CPU调度分为以下两类

非抢先调度:当当前执行的进程自愿放弃了CPU时发生的CPU调度。
抢先调度:当操作系统决定照顾另一个进程而抢占当前执行进程的CPU资源时发生的CPU调度。

通常用特殊的标准来评估调度算法。

周转周期:从进程进入准备就绪状态到它最终完成之时的时间间隔,是评估CPU调度算法的标准。

10.4.1先到先服务(FCFS)

这是非抢先的,一旦获得访问权,除非强制请求转入等待状态,否则将一直占用CPU。
每个进程的周转周期是它的完成时间减去到达时间。

10.4.2最短作业优先(SJN)

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

10.4.3轮询法

CPU的轮询法将把处理时间平均分配给所有准备就绪的过程。该算法建立单独的时间片。

时间片:在CPU轮询算法中分配给每个进程的时间量。
轮询算法是抢先的,时间片到期进程就会被强制移出CPU.
CPU的轮询算法可能是应用最广泛的,他一般支持所有作业,被认为是最公平的算法。

第十一章:文件系统和目录

11.1文件系统

文件系统是操作系统为它管理的文件提供的逻辑视图,通常用目录组织文件。一般来说文件存放的是程序或数据。有些文件格式严格,有些文件格式灵活

11.1.1文本文件和二进制文件

所有文件都可以被归为文本文件和二进制文件

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

11.1.2文件类型

文件类型:文件中存放的关于类型的信息。
文件扩展名:文件名中说明文件类型的部分。

改变文件扩展名不会改变文件中的数据或它的内部格式。如果要在专用的程序中打开一个扩展名错误的文件,只会得到错误信息。

11.1.3文件操作

操作系统用两种方式跟踪二级存储设备。他维护了一个表以说明哪些内存块是空的,还为每个目录维护了一个表,以记录该目录下的文件信息。要创建一个文件,操作系统需要在文件系统中为文件内容找一块可用空间,然后把该文件条目加到正确的目录中,记录文件的名字和位置;要删除一个文件,操作系统要声明该文件使用的空间现在是空的,并删除目录表中相应条目。

11.1.4文件访问

文件访问类型是在创建文件时设置的。

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

直接访问在使用大量数据的某个特定情况下很有用。
文件访问类型定义了重定位当前文件指针的方法,它们与存储文件的设备的物理限制无关。

11.1.5文件保护

不同操作系统实现文件保护机制的方式不同,但目的相同。

11.2目录

目录是文件的有名集合,是一种按照逻辑方式对文件分组的方法。
大多数操作系统都用文件表示目录。目录文件存放的是关于目录中的其他文件的数据。对于任何指定的文件,目录中存放有文件名、文件类型、文件存储在硬盘上的地址以及文件的当前大小。一旦建立了目录文件,它就必须支持对目录文件的一般操作。

11.2.1目录树

一个文件目录还可以包含另一个目录,包含其他目录的目录叫做父目录,被包含的目录叫做子目录。一个目录可以包含多个子目录,另外子目录也可以有子目录,这样就形成了分级结构。文件系统通常被看作目录树,最高层叫做根目录
个人计算机通常用文件夹来表示目录结构,这样就构成了包容的思想。无论何时你都可以认为自己在文件系统中的某个特定位置工作,这个子目录叫做当前工作目录,只要在文件系统中移动,当前工作目录就会改变。

工作目录:当前活动的子目录

11.2.2路径名

要用文本指定一个特定文件,必须说明该文件的路径,即找到这个文件所必须经过一系列的目录。路径是可以绝对的也可以是相对的

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

11.3磁盘调度

最重要的二级存储设备是磁盘驱动器。实践证明把数据传入或传出二级存储设备是一般的计算机系统的首要瓶颈。

磁盘调度:决定先满足哪个磁盘I/O请求操作

11.3.1先到先服务磁盘调度法

虽然不是最有效的磁盘调度法,但是是最容易实现的
FCFS算法按照请求到达的顺序处理它们,并不考虑读写头的当前位置。

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

通过尽可能少的读写头移动满足所有未解决的请求。这种方法可能在满足一个请求后改变读写头的移动方向。
但是存在的问题是源源不断的请求过来,那么早期的请求有可能永远得不到满足,就会“饿死”,但是先到先服务磁盘调度法中不会饿死

11.3.3SCAN磁盘调度法

这种机制下对新的请求没有任何特殊处理。他们受到服务决定于读写头当前的位置和他们移动的方向。
不会出现饿死的情况,因为每个柱面都会被依次处理到。

总结与反思

第十章内容部分比较抽象,需要好好理解,在学习过程中,要广泛查找资料,认真看每一个字,弄清楚每一个词才能理解书中到底要表达什么,一个概念不理解或是一个词没弄明白,对接下来的阅读都会有极大的影响。第十一章内容就开始比较直观起来,由于是可以直接接触到的,就不会那么抽象,就更加好学一点。

posted on 2021-10-31 20:07  20212306张阳  阅读(187)  评论(0)    收藏  举报