考研复试-操作系统知识点总结(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/MakeContral/article/details/60350015

要想学好操作系统,我觉得把握整体是很重要,对知识点的记忆也会更加明了。

我们就从操作系统的功能说起吧:主要是处理机管理、文件管理、存储管理、设备管理、用户接口。主要讲讲处理机管理和存储管理。

1.  处理机管理

在复杂的作业处理过程中,有时候我们需要对作业、进程进行调度,切换。好比如这里有两个作业,A、B那我们先去完成谁呢,这就是需要操作系统来管理处理机,使得处理机的效率更高。

一般来说,处理机调度可以分为4级:

1)作业调度。又称高级调度,其主要任务是按一定的原则从外存上处于后备状态的作业中挑选一个(或多个)作业,给它(们)分配内存、输入/输出设备等必要的资源,并建立相应的进程,以使它(们)获得竞争处理机的权利。

2) 中级调度。又称内存调度。引入中级调度是为了提高内存利用率和系统吞吐量。为此,应使那些暂时不能运行的进程,调至外存等待,把此时的进程状态称为挂起状态。当它们已具备运行条件且内存又稍有空闲时,由中级调度来决定,把外存上的那些已具备运行条件的就绪进程,再重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待。
3)进程调度。又称为低级调度,其主要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。进程调度是操作系统中最基本的一种调度,在一般操作系统中都必须配置进程调度。进程调度的频率很高,一般几十毫秒一次。

4)线程调度

针对前三种的调度可以观察下图进行理解。


在操作系统中存在多种调度算法,其中有的调度算法适用于作业调度,有的调度算法适用于进程调度,有的调度算法两者都适用。下面介绍几种常用的调度算法。

1)先来先服务(FCFS)调度算法(first coming first server)

FCFS调度算法是一种最简单的调度算法,该调度算法既可以用于作业调度也可以用于进程调度。

在作业调度中,算法每次从后备作业队列中选择最先进入该队列的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列
在进程调度中,FCFS调度算法每次从就绪队列中选择最先进入该队列的进程,将处理机分配给它,使之投入运行,直到完成或因某种原因而阻塞时才释放处理机。

2)短作业优先(SJF)调度算法

短作业(进程)优先调度算法(ShortestJob First )是指对短作业(进程)优先调度的算法。短作业优先(SJF)调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程优先(SPF)调度算法,则是从就绪队列中选择一个估计运行时间最短的进程,将处理机分配给它,使之立即执行,直到完成或发生某事件而阻塞时,才释放处理机。

3)优先级调度算法

优先级调度算法又称优先权调度算法,该算法既可以用于作业调度,也可以用于进程调度,该算法中的优先级用于描述作业运行的紧迫程度。
4)时间片轮转调度算法
时间片轮转调度算法主要适用于分时系统。在这种算法中,系统将所有就绪进程按到达时间的先后次序排成一个队列,进程调度程序总是选择就绪队列中第一个进程执行,即先来先服务的原则,但仅能运行一个时间片,如100ms。在使用完一个时间片后,即使进程并未完成其运行,它也必须释放出(被剥夺)处理机给下一个就绪的进程,而被剥夺的进程返回到就绪队列的末尾重新排队,等候再次运行。


2 .存储管理

前面讲好了作业进程的调度以及调度的算法,那么我们现在想:在确定某个调度算法的时候,一个进程(作业)该如何去占用内存来处理呢。如何把这个进程映射到内存中具体的物理地址呢。内存又该如何分配回收呢。这就需要操作系统来进行存储的管理。

2.1存储管理的功能

存储管理的功能主要有:虚拟存储器、地址变化、内存信息的共享与保护、内外侧数据传输的控制、内存的分配与

回收。这里讲一下虚拟存储器和地址变化。

1)虚拟存储器:虚拟即指该存储器是不存在,在处理较大的进程时,由于内存的容量小,不能将所有的程序放进内存中,于是将并不经常被访问及大部分程序先放到外存中,等到要使用了再将它们拉入内存中。这就是所谓的虚拟存

储。

 

2)地址变化:在程序中虚存地址通常是相对的,如A程序说要用内存的Y地址,B程序也说要用Y地址。那我们就需要通过地址的一个转换让虚存变换到内存中物理线程空间。

主要有两种方法:静态地址重定位、动态重定位。

静态重定位的特点是在一个作业装入内存时,必须分配其要求的全部内存空间,如果没有足够的内存,就不能装入该作业。此外,作业一旦进入内存后,在整个运行期间不能在内存中移动,也不能再申请内存空间。静态地址的优点是不需要硬件的支持,缺点是做不到数据的共享。

