考研复试问题之操作系统
1.进程和线程的区别
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位(包括程序段,相关数据段和进程控制块)
线程:线程是进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的能够独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行上必不可少的资源,但是他可以与同属一个进程的其他线程共享进程的所有资源。
2.什么是死锁
死锁的现象就是两个或者多个进程都占有其他进程请求的资源,每个进程都不能执行,处于永远等待状态。
死锁产生的原因对互斥资源的共享和并发的顺序不当。
产生死锁的四个必要条件,
- 互斥条件,一个资源只能被一个进程使用
- 不可强占,进程获得资源在未使用完之前不可以强行剥夺。
- 零散请求,一个进程因请求资源而阻塞,对已获得的资源保持不放。
- 循环等待,若干进程形成一种头尾相接的循环等待资源的关系。
死锁处理的策略:
预防死锁,避免死锁,检测死锁,接触死锁。
3.什么是物理内存?什么是虚拟内存?两者有什么关系?
物理内存(内存条):当打开程序时,系统会将程序自动的加载到物理内存上
虚拟内存(硬盘):虚拟内存是代替物理内存行使存储功能,但无法代替物理内存行使加载程序的功能
关系:当运行程序过多时,物理内存不够用,系统会将硬盘空间当成物理内存使用,变成虚拟内存。
4.分段和分页的区别
页是信息的物理单位,分页是为了实现离散分配方式,以消减内存的外零头,提高内存的利用率,分页仅仅是系统的需要。
段是信息的逻辑单位,分段是为了更好的满足用户的需求。
页的大小固定,分为页号+页内地址。段的长度可变,取决于用户编写的程序。
分页的作业地址是一维的分段地址作业是二维的。
5.cache的作用是什么?
cache是位于CPU和主存之间的高速缓冲区,它容量小,速度快,解决CPU和主存之间速度不匹配的问题。
6.硬中断和软中断的区别
硬中断是有硬件产生的,可以直接中断CPU
软中断是由当前正在运行的进程产生的,不能中断CPU,软中断是需要内核为正在运行的进程做一些I/O请求
7.何为系统调用?
系统调用:OS与应用进程之间的接口,它是用户程序取得OS服务的唯一途径,与一般过程调用的区别:运行在不同系统状态。调用程序运行在用户态,被调用程序运行在系统态,通过软中断机制,先由用户态转为系统态,才能转向相应的系统调用子程序。一般过程调用返回后继续执行,但对系统调用,当调用的进程仍具有最高优先权时,才返回到调用进程继续处理,否则只能等被重新调度。
8.同步和互斥的区别
相同协作的进程共同完成和任务时,一个进程的某个操作与协作进程的某个操作之间在时序上有一定的关系。如果协作进程的某个操作没有完成,那么该进程就要等待这个操作完成才能继续下去,这种需要互助合作、协同工作的进程之间的互助关系成为进程的同步
互斥:当两个和两个以上进程竞争同一临界资源是,进程间的制约关系成为进程的互斥
9.进程上下文切换发生的条件
- 中断处理
- 多任务处理
- 用户状态切换
10.进程的调度算法有哪些
-
1、先来先服务first-come first-serverd(FCFS)
按照请求的顺序
进程调整。非抢占式,开销小,无饥饿问题,响应时间不确定(可能很慢);对短进程不利,对IO密集型进程不利。 -
2、最短作业优先shorttest job first(SJF)
按估计运行时间最短的顺序
进行调度。非抢占式,吞吐量高,开销可能较大,可能导致饥饿问题;对短进程提供好的响应时间,对长进程不利。 -
3、优先级调度算法
为每个进程分配一个优先级,按优先级进行调度
。为了防止低优先级的进程永远等不到调度,可以随着时间的推移增加等待进程的优先级。 -
4、时间片轮转
将所有就绪进程按FCFS的原则排成一个队列,用完时间片的进程排到队列最后
。抢占式(时间片用完),开销小,无饥饿问题,为短进程提供好的响应时间;若时间片小,进程切换频繁,吞吐量低;若时间片长,实时性得不到保证。 -
5、最高响应比优先
响应比=1+等待时间/处理时间
。同时考虑了等待时间的长短和估计需要的执行时间长短,很好的平衡了长短进程。非抢占,吞吐量高,开销可能较大,提供好的响应时间,无饥饿问题。 -
6、多级反馈队列调度算法
设置多个就绪队列1、2、3…,优先级递减,时间片递增
。只有等到优先级更高的队列为空时才会调度当前队列中的进程。如果进程用完了当前队列的时间片还未执行完,则会被移到下一队列。抢占式(时间片用完),开销可能较大,对IO进程有利,可能会出现饥饿问题。
11.银行家算法
主要思想是避免系统进入不安全状态
,在每次进行资源分配时,它首先检查系统是否有足够的资源满足要求,如果有,则先试行分配,并对分配后的新状态进行安全性检查。如果新状态安全,则正式分配上述资源,否则拒绝分配上述资源。这样就保证系统始终处于安全状态,从而避免死锁现象的发生。
12.存储器管理功能
存储器管理的主要任务是为多道程序的运行提供良好的环境
,方便用户使用存储器,提高存储器的利用率
以及从逻辑上扩充存储器
。
13.将用户程序变为可在内存中执行的程序的步骤
- 1、编译:由编译程序将用户源代码编译成若干目标模块
- 2、链接:由链接程序将编译后形成的一组目标模块及所需的库函数链接在一起,形成一个完整的装入模块。
- 3、装入:由装入程序将装入模块装入内存中运行。
14.什么是虚拟内存,它容量受什么限制
虚拟内存的作用同物理内存一样,只不过是从硬盘存储空间划出的部分,来完成内存的工作,由于不是真正的内存,所以被称为虚拟内存。因为计算机所支持的最大内存是由该计算机的地址位数决定的
,也就是计算机的最大寻址能力。例如,32位机的寻址能力为2的32次方,大约为4G。所以虚拟内存的大小也受计算机地址位数的限制。
15.磁盘调度算法有哪些
1、先来先服务(FCFS)First Come First Service
这是一种比较简单的磁盘调度算法。它根据进程访问磁盘的先后次序进行调度。此算法的有点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。此算法由于未对寻道进行优化,在对磁盘的访问请求比较多的情况下,此算法将降低设备服务的吞吐量,致使平均寻道时间可能较长,使各进程得到服务的响应的时间变化幅度较小。
2、最短寻道时间优先算法(SSTF)Shortest Seek Time First
该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,该算法可以得到比较好的吞吐量,但却不能保证平均寻道时间最短。其缺点是对用户的服务请求的响应机会是不均等的,因而导致响应时间的变化幅度很大。在服务请求很多的情况下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期。
3、扫描算法(Scan)电梯调度
扫描算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。例如,当磁头正在自里向外移动时,扫描算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的。这样自里向外的访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动。这时,同样也是每次选择这样的进程来调度,即其要访问的磁道,在当前磁道之内,从而避免了饥饿现象的出现。由于这种算法中磁头移动的规律颇似电梯的运行,故又称电梯调度算法。
4、循环扫描算法(Cscan)
循环扫描算法是对扫描算法的改进。如果对磁道的访问请求是均匀分布的,当磁头到达磁盘的一端,并反向运行时落在磁盘之后的访问请求相对较少。这是由于这些磁道刚刚被处理,而磁盘另一端的请求密度相当高,且这些访问请求等待的时间较长,为了解决这种情况,循环扫描算法规定磁头单向移动。例如,只自里向外移动,当磁头移到最外的被访问磁道时,磁头立即返回到最里的欲访磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描。
16.I/O控制方式有哪些
1、程序I/O方式
早期的计算机系统中,没有中断系统,所以CPU和I/O设备进行通信,传输数据时CPU速度远快于I/O设备,于是CPU需要不断测试I/O设备,看其是否完成了传输。
2、中断驱动方式
当某进程要启动某个I/O设备工作时,便由CPU向相应的设备控制器发出一条I/O命令,然后立即返回继续执行原来的任务。仅当输完一个数据时,才需CPU花费极短的时间去做些中断处理。
3、DMA方式(直接存储器访问)
通过在I/O设备和内存之间开启一个可以直接传输数据的通路,采用DMA控制器来控制一个数据块的传输,CPU只需在一个数据块传输开始阶段设置好传输所需的控制信息,并在传输结束阶段做进一步处理。
4.I/O通道控制方式
虽然DMA方式比起中断方式来已经显著地减少了CPU的干预,即已由以字(节)为单位的干预减少到以数据块为单位的干预。但CPU每发出一条I/O指令,也只能去读/写一个连续的数据块。而当我们需要一次去读多个数据块且将它们分别传送到不同的内存区域,或者相反,则需由CPU分别发出多条I/O指令及进行多次中断处理才能完成。通道方式所需要的CPU干预更少,而且可以做到一个通道控制多台设备,从而进一步减轻了CPU负担。通道本质上是一个简单的处理器,专门负责输入、输出控制,具有执行I/O指令的能力,并通过执行通道I/O程序来控制I/O操作。通道的指令系统比较简单,一般只有数据传送指令、设备控制指令等。