Q:操作系统的特点?
- – 共享:资源可被多个并发执行的进程使用
- – 并发:可以在同一时间间隔处理多个进程,需要硬件支持
- – 虚拟:将物理实体映射成为多个虚拟设备
- – 异步:进程执行走走停停,每次进程执行速度可能不同,但OS需保证进程每次执行结果相同
Q:操作系统的主要功能是什么?
- 处理机管理(包括进程控制、进程同步、进程通信、调度)
- 存储器管理(内存分配(静态/动态/连续/非连续分配)、内存包含、地址映射(逻辑地址-->物理地址)、内存扩充(虚拟存储技术))
- 设备管理(缓冲管理、设备分配、设备处理(启动设备、中断设备))
- 文件管理(文件存储空间管理、目录管理、文件读/写保护)
Q:操作系统发展过程?
- 无操作系统(人工操作方式):用户独占、CPU等待人工
- 单道批处理:内存只保存一道作业
- 多道批处理:运行多个程序同时存在主存中
- 分时:及时接收、及时处理,交互性
- 实时:实时控制、实时信息处理
Q:进程和线程的区别?
线程被称作轻量级进程,在进程中包含线程。进程有独立的内存空间,不同进程间不能直接共享其他进程资源,同一个进程内的线程共享进程内存空间;相比进程,线程切换对系统开销更小一些;进程是资源分配的最小单位,线程是程序执行的最小单位。
Q:进程的三个组成部分?
程序段、数据段、PCB(Process Control Block)
Q:进程切换的过程?
保持处理机上下文 -> 更新PCB -> 把PCB移入相应队列(就绪、阻塞) -> 选择另一个进程并更新其PCB -> 更新内存管理的数据结构 -> 恢复处理机上下文
Q:进程通信的方式
1、低级通信方式
PV操作(信号量机制)。
– P:wait(S)原语,申请S资源
– V:signal(S)原语,释放S资源
2、高级通信方式:以较高效率传输大量数据的通信方式
– 共享存储(使用同步互斥工具操作共享空间)
– 消息传递(进程间以格式化的消息进行数据交换)
– 管道通信(两个进程中间存在一个特殊的管道文件,进程的输入输出都通过管道,半双工通信)
Q:管程是什么?
由一组数据及对这组数据操作的定义组成的模块。同一时间只能有一个进程使用管程,即管程是互斥使用的,进程释放管程后需唤醒申请管程资源的等待队列上的进程。进程只有进入管程并使用管程内部的操作才能访问其中数据
Q:进程的五种状态是什么?
创建、就绪、阻塞、执行、终止
Q:线程间的同步与通信类型有哪些?
1.互斥锁mutex
2.条件变量
3.信号量机制
Q:线程的实现方式有哪几种?
1.内核支持线程(核内切换快,开销小,模式间切换慢)
2.用户级线程(节省模式间切换的开销)
3.混合
Q:产生死锁的原因有哪些?
- 对互斥资源分配不当
- 进程推进顺序不当
Q:处理产生死锁的办法有哪些?
- 预防死锁(破坏产生死锁的必要条件
- 避免死锁;3.检测死锁;4.解除死锁
Q:死锁的产生和避免?
死锁的四个必要条件:
(1)互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。
(2)请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。
(3)非剥夺条件(No pre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。
(4)循环等待条件(Circular wait):系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。
死锁避免(deadlock avoidence)是在系统运行过程中注意避免死锁的发生。这就要求每当申请一个资源时,系统都应根据一定的算法判断是否认可这次申请,使得在今后一段时间内系统不会出现死锁。这面方最著名的算法首推Dijkstra[1965]提出的银行家(banker)算法。
Q:死锁与饥饿的区别?
– 都是资源分配问题
– 死锁是等待永远不会释放的资源,而饥饿申请的资源会被释放,只是永远不会分配给自己
– 一旦产生死锁,则死锁进程必然是多个,而饥饿进程可以只有一个
– 饥饿的进程可能处于就绪状态,而死锁进程一定是阻塞进程
Q:FCB包含什么?
文件指针:上次读写位置。
文件打开数:多少个进程打开了此文件。
文件磁盘位置。
文件的访问权限:创建、只读、读写等。
Q:页面置换算法?
最佳置换算法OPT
先进先出置换算法FIFO
最近最久未使用算法LRU
时钟算法LOCK
Q:批处理作业调度算法?
先来先服务FCFS
最短作业优先SJF
最高响应比优先HRN
多级队列调度算法
Q:进程调度算法?
先进先出FIFO
时间片轮转算法RR
最高优先级算法HPF
多级队列反馈算法
Q:磁盘调度算法?
先来先服务FCFS
最短寻道时间优先SSTF
扫描算法SCAN
循环扫描算法C-SCAN
Q:FAT(File Allocation Table)?
分配给文件的所有盘块号都放在FAT中,记录了文件的物理位置。
3.中断和异常的联系与区别
Q:中断和系统调用区别?
中断和系统调用的区别: 中断是由外设产生, 系统调用是由应用程序请求操作系统提供服务产生的。要从用户态通过中断进入内核态。 中断过程:中断请求 中断响应 断点保护 执行中断服务程序 断点恢复 中断返回。
系统调用过程:应用程序在用户态执行时请求系统调用,中断,从用户态进入内核态,在内核态执行相应的内核代码。
Q:处理机调度有哪几层?
- 高级调度(后备作业-->内存)
- 中级调度(进程-->外存)
- 低级调度(进程/线程调度)
Q:页面置换算法有哪些?
最佳页面置换算法、最近最久未使用算法、时钟置换算法
Q:I/O控制方式有哪些?
- 程序控制I/O方式(CPU与I/O设备只能串行工作)
- 中断驱动方式
- DMA(仅在开始和结束才需要CPU干预)
Q:存储器的层次结构有哪些?
外存、主存、快速缓存、寄存器
Q:存储管理方案有哪些?
分区存储管理、分页存储管理、分段存储管理、段页式存储管理、虚拟存储管理
Q:设备管理采用的相关缓冲技术有哪些?
- 通道技术(使数据传输独立于CPU)(增加设备到主机之间的通路,使主存和设备之间有两条以上的通路)
- DMA技术(数据在主存与I/O设备间直接成块传送)
- 缓冲技术(硬件缓冲、软件缓冲)
- Spooling技术(使独占设备虚拟为多台设备)
1、什么是进程和线程,他们的区别是什么?
进程是系统进行资源分配和调度的基本单位。线程是进程的一个实体,是CPU调度和分派的基本单位,线程是比进程更小的独立运行的基本单位。线程与该进程中的其他线程共享该进程所拥有的的所有资源,同一个进程中的多个线程能够并发执行。
进程和应用程序的区别在于:应用程序作为一个静态文件存储在计算机存储空间中,而进程则是在动态的条件下,由操作系统维护的系统资源管理实体。
2、操作系统的特征?
操作系统有四大特征:并发,共享,异步,虚拟。
并行性:指两个或多个事件在同一时刻发生;
并发性:指两个或多个事件在同一时间间隔内发生。
3、三态、五态和七态分别是什么?
三态:就绪,执行,阻塞
五态:就绪,执行,阻塞,创建,终止
七态:就绪,执行,阻塞,创建。终止,激活,挂起
4、中断和异常?
中断:指计算机在执行程序期间,系统内发异常的或者非预期紧急处理事件,使得CPU暂时中断当前正在执行的程序转去处理异常或紧急事件,处理完毕后再回到程序中断处继续执行原来的程序的过程。
异常:指进程在运行过程中发生了某种异常事件,使得程序无法再继续执行(例如,除0错误,越界等)
5、线程同步的四种方式?
(1)临界区:当多个线程共享一个独占性资源时可以使用临界区对象。拥有临界区的线程可以访问被保护起来的资源,其他线程再想访问则被挂起,直到拥有临界区的线程释放临界区为止。
(2)事件:事件机制允许一个线程再处理完一个任务后主动唤醒另一个线程执行任务。
(3)互斥量:互斥对象和临界区对象非常相似,互斥对象允许在进程之间使用,而临界区对象只允许在同一个进程的各个线程之间使用。
(4)信号量:当需要一个计数器来限制可以使用某共享资源的线程数量时可以使用信号量对象。该计数器存储了当前还可以使用某资源的线程的个数,当该计数器的值为0时,如果再有线程访问该资源则被放入等待队列,直到该计数器不为0或者超时为止。
6、用户态和核心态的区别?
当一个进程因系统调用而执行内核代码时,称该进程处于内核态,当一个进程执行用户自己的代码时,称其处于用户态。运行在用户态下的程序不能直接访问操作系统内核数据结构和程序。用户态切换到核心态有三种方式:
(1)系统调用:(2)异常:(3)外围设备中断
7、死锁的概念以及导致死锁的四个必要条件分别是什么?
死锁定义,当一组进程中的每一个进程都在等待某个事件,而该事件只有在当该组进程中其他被阻塞的进程执行完毕后才能够释放,称这组进程发生了死锁。
导致死锁的四个必要条件如下:
(1)互斥:指一次只有一个进程可以拥有某资源,进程不可访问已经分配给其他进程的资源。
(2)占有且等待:进程在等待其他进程的时候占有已经分配给他的资源。
(3)不可抢占:不可强行抢占已经分配给其他进程的资源。
(4)循环等待:存在一个封闭的进程链,每个进程都至少占有一个下一个进程所需要的资源。
8、处理死锁的方式?
处理死锁的方式有三种:死锁预防、死锁避免和死锁检测。
在死锁避免中用到的银行家算法,首先需要定义状态和安全状态。状态是指当前给进程分配的资源情况,安全状态是指至少存在一个资源分配序列不会导致死锁。当进程请求分配资源时,假设同意了该请求系统的状态发生了改变,判断改变后的状态是安全状态,若是则同意该请求,若不是则阻塞该进程,直到同意该请求后系统为安全状态为止。
9、进程调度算法都有哪些?
进程调度算法有:先来先服务算法,短作业优先调度算法,高优先级优先调度算法,高响应比优先调度算法,时间片轮转调度算法,多级反馈队列调度算法
10、生产者和消费者问题?
两个进程共享一个公共的固定大小的缓冲区,其中一个是生产者,往缓冲区中放入消息,另一个是消费者,从缓冲区中取消息。当缓冲区满时生产者还想往里面放置消息,或者当缓冲区为空时消费者想要从缓冲区中取出消息,这样就会出现问题,为了保证这种问题不发生,常用信号量和消息传递来解决生产者和消费者问题。
11、使用虚拟内存的好处?
(1)可以尽可能多的保留进程,因为对于任何特定的进程都只存储他的某些块,因此就有足够的空间放入更多的进程。
(2)进程可以比内存空间要大。
12、内存连续分配方式采用的几种算法以及各自优缺点?
(1)首次适应算法:即从空闲分区链的首部开始查询,直到找到一个大小满足要求的空闲分区为止,然后按照作业的大小从空闲分区划分出一块内存分配给作业,剩余分区仍然留在空闲分区连中。
(2)循环首次适应算法:与首次适应算法类似,只是在寻找空闲分区时不是每次都从链的首部开始,而是从上次查找到的空闲分区处开始查询,直到找到一个满足要求的分区位置。该算法能够使分区分布更加均匀,缺点是会缺乏大的空闲分区。
(3)最佳适应算法:该算法总能把即满足要求又是最小的分区分配给作业,在进行操作之前该算法要求将所有分区按大小进行排序,每次查找到的分区都必将是最合适的分区。但在每次分配完分区后剩余的空闲分区是最小的,留下许多难以利用的小空闲分区,并且每次进行分区之后都要从新排序,开销也比较大。
(4)最差适应算法:该算法要求按照降序将空闲分区排列成一个链,从第一个分区开始进行分配,显然如果第一个分区都不能满足要求那其他分区也不能满足要求。该算法在大空闲分区中放入一个程式后其剩余的空闲分区往往也非常大,还可以再放入较大的程式。
14、同步和互斥?
同步:指散布在不同任务之间的若干程序片段,他们的运行必须按照规定的某种先后次序,这种先后次序依赖于任务本身。
互斥:指散布在不同任务之间的若干程序片段,当某个任务运行其中一个程序片段时,其他任务就不能运行他们中的任意一个程序片段,只能等到该任务运行完这个程序片段才可以。
15、外存分配的几种方式以及优缺点?
1.什么是操作系统?它的主要特征是什么?
答:
操作系统是指控制和管理整个计算机系统硬件和软件资源的最基本的系统软件。
并发性:指两个或多个事件在同一时间间隔内发生;(并行性:在同一时刻…)
共享性:系统中的资源可供内存中多个并发执行的进程共同使用;
虚拟性:把一个物理上的实体变成若干个逻辑上的对应物;
异步性:进程的执行并不是一气呵成的,而是以不可预知的速度向前推进.
2.要使一个系统不发生死锁,一般可采用哪些方法?简述它们的实现原理。
答:
死锁预防:破坏死锁的四个必要条件中的一个或几个,来预防死锁的发生;
死锁避免:将系统分为安全和不安全状态,每当系统为进程分配资源时都要检测系统是否会进入不安全状态,若会,则停止分配,进入等待状态;
死锁检测:系统可在为进程分配资源的同时,记录下来进程的请求和分配信息,然后按某种算法计算系统是否会发生死锁;
死锁解除:系统发生死锁时通常采用撤销进程或剥夺进程资源的方法使系统解除死锁。
3. 简述进程和程序的区别。
答:
进程和程序是既有联系又有区别。
主要区别:
1.程序是指令的有序集合,它是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态概念。
2.程序的存在是永久的,而进程则是有生命的,它因创建而产生,因调度而执行,因得不到资源而暂停,因撤销而消亡。
3.程序仅是指令的有序集合。而进程则是由程序、数据和进程控制块组成。
4.进程与程序之间不是一一对应的,一个进程可以执行多个程序。
4.什么是安全状态?当系统不安全时就是系统进入了死锁状态吗?
答:
安全状态是指系统按照某种进程顺序,为进程分配资源,使得每个进程都能获取所需的最大资源,并顺利完成。
不是,但是死锁状态一定是不安全状态。
5.虚拟存储器的主要特征是什么?简述一下
答:
多次性:作业无须一次调入,允许分多次调入内存;
对换性:作业在运行过程中无须常驻内存,可以根据需要进行换入换出;
虚拟性:从逻辑上扩充内存容量。
6.程序有哪几种装入方式?又有哪几种链接方式?
答:
装入方式:绝对装入、静态重定位、动态重定位。
链接方式:静态链接、装入时动态链接、运行时动态链接。
7.文件目录和目录文件的区别?目前广泛采用的目录结构形式是哪种?有何优点?
答:
文件目录,又称文件控制块,存储的是文件的管理信息,控制对象是单个文件;
目录文件,存储的是若干个文件目录,控制对象是整个文件系统;
目前广泛采用的树形目录结构,优点是:允许文件重命名,实现了文件分类。
8.系统调用是什么?与一般过程调用有何区别?
答:
系统调用是操作系统与应用程序之间的接口,它是用户程序间接操作计算机资源的唯一途径。
一般过程调用工作在用户态,通过过程调用语句实现,可以无限制嵌套调用;
系统调用运行在核心态,通过访管中断进入,不可以嵌套调用。
9.在设备管理中,何谓设备独立性?如何实现设备独立性?
答:
设备独立性是指用户程序独立于所使用的具体设备。
实现方式是系统为每个用户进程配置一张用于联系逻辑设备名和物理设备名的映射表,以实现使用逻辑设备名来请求物理设备。
10.什么是 DMA 方式?它与中断方式的主要区别是什麽?
答:
DMA方式是指内存与外设只需要在DMA控制器的控制下进行数据传输,而不需要进行CPU的干预。
与中断方式的主要区别是:
1.中断方式在每个数据需要传输时都需要中断CPU,而DMA方式是在所要求传送的一批数据全部传送完毕时才中断CPU;
2.中断方式中数据传输是在中断处理时由CPU控制完成的,而DMA方式中数据传输是在DMA控制器控制下完成的。
11.试述缺页中断与一般中断有何区别?
答:
缺页中断的处理过程与一般中断相似。
主要区别:
1.在指令执行期间产生和处理中断信号。
2.一条指令在执行期间可能产生多次缺页中断。
12.试比较分页与分段有何区别?
答:
1.页是信息的物理单位,分页是为了实现非连续分配,以便解决内存碎片问题。段是信息的逻辑单位,分段的目的是为了更好地实现地址共享,满足用户地需要。
2.页的大小固定,将逻辑地址划分为页号和页内地址是由机器硬件实现地。而段的长度不固定,决定于用户所编写地程序。
3.分页的地址空间是一维的,分段的地址空间是二维的。
13.为了实现重定位需要哪些硬件?
答:
至少需要在系统中增设一个重定位寄存器,用来存放正在执行作业的内存地址,每次访问数据时,由硬件自动将相对地址与重定位寄存器中的起始地址相加,形成实际的物理地址。
14.在交互式系统中,非剥夺是不是一个好的策略?为什么?
答:
在分时系统中不剥夺并不是一个好的策略。因为在分时系统中,除了交互性以外,及时性是很重要的性能因素。当一个作业被阻塞后,CPU就完全空闲了,别的用户的及时性就无法保证了,而完全可以把这些时间分配给别的作业运行。以提高整体的吞吐量。
15.举例解释一下同步和互斥
答:
同步表现为直接制约,如管道通信,一个进程写,一个进程读,它们是相互制约的。
互斥表现为间接制约,比如多个进程同时请求打印机(无SPOOLing技术时)
16.解释一下管程
答:
管程是由一组局部变量、对局部变量进行操作的一组过程和对局部变量进行初始化的语句序列组成。
引入的原因是因为P/V操作太过分散,对它的维护很麻烦且容易造成死锁。
管程的特点是:
1.管程的过程只能访问管程的局部变量,管程的局部变量只能由其过程来访问;
2.任何时刻只能有一个进程进入管程执行;
3.进程只能通过管程提供的过程入口进入管程。
17.在可变分区管理中,需要哪些硬件机制?
答:
采用可变分区方式管理时,一般均采用动态重定位方式装入作业;
地址变换要靠硬件支持,主要是两个寄存器:基址寄存器和限长寄存器,这两个值确定了一个分区的位置和大小;
限长寄存器存放作业所占分区的长度;
基址寄存器则存放作业所占分区的起始地址;
18.n个任务一个cup, 阻塞,运行,就绪的进程最多有多少个?
答:
阻塞n个;运行1个;就绪n-1个。
19.父子进程是否可以并发运行?
答:
可以,父进程创建子进程后,子进程也成为了一个可以独立运行的单位,虽然子进程继承了父进程的全部资源,但是只要两个进程创建的程序和数据没有冲突,则它们可以并发运行。
20.缓冲的定义,为什么引入缓冲技术?
答:
缓冲是一种以空间换时间的资源换取技术。一般利用内存作为缓冲区。
为什么引入:
1、可以协调CPU与I/O设备之间速度不匹配的矛盾;
2、可以减少对CPU的中断频率;
3、提高设备的利用率。
21.CPU不执行程序时在干什么?
答:
大多数操作系统都有个空闲任务,它是一个特殊的任务。仅当CPU无事可做的时候由操作系统调度器载入它。
22.简述一下Clock置换算法
答:
该算法为每个页面设置一位访问位,将内存中的所有页面通过指针链成一个循环队列。由于该算法只有一位访问位,只能用它表示该页是否已经使用过,而置换时是将最近未使用过的页面换出去,所以把该算法称为最近未用算法。
选择页置换的过程:
1.当某页被访问时,其访问位置“1”;
2.在选择一页淘汰时,就检查其访问位,如果是“0”,就选择该页换出;若为“1”,则重新置为“0”,暂不换出该页;
3.在循环队列中检查下一个页面,直到访问到访问位为“0”的页面为止。