动态重定位的特点是可以将程序分配到不连续的存储区中;在程序运行之前可以只装入它的部分代码即可投入运行,然后在程序运行期间,根据需要动态申请分配内存;便于程序段的共享,可以向用户提供一个比存储空间大得多的地

址空间。动态的优点是可以对内存非连续的分配、有利于程序的共享。

2.2分区存储管理

在整个内存快中,我们需要将内存划分为若干区域,除操作系统占用的区域之外,其余由多道环境下的各并发进程共享。主要有内存的连续与非连续分配管理方式。其中内存的连续分配管理有固定分区分配、动态分区分配。非连续的分配管理有分页存储管理方式、分段存储管理。

1)固定分区分配。

固定分区分配是最简单的一种多道程序存储管理方式,它将用户内存空间划分为若干个固定大小的区域,每个分区只装入一道作业。当有空闲分区时,便可以再从外存的后备作业队列中,选择适当大小的作业装入该分区,如此循环。

这种分区方式存在两个问题:一是程序可能太大而放不进任何一个分区中,这时用户不得不使用覆盖技术来使用内存空间;二是主存利用率低,当程序小于固定分区大小时,也占用了一个完整的内存分区空间,这样分区内部有空间浪费,这种现象称为内部碎片。

2)动态分区分配。

又称为可变分区分配,是一种动态划分内存的分区方法。这种分区方法不预先将内存划分,而是在进程装入内存时,根据进程的大小动态地建立分区,并使分区的大小正好适合进程的需要。因此系统中分区的大小和数目是可变的。

在进程装入或换入主存时,如果内存中有多个足够大的空闲块,操作系统必须确定分配哪个内存块给进程使用,这就是动态分区的分配策略,考虑以下几种算法:

首次适应(First  Fit)算法:空闲分区以地址递增的次序链接。分配内存时顺序查找,找到大小能满足要求的第一个空闲分区。

最佳适应(Best  Fit)算法:空闲分区按容量递增形成分区链,找到第一个能满足要求的空闲分区。

最坏适应(Worst  Fit)算法:又称最大适应(Largest Fit)算法,空闲分区以容量递减的次序链接。找到第一个能满足要求

的空闲分区,也就是挑选出最大的分区。

邻近适应(Next  Fit)算法:又称循环首次适应算法,由首次适应算法演变而成。不同之处是分配内存时从上次查找结束

的位置开始继续查找。在这几种方法中,首次适应算法不仅是最简单的,而且通常也是最好和最快的。在UNIX 系统的最初版本中,就是使用

首次适应算法为进程分配内存空间,其中使用数组的数据结构 (而非链表)来实现。不过,首次适应算法会使得内存的低地址部分出现很多小的空闲分区,而每次分配查找时,都要经过这些分区,因此也增加了查找的开销。

3)分页存储管理方式
固定分区会产生内部碎片,动态分区会产生外部碎片,这两种技术对内存的利用率都比较低。我们希望内存的使用能

尽量避免碎片的产生,这就引入了分页的思想把主存空间划分为大小相等且固定的块,块相对较小,作为主存的基本单位。每个进程也以块为单位进行划分,进程在执行时,以块为单位逐个申请主存中的块空间。分页的方法从形式上看,像分区相等的固定分区技术,分页管理不会产生外部碎片。但它又有本质的不同点:块的大

小相对分区要小很多,而且进程也按照块进行划分,进程运行时按块申请主存可用空间并执行。这样,进程只会在为最后一个不完整的块申请一个主存块空间时,才产生主存碎片,所以尽管会产生内部碎片,但是这种碎片相对于进程来说也是很小的,每个进程平均只产生半个块大小的内部碎片(也称页内碎片)。

4)分段存储管理方式
分页管理方式是从计算机的角度考虑设计的,以提高内存的利用率,提升计算机的性能, 且分页通过硬件机制实现,对用户完全透明;而分段管理方式的提出则是考虑了用户和程序员,以满足方便编程、信息保护和共享、动态增长及动态链接等多方面的需要。段式管理方式按照用户进程中的自然段划分逻辑空间。例如,用户进程由主程序、两个子

程序、栈和一段数据组成,于是可以把这个用户进程划分为5个段,每段从0 开始编址,并分配一段连续的地址空间(段内要求连续,段间不要求连续,因此整个作业的地址空间是二维的)。






没有更多推荐了,返回首页