操作系统期末总复习

一.计算机系统概述

1.操作系统是系统软件,操作系统设计的主要设计目标是方便性、可靠性
2.操作系统是对计算机资源进行管理的软件
3.特征:
  并发 共享 虚拟 异步
  并发:若干事件在同一时间间隔发生
  并行:若干事件在同一时刻发生
  最基本特征:并发、共享(两者互为存在条件
4.功能:(基本功能)控制和管理系统内的各种资源重点
(1)作为计算机系统资源的管理者

处理机管理、存储器管理、文件管理、设备管理与中断处理

(2)作为用户与计算机硬件系统之间的接口

命令接口:允许用户直接使用
               联机用户接口:说一句做一句
               脱机用户接口:说一堆做一堆
程序接口(系统调用):只能通过用户程序间接使用(避免用户直接访问外设)
                   (提供给编程人员的接口)
                    用户态转换为核心态
                    目的:请求系统服务
                    执行过程:
传递系统调用参数---执行陷入指令(trap)指令----执行相应的服务程序----返回用户态

用户可以通过命令接口和系统调用两种方式来使用计算机

5.开机后操作系统最终被加载到RAM
6.发展

(1)手工操作阶段
(2)批处理阶段(中断技术使得多道批处理系统和I/O设备可与CPU并行工作)
        1.单道批处理阶段
          特征:自动性、顺序性、单道性、封闭性
          缺点:系统资源利用率不充分
        2.多道批处理阶段(操作系统形成的标志)
          用户脱机使用计算机
          特征:制约性、间断性、共享性
          作用:提高单机资源利用率
          优点:CPU利用率高
               系统吞吐量大
               I/O设备利用率高
          缺点:系统开销大
                用户响应时间较长
                不提供人机交互能力(缺少交互性)
(3)分时操作系统(不可以插队,有了人机交互)
         可以多个用户同时使用计算机
         运行时间分成时间片,用户以交互式的方式使用计算机“时间片轮转”
         时间片一定,用户数越多响应时间越长
         系统响应时间
         算法:优先级+非抢占式调度算法
         特点:同时性、交互性、独立性、及时性
         响应时间=用户数*时间片
         时间片=切换时间+处理时间
(4)实时操作系统(可以插队)
        特点:及时性、可靠性
        目标:安全可靠、及时响应、快速处理
        算法:抢占式优先级高者优先
        硬实时系统:必须在被控制对象规定时间内完成(火箭发射)
        软实时系统:可以不再(订票)

从可靠性看实时操作系统更强,从交互性看分时操作系统更强

7.指令

 特权指令:不允许用户程序使用(只允许操作系统使用)
          设备管理、文件管理、进程管理、进程控制、进程通信、内存管理
 非特权指令:普通的运算指令

8.处理机状态

 用户态:cpu只能执行非特权(访管指令)
 核心态:都能执行
 用户态-----核心态:通过中断(是硬件完成的)
 核心态-----用户态:特权指令psw的标志位0用户态1核心态

常考谁在用户态执行,谁在核心态执行
9.两种程序

内核程序:都可执行(实现内核功能的程序)
应用程序:非特权(工作在用户态)

操作系统必须提供中断处理功能
10.中断和异常

中断(信号来源于cpu外部):强迫中断I/O结束中断
                    处理外部中断,PC值由中断隐指令自动保存
                   通用寄存器内容由操作系统保存         
异常(信号来源于cpu内部):系统调用、缺页、整数除0

11.中断处理和子程序调用

子程序调用:保存程序断点,即下一条指令的地址
中断:保存PC 和 PSW

二.进程管理

1.进程目的:为了更好地描述和控制程序并发执行
2.进程实体(进程映像):PCB、程序段、数据段
进程实体也叫进程,进程是动态的,程序是静态的。进程是进程实体的运行过程,是系统资源分配和调度的一个独立单位
进程控制块是进程存在的唯一标志
(PCB中有四大类:进程标志信息、进程控制信息、进程资源信息、CPU现场信息)
3.进程特征:

扫描二维码关注公众号,回复: 11506958 查看本文章
动态性、并发性、独立性、异步性、结构性
并发性的特征(间断性、失去封闭性、不可再现性)

4.进程状态在这里插入图片描述

1)进程运行满一个时间片以后让出中央处理器,他的状态变为就绪态
2)一个进程的状态变化不一定引起另一个进程的状态变换
3)进程获得处理机运行时通过调度得到的
4)进程申请处理机得不到满足时,其状态变为就绪态
5)系统进程所请求一次I/O操作完成后进程状态由阻塞态变为就绪态
6)进程在处理机上执行时进程之间可能是无关的也有可能是有交互性
7)进程自身决定从运行态到阻塞态
8)对进程的管理和控制使用原语
9)被优先级高的抢占了CPU,由运行态变为就绪态
10)进程的最大数目受内存大小

