考研复试之操作系统回顾
1.什么是操作系统?
操作系统是用来管理和控制“硬件和软件”资源的计算机程序,可以用来给“用户和软件”提供一些接口和环境,是最基本的系统软件。其中用命令接口与用户对接,用系统调用与应用程序对接。
2.操作系统的功能?
(1)文件管理:在文件夹中找到QQ的存放位置 (2)存储器管理:打开QQ.exe,安装QQ并把其存入内存中 (3)处理机管理:运行QQ程序的时候,对应的程序会被处理机CPU进行处理 (4)设备管理:视频聊天的时候,调用摄像头设备。
3.联机命令接口:用户输入一个命令,系统执行一个命令
脱机命令接口:用户输入一堆命令,系统执行一堆命令
4.操作系统四个特征:
(1)并发:【最基本特征】两个或多个事件在同一时间间隔内发生,宏观上一起发生,微观上交替发生。
【辨析:并行:两个或多个事件在同一时刻发生。】
【注意:单核CPU同一时刻只能执行一个程序,所以是并发;多核CPU同一时刻可以运行多个程序,可以并行】
(2)共享:【最基本特征】即资源共享,系统中的资源可供运行中并发的进程共同使用
(3)虚拟:把系统中实际存在的东西转化成用户所能感知到的虚拟的东西
(4)异步:“多个”程序并发执行,但是由于资源有限,先执行的程序抢占了资源导致下一个程序无法执行而阻塞,所以程序的执行走走停停,以不可知的速度向前推进。
5.操作系统发展历程?
(1)手工阶段: 用户独占全机,资源利用率低
(2)单道批处理系统:在主机和输入机之间增加了一个磁带机。
(3)多道批处理系统:多个程序并发执行,共享计算机资源,但没有人机交互的功能
(4)分时操作系统:把处理机运行的时间分成很短的时间片,按照时间片把处理机分给进程使用,此时解决了人机交互的功能
(5)实时操作系统:能根据用户的紧急需求来响应一些任务而不用排队。有及时性和准确性。
6.管态和目态?
管态/内核态:此时正在运行内核程序,可以执行特权指令。该程序可以访问计算机的任何资源。
目态/用户态:此时正在运行应用程序,可以执行非特权指令。不能直接使用资源,只能访问这个用户自己的存储空间。
区分管态和目态的目的:为了保护操作系统的程序。Cpu执行两种不同的程序,一个是操作系统执行的内核程序,一个是用户自己编写的应用程序。前者是后者的管理者,而因此产生了特权指令,即计算机中不允许用户直接使用的指令,像I/O指令等等。
7.如何从用户态切换到核心态?只要触发了中断信号,就可以实现。
(1)发生中断(2)发生异常(3)系统调用
核心态到用户态?执行一条特权指令,即改变标志位psw就可以实现,由硬件自动完成的。
8.cpu可以运行两种程序,一种是操作系统的内核程序,一种是应用程序。中断机制可以让用户态转变成为核心态,即如果没有中断机制,那么cpu在运行应用程序的时候会一直执行下去,而不会去运行内核程序了。所以没有中断机制就没有并发执行的概念,也可以说就没有了操作系统。
9.程序:是静态的,是一系列的指令集合,比如.exe文件。
进程:是动态的,是程序的一次执行过程,一个程序运行多次就会有多次进程执行过程。同时PCB进程控制块也是进程存在的唯一标志,当进程被创建时,就会为其创建一个PCB,如果进程被取消PCB也会被收回。进程由PCB,程序段和数据段组成。进程是系统进行调度和资源分配的一个独立的单位。
10.进程状态的转变?
挂起:暂时到外存等待
11.前趋图:一个有向无循环图,用于描述进程执行的先后顺序。
12.如何实现进程控制?用原语来实现
(1)进程的创建需要用“创建原语”来实现:申请空白的PCB+为进程申请资源+初始化PCB+将PCB插入就绪队列【将创建态转变成就绪态】
(2)进程的终止需要用“撤销原语”来实现【从就绪态/阻塞态/运行态到终止态】
(3)进程的阻塞用“阻塞原语”【运行态到阻塞态】
(4)进程的唤醒用“唤醒原语”【阻塞态到就绪态】
(5)进程的切换用“切换原语”【就绪态到运行态/运行态到就绪态】
13.进程通信是指进程之间信息的交换,分为四种类型:管道通信系统、共享存储器系统、消息传递系统、客户机服务器系统
14.线程
线程是CPU调度的基本单位,线程属于进程,是进程的一个实体。我们在操作系统中引入进程的目的是使多个程序能够并发的执行,那么引入线程之后,程序并发执行所花费的开销就会减少。
进程和线程的区别:(1)同一个进程可以可以包括多个线程,这些线程可以共享整个进程的资源(2)进程是资源分配和调度的单元,线程是CPU调度的单元。
(3)线程是轻量级的进程,它的创建和销毁所耗费的时间比进程小。
15.进程同步机制遵循的原则:空闲让进【临界区空闲时,可以允许一个请求进入临界区的进程进入临界区】,忙则等待【已有进程进入临界区的时候进程必须等待】,有限等待【请求访问的进程应在有限时间内进入临界区】,让权等待【当进程不能进入临界区,应立即释放处理机,防止进程忙等待】。
什么是进程同步:就是让多个进程能够按照次序进行,使并发执行的进程能够能按照一定的顺序来共享系统资源。
临界资源:打印机、磁带机都是临界资源,各个进程应采取互斥的方式来来实现对这些临界资源的共享。
访问临界资源的代码有进入区【对临界资源进行检查看他是否正在访问】、临界区、退出区【将被访问的临界资源恢复为未被访问状态】、剩余区
16.信号量机制:【一个信号量对应一种资源,信号量的值代表这种资源的剩余数量,若小于0说明有进程在等待这个资源】
wait原语:某进程需要使用资源时,通过wait原语申请
signal原语:进程使用完资源后,通过signal原语释放
(1)整型信号量:对信号量的操作只有三种(初始化、P操作wait、V操作signal)
缺陷:没有遵循让权等待的原则,存在忙等问题
(2)记录型信号量:有一个新的变量S.value,P操作申请之后S.value- -,当value小于0之后,外界的资源分配完毕,所以调用block原语转变成阻塞态,遵循了让权等待的原则
若执行V操作释放一个单位的外部资源S.value++,若仍小于0,则用wakeup原语唤醒队列第一个进程,从阻塞态变成就绪态。
17.经典进程同步问题:
(1)生产者消费者问题:
(2)读者写者问题:
(3)哲学家进餐问题:是竞争公共资源的问题。
有一个解决方法是奇数的哲学家只能抢占左边的筷子,然后偶数的哲学家抢占右边的筷子,然后再在剩余的筷子中进行抢占。
18.管程出现原因:用信号量机制来实现PV操作会产生编码困难易出错的困难。
19.(1)调度:就是有一堆任务要处理,但是资源又是有限的,所以要按照一定的方式和规则来处理这些任务,这就是调度要研究的东西。
(2)高级调度:也称为作业调度,按照一定的规则从后备队列中调取一个或者多个作业,分配给其相应的资源,建立相应的进程,从而产生了竞争处理机的机会。
(3)中级调度:也被称为内存调度,可以提高内存的利用率和吞吐量,将不能运行的进程放到外存进行等待。
(4)低级调度:也称为进程调度,从就绪队列中选一个进程,分配处理机。
20.评价调度算法的好坏:周转时间、CPU利用率【cpu工作时间/总时间】、系统吞吐量【总共完成多少作业/作业完成总时间】等等
21.调度算法:
(1)先来先服务(FCFS):进程按照到达先后顺序进行服务。优点:比较公平。缺点:效率低。
(2)短作业优先(SJF):从后备队列中选择已到达并且运行时间最短的进程先服务。优点:平均等待时间和周转时间少。缺点:对短作业有利,对长作业不利。
(3)高响应比优先算法:计算所有已经就绪的进程的响应比【等待时间+运行时间/运行时间】,选取最高的响应比先进行。
(4)时间片轮转调度算法:公平的轮流的服务各个进程,就绪队列按照一定次序排列好,给第一个进程分配一个时间片,如果一个进程在一个时间片内没有运行完毕就可以放到队尾,等待下一次分配时间片。
(5)优先级调度算法:该算法每次从后备队列中选择优先级最高的作业将资源分配给他。优先数越大,优先级越高
(6)多级反馈队列调度算法:设置多个就绪队列,优先级越高时间片越小。
22.进程之间存在什么关系:互斥和同步。互斥是一个进程进入临界区调用临界资源的时候,其他进程必须要进行等待。同步是为了完成一个任务而建立两个或者多个进程按照某种次序来工作或者等待。
23.死锁:多个进程因为竞争临界资源而造成的一种僵局,无外力作用就无法向前推进。
死锁产生的必要条件:(1)互斥条件:有资源最多只能给一个进程使用的前提条件。(2)不剥夺条件:进程在使用完资源之前不能被强制夺走。(3)请求并保持条件:指进程已经占有了自身资源还要抢占别人的资源。(4)循环等待条件:有一个进程资源的等待链,其中每个资源已获得资源又被下一个进程所请求。
什么时候会死锁:竞争资源时,进程推进顺序非法时
如何处理死锁:预防死锁【破坏上边四个条件】、避免死锁、检测和解除死锁
24.避免死锁——银行家算法:在进程申请资源的时候要进行预判,会不会导致系统进入了不安全的状态,如果进入了不安全状态就会让这个进程接着等待。
25.程序的运行要经历三步:(1)编译:把高级语言编译成机器语言(2)链接(3)装入
程序的装入有分为:(1)绝对装入:如果知道程序要放在内存的什么位置,就直接编译生成相应位置的代码
(2)静态重定位:在装入程序时,要对地址进行重定位,将逻辑地址变换为物理地址
(3)动态重定位:在装入程序时,要对地址进行重定位,将逻辑地址变换为物理地址。此时需要一个重定位寄存器,用于装入程序在内存中的起始位置,真正访问的地址是逻辑地址和寄存器中地址相加的和。
26.什么是分页存储:将内存分成很多的分区,一个分区就是一个页框,每个页框都有一个页框号,操作系统是以页框为单位向进程分配资源,一个页框对应一个进程的页面。
页表:操作系统为了记录进程的页面对应的页块,所以为每个进程建立了页表。
什么是分段存储:按照“程序”自身的逻辑关系划分成多个段,每个段都有一个段名,然后内存以段为单位进行分配。
段表:跟页表类似,因为是将程序分成好几段,所以要记录内存中每个段的位置。
页和段的相同点:采用了离散的分配方式
页和段的区别:页是信息的物理单位,为了提高内存的利用率,是系统的自发管理行为,对用户不可见;段是信息的逻辑单位,是为了满足用户的需求,便于用户编程,这对于用户是可见的。
27.快表:是一种访问速度比内存快很多的高速缓存,可以加快地址变换的速度。
28.局部性原理:(1)时间局部性:一个指令或数据被执行,过一会可能会再次执行。(2)空间局部性:程序访问了某个存储单元,过一会其周围的存储单元将会被用到。
29.什么是虚拟存储器?
装入程序的时候可以只将程序的一部分装入内存,就可以启动程序,如果要访问的信息不在内存中,就可以将所需的内容调入内存;当有不需要用到的信息在内存时,也可以将它调出到外存,这样看起来像是一个比内存大得多存储器。
30.页面置换算法
(1)最佳置换算法:将以后永不使用或者最长时间不使用的页面调出内存
(2)先进先出置换算法:最早进入内存的页面调出
(3)最近最久未使用置换算法:将最长时间未访问的页面调出。
(4)时钟置换算法:为每个页面设置一个访问位,默认为0,如果访问过了就设置为1,当要淘汰页面的时候,就检查访问位淘汰为0的,然后将访问位为1的调整成0。
31.抖动:页面频繁调入调出的现象,其实本质上是为进程分配的物理块不够。
32.缓冲区作用:开辟出一块内存作为缓冲区。可用于(1)缓和CPU和IO设备速度不匹配问题(2)提高CPU和IO设备的并行性。
33.(1)SPOOLing假脱机技术:脱机技术是指脱离了主机而进行的输入输出操作,假脱机技术是指用软件的方式实现脱机技术。
(2)SPOOLING系统组成:输入井、输出井、输入缓冲、输出缓冲、输入进程、输出进程
(3)特点:提高了IO速度,将独占设备变成了共享设备
(4)例子:很经典的一个例子是将一个独占的打印机变成可供多个用户共享的打印机。
34.磁盘调度算法:
(1)先来先服务算法:根据进程请求访问磁盘的先后顺序进行调度
(2)最短寻找时间优先算法:
(3)扫描算法/电梯算法SCAN:在磁头当前移动方向上选择与当前磁头所在距离最近的请求作为下一次服务对象。
(4)循环扫描算法C-SCAN: