吉林大学操作系统概论

什么是操作系统

操作系统是一组用于控制和管理计算机系统硬件和软件资源,合理地对各类作业进行调度,以及方便用户使用的程序集合。

操作系统是运行在内核态 kernel mode 中的软件。

操作系统的基本特征

并发

并发和并行区别:
并发:计算机在宏观过程中执行多个程序,但是在微观过程中,处理器制止行了一个程序。
并行:在同一时刻执行多个程序。

共享

计算机系统中的资源被多个进程共用。

异步

进程以不可预知的速度向前推进。

虚拟

把一个物理上的实体变为若干个逻辑上的对应物。

最基本的特征只有并发和共享。

操作系统概念

进程

为什么要引入进程

为了更好地描述和控制程序并发执行,实现操作系统的并发性和共享性。

定义

进程是计算机中的程序关于某数据集合上的一次运行活动,进程是系统进行资源分配和调度的基本单位。

一个进程就是一个正在执行程序的实例,实际上真正的CPU在各进程之间来回切换。

组成

  1. PCB(Process Control Block):保存进程运行期间相关的数据,是进程存在的唯一标志
  2. 程序段:能被进程调度到CPU的代码;
  3. 数据段:存放数据。

进程的状态

  1. 运行态:进程正在占用CPU;
  2. 就绪态:进程以处于准备运行的状态,即进程获得了除处理机外的一切所需资源,一旦得到处理机即可运行;
  3. 阻塞态:进程由于等待某一时间不能享用CPU;
  4. 创建态:进程正在被创建;
  5. 结束态:进程正在从系统消失。

线程

为什么要引入进程

为了更好地使用多道程序并发执行,提高资源利用率和系统吞吐量。

定义

线程是程序执行的最小单位。
线程是CPU调度的基本单位。
每个线程都有自己的堆栈。

比较程序、进程的区别

答:
9. 进程是动态的,程序是静态的,程序时有序代码的集合;
10. 进程是程序的执行;
11. 进程是暂时的,程序时永久的,进程是一个状态变化的过程,程序可以长久保存;
12. 进程和程序的组成不同,进程的组成包括程序、数据和CPB;
13. 通过多次执行,一个程序可以对应多个进程;
14. 通过调用关系,一个进程可以包括多个程序。

与进程相比,线程的优势

  1. 线程之间切换快;
  2. 线程比进程更轻量级,所以他们比进程更快创建或撤销;
  3. 线程间的通讯较容易。

调度

概念

是对处理机进行分配,即从就绪队列中按照一定的算法(公平、高效)选择一个进程并将处理机分配给他运行,以实现进程并发地执行。

分类

  1. 高级调度(作业调度)
  2. 中级调度(内存对换)
  3. 低级调度(进程调度)

调度方式

  1. 抢占式
  2. 非抢占式

调度准则

  1. CPU利用率:CPU处于忙状态的百分比;
  2. 吞吐量:每小时完成的作业数量;
  3. 周转时间:从一个批处理作业提交时刻开始直到该作业完成时刻为止的平均时长;
  4. 响应时间;
  5. 等待时间=作业开始时间-进入等待队列时间;
  6. 平均带权周转时间=(∑(完成时间-进入等待队列时间)/运行时间)/作业个数。

算法

  1. FCFS算法(先来先服务,first-come, first-served);

  2. 最短作业优先;

  3. 优先级调度算法(抢占式、非抢占式);

  4. 时间片轮转算法:每个进程被分配一个时间段,称之为时间片。时间片是分配处理及资源的基本时间单位(既不照顾短作业,又不照顾长作业,很公平);

  5. 高响应比优先调度算法:

    响应比=(等待时间+运行时间)/运行时间=1+等待时间/运行时间;

    响应比相同按照先来先服务处理。
    最高响应比优先算法等待时间相同时,要求服务时间越短,优先权越高,因而该算法有利于短作业;对渔场作业,作业的优先级可以随着等待时间的增加而提高,当其等待时间足够长时,其优先级会提高到很高,从而获得处理机,因而该算法既有利于短作业又兼顾了长作业。

  6. 多级反馈队列调度算法。