5.进程的组织方式

链接方式(指针队列)
索引方式(索引表)

在这里插入图片描述
在这里插入图片描述
6.进程通信
进程间的信息交换

  低级通信方式:PV操作(基于数据结构的共享)
  高级通信方式:(基于存储区的共享)
        1.共享存储
        2.消息传递:两个原语(发送消息、接收消息)
             1)直接通信方式
             2)间接通信方式(信箱通信方式)
             
        3.管道通信 
  (写满时不能再写,读完时,不能再读,没写满不能读,没读空不能写)  
          缓冲区只允许一边写入,另一边读出                                                                                                                                                                                                                                                                                             

7.进程的创建:

1)申请空白PCB
2)为新进程分配资源
3)初始化进程控制块
4)将新进程插入就绪队列中

8.线程
在这里插入图片描述

1)线程为调度和分派的基本单位
2)进程拥有资源,线程不能拥有资源
3)进程间可以并发执行,一个进程中的多个线程也可以并发执行
4)线程切换开销远小于进程间切换
5)引入线程可提高程序并发执行的速度,可进一步提高系统效率
6)同一进程和不同进程内的线程都可以并发执行

9.线程的实现方式

 1)用户级线程
 2)内核级线程
 线程切换可以在用户态下完成

10.多线程模型

 一对一
 一对多
 多对多

进程可以创建进程或线程,线程也可以创建线程,但线程不能创建进程
11.临界资源这里要记住会经常考

 一次只能为一个进程使用的资源(互斥共享)

12.临界区

每个进程访问临街资源的代码(上锁)

13.操作系统中把做出“决定把CPU分配给谁用”的程序成为“进程调度程序”

 进程调度与进程切换的区别(自己下去去了解)

14.调度层次

作业调度、内存调度、进程调度

要做什么 调度发生在 发生频率 对进程影响
高级调度(作业调度) 从后备队列中选择合适的作业调入内存,并为其创建进程 外存—内存(面向作业) 最低 无—创建态—就绪态
中级调度(内存调度) 挂起队列中选择合适进程将数据调回内存 外存—-内存(面向进程) 中等 挂起态—就绪态/阻塞挂起----阻塞态
低级调度(进程调度) 从就绪队列中选择合适的进程为其分配处理机 内存—CPU 最高 就绪态----运行态

15.进程调度的方式

 非剥夺调度方式(非抢占式)
 剥夺调度方式(抢占式)

16.调度的评价准则

1)CPU利用率
2)系统吞吐量:单位时间内完成作业的数量
3)周转时间:
    
    周转时间=作业完成时间—作业提交时间
    平均周转时间=(作业1周转时间+作业2周转时间+......)/n
    带权周转时间=作业周转时间/作业实际运行时间
    平均带权周转时间=(作业1的带权周转时间+作业2的带权周转时间+......)n
4)等待时间:等待时间越长,用户满意度越低

14.常用进程调度算法非常重要!!!
点击这里查看详细的讲解

 (1)先来先服务调度算法
 根据进程到达的先后顺序执行进程,不考虑等待时间和执行时间,会产生饥饿现象。属于非抢占式调度,优点是公平,实现简单;缺点是不利于短作业。
 不会饥饿
 (2)短作业调度算法
会饥饿
 (3)优先级调度算法
 会饥饿
 (4)高响应比优先调度算法
        根据“响应比=(进程执行时间+进程等待时间)/ 进程执行时间”这个公式得到的响应比来进行调度。高响应比优先算法在等待时间相同的情况下,作业执行的时间越短,响应比越高,满足段任务优先,同时响应比会随着等待时间增加而变大,优先级会提高,能够避免饥饿现象。优点是兼顾长短作业,缺点是计算响应比开销大,适用于批处理系统。
  不会饥饿
 (5)时间片轮转调度算法
 不会饥饿
 (6)多级反馈队列调度算法
 会饥饿