进程同步

引入原因

协调进程之间的相互制约关系。

制约关系

  1. 同步:完成了进程A才能进行B,完成了进程B才能进行C;
  2. 互斥:进程A运行了,进程B就不能运行。

相关概念

  1. 临界资源:一次金云熙一个进程使用的资源;
  2. 临界区:每个进程中访问临界资源那段程序

临界区互斥

原则

  1. 空闲则入:没有进程在临界区时,任何进程可进入,且一次只许进一个进程;
  2. 忙则等待:有进程在临界区时,剩下的需要等待才能进入;
  3. 有限等待:进入临界区的进程要在有限时间内退出,一边等待的进程能够进入临界区;
  4. 让权等待:如果进程不能进入自己的临界区,则应该让出CPU,避免进程出现“忙等”现象。

基本方法

信号量 利用PV操作实现互斥

信号量m,是可用资源量,是低级通信工具;
m=0代表没有可用资源,也没有等待进程;
m<0几个代表有几个等待进程,如-3就是有3个等待进程。

P–使用
V–放回
PV操作是一种低级进程通信原语。

实现进程同步的机制

在操作系统中,实现进程同步的机制有:信号量机制管程机制

不同问题

读者写者问题

https://www.bilibili.com/video/BV1tA411W7RU?spm_id_from=333.337.search-card.all.click&vd_source=4b193bf064c21c18a31ea22828cb0c56

死锁

产生的原因

非剥夺资源的竞争和进程的不恰当推进顺序。

定义

如果一个进程集合中的每个进程都在等待只能由该进程集合中的其他进程才能引发的事件,那么,该进程集合是死锁的。
多个进程因资源竞争而造成的一种僵局,如果没有外力,这些进程将无法推进。

产生死锁的四个必要条件

  1. 互斥条件:每个资源要么已经分配给了一个进程,要么就是可用的;
  2. 占有和等待条件:已经得到了某个资源的进程可以再申请别的资源;
  3. 不可抢占条件:已经分配给一个进程的资源不能强制性地被抢占,它只能被占有他的进程显式地释放;
  4. 环路等待条件:死锁发生时,系统中一定有两个或两个以上的进程组成的一条环路,该环路中的每个进程都在等待着下一个进程所占有的资源。
    四所发生时,这四个条件一定是同时满足的。

解决方法

  1. 预防死锁:
    a. 破坏互斥条件
    b. 破坏占有并等待条件
    c. 破坏不可抢占条件
    d. 破坏环路等待条件
  2. 避免死锁:安全状态(安全状态状态一定不发生死锁、不安全状态可能发生死锁)、银行家算法
  3. 检测死锁:利用死锁定理;
  4. 解除死锁:资源剥夺法、撤销进程法、进程回退法。

不会发生死锁

进程数小于资源数,则不会发生死锁的公式为:
最多申请资源数=⌈资源总数/进程数⌉

内存管理

引入目的

更好地支持多道程序的并发执行,提高系统性能

主要功能

  1. 内存空间的分配和回收;
  2. 存储的保护和共享:保证各道作业在各自的存储空间内运行,互不干扰;
  3. 地址转换:在多道程序环境下,程序中的逻辑地址和内存中的物理地址不可能一致,因此存储管理必须提供地址变换功能,把逻辑地址转换成相应的物理地址;
  4. 内存扩容:利用虚拟存储技术或自动覆盖技术,从逻辑上扩充内存。

用户程序的主要处理阶段

  1. 编辑:创建源文件;
  2. 编译:由编译程序将用户源代码编译成若干目标模块,生成目标文件;
  3. 连接:由连接程序将编译后形成的一组目标模块以及所需的库函数连接到一起,形成一个完整的装入模块,生成可执行文件;
  4. 装入:由装入程序将装入模块装入内存运行;
  5. 运行:得到结果。