15.进程同步两种制约关系

间接相互制约
直接相互制约
制约关系:是一种相互影响的关系,即某一个进程的运行除了受到系统影响外,还会受到其他进程运行的情况

16.为了禁止两个进程同步进入临界区,同步机制应遵守以下准则

1)空闲让进
2)忙则等待
3)有限等待
4)让权等待

17.进程同步的方式
在这里插入图片描述

1)软件实现方法
在进入区设置和检查一些标志来表明是否有进程在临界区,入好已有进程在临界区则在进入区通过循环检查进行等待,进程离开临界区后则益处区修改标志 
    1.算法一:单标志法
    2.算法二:双标志法先检查
    3.算法三:双标志法后检查
    4.算法四:Peterson's Alogorithm
2)硬件实现方式
    1.中断屏蔽法
    2.硬件指令法
       1)TestAndSet指令:这条指令是原子操作,功能是读出指定标志后把该标志设置为真
       2)Swap指令:该指令的功能是交换两个字节内容

18.信号量点击这里去详细了解信号量

只能被两个标准的原语访问wait(S)和signal(S)记为“P操作”“V操作”
由硬件实现是不可分割的指令序列(原语与数据库中的事务一样)
P,V操作是低级进程通信原语
信号量机制是一种有效实现进程同步和互斥的工具
用来解决互斥与同步问题

1)整型信号量

       信号量是一个特殊的整形变量,只有初始化和PV操作才可以改变其值
       信号量分为互斥量和资源量
       互斥量的初值一般为1,表示临界区只允许一个进程进入,从而实现互斥,当互斥量为0时表示临界区已有一个进程进入,临界区外尚无进程等待,互斥量小于0时,表示临界区只有一个进程,互斥量的绝对值表示在临界区外等待进入的进程数,初值可以为任意值,表示可用资源数,当资源量小于0时表示资源全部用完            

2)记录型信号量
3)利用信号量实现同步:
4)利用信号量实现互斥
常考:信号量表示相关资源的当前可用数量,当信号量K>0时,表示还有K个资源可用,无等待资源。当信号量<0时,表示有|K|个进程正在等待该资源
19.管程
定义:

由一组数据以及定义在这组数据之上的对这组数据的操作组成的软件(把信号量及其操作原语“封装”在一个对象内部)

组成:

局部于管程的共享结构数据说明
对该数据结构进行操作的一组过程
对局部于管程的共享数据设置初始值的语句

特点;

 1.任何进程只能通过调用管程提供的过程入口才能进入管程访问共享数据
 2.任何时刻,仅允许一个进程在管程中执行某个内部过程

管程如何实现同步

 1.对共享变量互斥操作:
 管程的特点直接实现了该要求,进程一次一个进入管程调用内部过程操作共享变量
 管程互斥访问完全由编译程序在编译时自动天上,无需程序员关心,能保证正确
 2.操作的同步控制:
 靠条件变量的操作管理实现
 进入管程但不能获取资源操作的过程将阻塞,并在满足条件时被唤醒执行

管程的优点

1.保证进程互斥的访问共享变量,并方便的阻塞和唤醒进程。管程可以以函数库的形式实现,相比之下管程比信号量号控制
2.管程可增强模块的独立性:系统资源管理的观念分成若干模块,用数据表示抽象系统资源,使用同步操作相对集中,从而增加了模块的相对性
3.引入管程可以提高代码的可读性,便于修改和维护,正确性抑郁保证:采用集中式同步机制,一个操作系统或并发程序由若干个这样的模块所构成,一个模块通常较短,模块之间关系清晰

管程的缺点

大多数常用的编程语言中没有实现管程,如果某种语言本身不支持管程,那么假如管程是很困难大

20.死锁点击这里具体了解死锁

   就是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用这些进程都无法前进
   若干个进程因竞争资源而无限等待被该组进程中另一进程所占有的资源

死锁处理策略

在这里插入图片描述
产生原因一定要牢记,会考

(1)互斥使用(资源独占):一个资源每次只能给一个进程使用
(2)占有且等待(请求和保持,部分分配):进程在申请新的资源的同时保持对原有资源的占有
(3)不可抢占(不可剥夺):资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放
(4)循环等待:存在一个进程等待队列 {P1 , P2 , … , Pn},其中P1等待P2占有的资源,P2等待P3占有的资源,…,Pn等待P1占有的资源,形成一个进程等待环路。

当死锁产生的时候一定会有这四个条件,有一个条件不成立都不会造成死锁。其中互斥使用资源时无法破坏的
死锁预防

防止产生死锁的四个必要条件中任何一个条件发生即破坏产生死锁的四个条件之一。

(1)破坏“互斥使用/资源独占”条件

 资源本身的特性是独占的,是排他性使用的,所以要使用一种资源转换技术,把独占资源变为共享资源。例如针对于打印机,SPOOLing技术的引入解决不允许任何进程直接占有打印机的问题。设计一个“守护进程/线程”负责管理打印机,进程需要打印时,将请求发给该daemon,由它完成打印任务。

(2)破坏“占有且等待”条件

  指一个进程占有了一部分资源,在申请其他资源的时候由于得不到满足而进入等待状态。有下面两种方案实现:

实现方案1:要求每个进程在运行前必须一次性申请它所要求的所有资源,且仅当该进程所要资源均可满足时才给予一次性分配。这种实现会使得资源的利用率很低,当一个进程所需要的资源不能同时满足的情况下可能一直处于等待状态,会产生饥饿现象。
实现方案2:在允许进程动态申请资源前提下规定,一个进程在申请新的资源不能立即得到满足而变为等待状态之前,必须释放已占有的全部资源,若需要再重新申请。

(3)破坏“不可抢占”条件

 实现方案是当一个进程申请的资源被其他进程占用时,可以通过操作系统抢占这一资源(两个进程优先级不同)。这种方法具有局限性,适用于状态易于保存和恢复的资源,如CPU、内存资源。

(4)破坏“循环等待”条件

主要思想是通过定义资源类型的线性顺序实现,实现方案是资源有序分配法,把系统中所有资源编号,进程在申请资源时必须严格按资源编号的递增次序进行,否则操作系统不予分配。实现资源的有序分配时需要考虑如何对资源进行编号,通常可以利用资源使用的频繁性进行排序。

 假如有P1,P2…Pn共n个进程,每个进程都需要一定的资源,一定可以找到某个进程所需要申请的资源的序号是最大的这个进程,从这个进程开始执行;这个进程执行完之后再继续找下一个所需要资源序号最大的进程,以此类推,因此使用资源的有序分配法一定可以解决死锁问题。

死锁避免(预防系统进入不安全状态)

 安全状态
 银行家算法

银行家算法经典讲解重点重点要考的
(一)知识点

(1)Available【j】=k系统中现有Rj类资源K个
(2)Max【i,j】=k进程i需要Rj类资源最大数目为K个
(3)Allocation【i,j】=k表示进程i当前已分配Rj类资源的数目为K个
(4)need【i,j】=k表示进程i还需要Rj类资源数目K个

need=Max-Allocation
(二)安全性算法举例

 假定系统中有5个进程{P0,P1,P2,P3,P4}和三类资源{A,B,C}各种资源的数目分别是10,5,7,T0时刻的资源分配情况如下表

在这里插入图片描述

 (1)第一步:先利用公式Need=Max-Allocation求出Need
     Max矩阵-Allocation矩阵=Need矩阵

在这里插入图片描述

   (2)第二步:将Available向量和Need矩阵的各行进行比较

找出Available小于Need的加入安全序列
例如在初始时

(3,3,2)>(1,2,2)(p1)
(3,3,2)>(0,1,1)  (p2)

对应两个进程为P1.P3(两个都可以选择),我先选P1

  (3)第三步:释放P1所占的资源

Available=Allocation(P1)+Available
(3 3 2)+(2 0 0)=(5 3 2)
此时Need矩阵更新为
在这里插入图片描述

 (4)重复(2)最后得到一个安全序列{P1,P3,P4,P2,P0}