相关概念

程序的装入

  1. 绝对装入:
    在编译时,如果知道程序将驻留在内存的什么位置,那么,编译程序将产生绝对地址的目标代码。即:按照物理内存的位置赋予实际的物理地址。
    优点:在时间效率上很高;
    缺点:
    a. 由于内存大小限制,能装入内存并发执行的进程数大大减少;
    b. 编译程序必须知道内存的当前空闲地址部分和其地址,而在多通道程序下,编译程序根本不可能知道当前空闲地址的部分,因而绝对装入方式只适合于单道程序环境。
  2. 静态重定位:
    即在程序装入对目标代码装入内存的程序中完成,是指在程序开始运行前,程序中指令和数据的各个地址均已完成重定位,即完成虚拟地址到内存地址映射。地址变换通常是在装入时一次完成的,以后不再改变
    优点:不需要硬件支持(重定位寄存器);
    缺点:程序在静态重定位之后就不能在内存中移动了,并且要求程序的存储空间是连续的。
  3. 动态重定位:
    把地址转换推迟到真正要执行时才进行。但这种方式需要硬件支持,也就是重定位寄存器的支持,否则会影响指令的执行速度。
    优点:可以解决碎片问题。(因为不需要像静态重定位一样要求争端程序装入,每个模块之间的存储区域不一定需要相连,只需要有自己的重定位寄存器就行)
    缺点:需要硬件支持。

程序的连接

  1. 静态链接:在程序运行之前,先将各目标模块及他们所需的库函数连接成一个完整的可执行程序,以后不再拆开;
  2. 装入时连接:将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边连接的连接方式;
  3. 运行时连接:对某些目标模块的连接,是在程序执行中需要该目标模块时,才对它进行连接。其优点是便于修改和更新,以便于实现对目标模块的共享。

地址空间

  1. 逻辑地址空间:通俗的说,就是方便CPU看的地址;
  2. 物理地址空间:在磁盘中存在的真实地址。
    比如有一段代码我是按照0号地址给总代码–1号地址给分代码–2号地址给总代码的逻辑顺序编排的,所以逻辑地址的0号、1号、2号分别有我的代码;
    但是,逻辑代码进了计算机中,肯定不可能是整个计算机的0号、1号、2号,那他们这些代码块会被分到哪里,我们也不清楚,可能是114514号,4399号,100086号,这些号对用户而言杂乱无章,但是就是物理地址,通俗一点讲,就是给计算机存储底层看的。

例:设有8页的逻辑空间,每页有1024字节,他们被映射为32块的物理存储区中,那么,逻辑地址的有效位是_____位,物理地址至少是_____位。
解析:逻辑地址有效位是:81024B=912B=2^13,13位。(逻辑地址=页号+页内地址)
物理地址是32
1024B=2^15,15位。
核心点是逻辑地址映射成物理地址的时候,页内偏移量不变

连续分配管理方式

  1. 单一连续分配:分配到内存固定的区域,适合单用户/单任务的操作系统;
  2. 固定分区分配:分配到内存不同的固定区域,分区可以相等可以不等,但是要求一定是固定的;
  3. 动态分区分配:按照程序的需要进行动态地划分;
    动态分区的分配策略算法:
    a. 首次适应:空闲分区以地址递增的次序连接。分配内存时顺序查找,找到大小能满足要求的一个空闲分区;
    b. 最佳适应:空闲分区按容量递增的方式形成分区链,找到第一个能满足要求的空闲分区;
    c. 最坏适应:空闲分区按容量递减的次序连接。找到第一个能满足要求的空闲分区,即挑选出最大的分区;
    d. 临近适应:由首次适应算法演变而成。不同之处是,分配内存是从上次查找结束位置开始查找。

连续分配管理方式