在这里插入图片描述
(三)知识点
设requesti是进程Pi的请求向量
Requesti[j]=K表示进程Pi需要j类资源K个
当Pi发出资源请求后,系统按下述步骤进行检查

 (1)若Request~i~[j]<=Need[i,j]转向步骤(2);否则认为出错,因为他所需的资源数已经超过他所宣布的最大值
 (2)若Request~i~[j]<=Available[j]则转向步骤(3),否则尚无资源,pi
 (3)系统试探着把资源分配给进程pi,并修改下面数据结构中的数值
        Available=Available-Request~i~
        Allocation[i,j]=Allocation[i,j]+Request ~i~[j]
        Need[i,j]=Need[i,j]-Request~i~[j]
 (4)系统执行安全算法,检查此次资源分配后,系统是否处于安全状态,若安全才正式将资源分配给进程P~i~,已完成本次分配;否则将此次的试探分配作废,恢复原来的资源分配状态,让进程P~i~等待

(四)银行家算法举例
假设系统资源的分配和剩余情况如下
在这里插入图片描述
(1)P1请求资源:P1发出请求向量
Request1(1,0,2),系统按银行家算法进行检测:

 	Request1(1,0,2)<=Need1(1,2,2)
 	Request1(1,0,2)<=Available1(3,3,2)
 	资源分配给进程P1,并修改
 	 Available=Available-Request~1~=(2,3,0)
     Allocation1=Allocation1+Request ~1~(3,0,2)
     Need1=Need1-Request~1~(0,2,0)
 	此时资源发生变化
 	Available=(2,3,0)按照安全算法检查是否安全找到安全序列

在这里插入图片描述
找到一个安全序列{P1,P3,P4,P2,P3,P0}
在这里插入图片描述
所以系统是安全的可以立即将P1所申请的资源分配给他,分配后资源如上表。
(2)P4请求资源:
P4发出请求向量Request4(3,3,0),系统按照银行家算法进行检查

 Request4(3,3,0)<=Need4(4,3,1)
 Request4(3,3,0)<=Available4(2,3,0)(不成立)所以让P4等待

银行家算法一定要掌握考试必考内容
检测死锁

两种方法
资源有向图(死锁检测时检测的是资源有向图)
资源矩阵法

解除死锁
21.死锁与安全状态的关系
在这里插入图片描述
系统处于不安全状态,系统便可以避免进入死锁状态
以下内容是内存管理
详细了解请点击内存管理
22.进程运行的基本原理

将用户源程序变为可以在内存中执行的程序
   编译:将用户源代码编译成若干目标模块
   链接:逻辑地址变为物理地址
   装入:将装入模块装入内存

23.逻辑地址空间与物理地址空间

 0号单元开始编址(逻辑地址

24.扩充内存节省主存空间

1覆盖(同一程序或进程中)
      固定区:经常活跃的部分
      覆盖区:即将要访问的段
2交换(不同进程/作业之间进行)
       把处于等待状态的程序从内存移到辅存,换出
       把准备好竞争cpu运行的程序从辅存移到内存,换入
       中级调度就是交换技术

25.交换技术注意:

   交换需要备份存储
   执行时间比交换时间长
   若换出进程必须确保进程完全处于空闲状态

26.连续分配管理方式
一个用户程序分配一个连续的内存空间

   1单一连续分配
   2固定分区分配
   3动态分区分配

27.非连续分配管理方式
允许一个程序分散的装入不相领的内存分区

   分页存储管理
           基本分页存储管理方式
                把主存空间划分为大小相同且固定的块,作为主存的基本单位
                把进程也以块为单位进行划分
                在执行时以块为单位逐个申请主存中的块空间

28.基本概念:

  1 进程中的块称为页,内存中的块称为页框
   2页面大小为2的整数幂
   3地址结构:页号  |页内偏移量
        地址长度32位,0~11位为页内地址,每页4kb
        12~32位为页号,
    4页表存放在内存
    5页表项与地址对比

29.基本地址变换
逻辑地址变为内存中的物理地址

   请求分页存储管理方式
   分段存储管理

总结考点
在这里插入图片描述
这里对内存管理就不做详细介绍了,内容太多,想学习请点击上面链接

下面总结一下以上所有内容

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
内存管理大小太大无法上传想要的评论区

持续更新中…

以免迷路请关注

猜你喜欢

转载自blog.csdn.net/m0_46315852/article/details/106537738