最大的好处就是非连续三个字,是解决了单一分区、固定分区、动态分区中必须要连续分配的弊端,因为连续分配可能会出现很多的外部碎片,导致空间不能够充分被利用。

  1. 基本分页式存储管理:
    将内存空间分成一个个大小相等的分区(比如:每个分区4KB),每个分区就是一个“页框”,或称“页帧”、“内存块”、“物理块”。每个页框有一个编号,即“页框号”从0开始。
    将用户进程的地址空间也分为页框大小相等的一个个区域,称为“页”或者“页面”。每个页面也有一个编号,即“页号”,页号也是从0开始。
    O.S以页框为单位为各个进程分配内存空间。进程的每个页面分别放入同一个页框中。也就是说,进程的页面和内存的页框有一一对应的关系。各个页面不必连续存放,也不必按先后顺序来,可以放到不相邻的各个页框中。
    页表在内存中,快表不在内存中。
    逻辑地址=页号+页内地址,逻辑地址通过页号在页表中找到对应的块号,块号加上页内地址就是物理地址!
    所以在无快表的基本分页式存储管理中,每次从内存中取指令或取操作数,如果没有缺页中断的话,至少要访问两次:从页表取一次,再根据页表取出来的地址再取内存中对应的指令或操作数。
  2. 基本分段式存储管理:
    在分段存储管理方式中,作业的地址空间被划分为若干个段(大小可以不等),每个段定义了一组逻辑信息。其中的核心运作方式和分页式存储管理相同,只是页表换成了段表。
  3. 段页式存储管理:段试+页试,基本不考察。

页和段的主要区别

  1. 页是信息的物理单位,以削减内存零头,提高内存利用率为目的,而不是用户的需求;
    段是信息的逻辑单位,具有相对完整的含义,是为了满足用户的需求;
  2. 页的大小固定,由系统确定;
    段的大小不固定,决定于用户编写的程序。

内存扩充

  1. 覆盖(同一程序或进程中)
    将程序分成多个段(模块),常用的段常驻内存,不常用的段在需要时调入内存;
  2. 交换(不同进程/作业之间进行)
    内存空间紧张时,系统将内存中某些进程暂时换出外存,把外存中某些已具备运行条件的进程换入内存。(进程在内存和磁盘之间动态调度)
  3. 虚拟内存
    a. 引入原因:在逻辑上扩容内存
    b. 组成部分:页表机制、缺页中断、地址变换机制、内存与外存
    c. 整体流程:CPU需要取地址,首先访问页表(页表包含页号和块号两部分),如果在页表中找到了,那么利用地址变换机制,变成真正的物理地址,计算机通过寻找该物理地址找到自己需要的资源。
    如果发现页表没有自己想要的页表项,那么会触发缺页中断(缺页中断就是要访问的页不在主存,需要操作系统将其调入主存后再进行访问。从外存调入内存的过程,如果页表满了,需要从满了的页表项中进行替换,这就是我们说的页面替换算法。

页面置换算法

页面置换算法练习题
讲的非常好

  1. 先进先出页面置换算法 (FIFO):淘汰最先进入内存的页面 (3个内存块都为空3次缺页中断)
    注:对于FIFO页面淘汰算法,有时增加分配给作业的可用内存块数,它的缺页次数反而上升,通常称为异常现象
  2. 最近最久末用页面置换算法 (LRU):总是把最长时间末被访问过的页面淘汰出去(需要寄存器和栈)
  3. 最近最少用页面置换算法 (clock):总是把当前使用的最少的页面淘汰出去
  4. 最优(最佳) 页面置换算法(OPT):被淘汰的页面将是在未来最长时间内不再被访问的页面(理论上,不会实现)
    注意:页面淘汰是由缺页中断引!起的,但缺页中断不见得一定引起页面淘汰
  5. CLOCK置换算法

其他知识

  1. 虚拟存储器具有的主要特征为多次性对换性虚拟性
  2. 也是虚拟存储管理的主要特点是:不要求将作业同时全部装入到内存的连续区域,可以需要什么装什么。

文件系统

概念

文件是以计算机硬盘为载体的存储在计算机上的信息集合。而文件系统就是操作系统中负责操纵和管理文件的一整套设施,它实现文件的共
享和保护,方便用户〝按名存取〞。

功能

文件管理、目录管理、文件空间管理、文件共享和保护、提供方便的接口。

其他

  1. 影响文件安全的主要因素:人为因素;系统因素;自然因素;
  2. 常用的文件存取方法有两种:顺序存取和随机存取;
  3. 文件系统在创建一个文件时,为他建立一个文件目录项(FCB)。一个文件对应一个FCB。

文件的逻辑结构

  1. 无结构文件(流式文件)
    无结构文件是最简单的文件组织形式。无结构文件将数据按顺序组织成记录并积累保存,它是有序相关信息项的集合,以字节(Byte)为单位。
    由于无结构文件没有结构,因而对记录的访问只能通过穷举搜索的方式,故这种文件形式对大多数应用不适用。但字符流的无结构文件管理简单,用户可以方便地对其进行操作。所以,那些对基本信息单位操作不多的文件较适于采用字符流的无结构方式,如源程序文件、目标代码文件等。
  2. 有结构文件 (记录式文件)
    a. 顺序文件:文件中的记录一个接一个地顺序排列,在访问时需要顺序搜索文件。
    b. 索引文件:通过一个索引表来检索文件。
    c. 索引顺序文件:上述两者结合。

目录

FCB(文件控制块)

在文件系统内部给每个文件唯一的设置一个文件控制块,它用于描述和控制文件的数据结构,与文件一一对应。

目录结构

单级目录、二级目录、树形目录、图形目录

文件的物理结构

顺序结构、链式结构、索引结构

磁盘管理

磁盘地址结构

柱面号、盘面号、扇面号

相关量

  1. 总寻道时间=磁头移动量*磁头移动一个磁道所用时间;
  2. 一次访盘的旋转时间=1/2R;
  3. 一次访盘的传输时间=1/(每个磁道扇区数*R);

磁盘调度算法

先到先服务算法FCFS
最短查找时间优先算法SSTF
扫描算法(电梯算法)
循环扫描算法(CSCAN)
冻结扫描算法 (FSCAN)
解决磁头粘性问题。
思想:将磁盘请求分为两个子队列:请求队列、服务队列。
在扫描开始时间之前到达的请求放入服务队列;
在扫描开始时间之后到达的请求放入请求队列;
磁头采用SCAN算法移动,只服务“服务队列”的请求;
一次扫描完成以后,交换两个队列的地位,请求队列改为服务队列。

LOOK不到顶,SCAN到顶。

设备管理

设备管理的目标

使用方便、与设备无关、效率高、管理统一

I/O设备

I/O控制方式

  1. 程序直接控制方式
    这种方式也可以称为查询方式,CPU不断的去查询设备控制器是否将数据放到了数据存储器中,或者从数据存储器存到设备中,当完成IO时CPU才能去干别的事;
  2. 中断方式:
    这种方式当CPU发出指令后就可以去干别的事,当设备控制器把数据存在数据存储器后向CPU发出中断请求,然后CPU再来处理这部分数据。
  3. DMA 方式:
    虽然中断方式提高了cpu的利用率,但是数据寄存器有限,中断是以字节单位进行中断,也就是说读取或存储一个字节后就需要进行中断,那么其实cpu的利用率还是很低的,所以就诞生了DMA方式,这种方式由DMA控制器直接将设备中的数据以数据块为单位直接传输到内存中,当传输结束后才向epu发起中断。
  4. IO通道控制方式:
    DMA虽然大大地提升了cpu的利用率,但是OMA只能传输一个连续的数据块。所以引入了10通道的控制方式,10通道控制方式可以传输不连续的数据块,减少了cpu干预。opu通过对10通道发出指令,然后让10通道自己工作,等数据传输完才向cpu发起中断。
  • 5
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值