现在的位置: 首页 > 综合 > 正文

OS基础复习

2013年08月31日 ⁄ 综合 ⁄ 共 2237字 ⁄ 字号 评论关闭

一、线程/进程管理

作业调度:
1 先来先服务:按作业的到达时间进行调度,先到达先调度。
2 最短作业优先:优先执行所需时间最短的作业。
3 优先数:优先执行优先级高的作业。
4 最高响应比优先:优先执行响应比高的作业。响应比=(等待时间+计算时间)/计算时间。

进程调度:

1 先来先服务:先执行最先进入就绪队列的进程。
2 最短优先:优先执行所需时间最短的进程。
3 最高响应比:优先执行响应比高的进程。响应比=(等待时间+要求服务的时间)/要求服务的时间。
4 优先级:优先执行优先级高的进程。
5 时间片轮转:按照先进先出的规则给进程分配时间片,时间片结束后不管有没有执行完,都将执行下一进程。
6 多级反馈队列:多个就绪队列,每个队列的优先级不同、时间片也不同,优先级高的队列时间片短。进程先进入第一队列,如果在规定的时间片内没执行完则进入第二队列,依此类推。

产生死锁的原因主要是:
(1)因为系统资源不足。
(2)进程运行推进的顺序不合适。
(3)资源分配不当等。

产生死锁的四个必要条件:
(1)互斥条件:一个资源每次只能被一个进程使用。
(2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3)不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

避免死锁:
死锁的预防是通过破坏产生条件来阻止死锁的产生,但这种方法破坏了系统的并行性和并发性。
死锁产生的前三个条件是死锁产生的必要条件,也就是说要产生死锁必须具备的条件,而不是存在这3个条件就一定产生死锁,那么只要在逻辑上回避了第四个条件就可以避免死锁。
避免死锁采用的是允许前三个条件存在,但通过合理的资源分配算法来确保永远不会形成环形等待的封闭进程链,从而避免死锁。该方法支持多个进程的并行执行,为了避免死锁,系统动态的确定是否分配一个资源给请求的进程。
预防死锁:具体的做法是破坏产生死锁的四个必要条件之一
死锁避免:银行家算法。

进程与线程

进程是资源分配的基本单位;线程是系统调度的基本单位。
平时我们写的程序都是作为线程运行的;进程可以看做是包括一系列线程和资源的统称;一个进程至少包括一个线程(主线程,进入main函数时产生的);在其中可以创建其它线程,也可以不创建。

同一进程间的线程究竟共享哪些资源呢,而又各自独享哪些资源呢?

共享的资源有
1.堆:由于堆是在进程空间中开辟出来的,所以它是理所当然地被共享的。(16位平台上分全局堆和局部堆,局部堆是独享的)
2.全局变量:它是与具体某一函数无关的,所以也与特定线程无关,因此也是共享的。
3.静态变量:虽然对于局部变量来说,它在代码中是声明在某一函数中的,但是其存放位置和全局变量一样,存于.bss和.data段,是共享的。
4.文件等公用资源:这个是共享的,使用这些公共资源的线程必须同步。Windows提供了几种同步资源的方式,包括信号、临界区、事件和互斥量。

独享的资源有
标识线程的线程ID,一组寄存器值(线程中存放的是副本),线程自己的栈,调度优先级和策略,信号屏蔽字,errno变量,线程私有数据

二、存储器管理

分页式:将一个进程的逻辑地址空间分为若干个大小相等的片,称为页面或页。相应地,内存空间分成若干个物理块,页和块的大小相等。可将用户程序的任一页放在内存的任一块中,实现了离散分配。
地址结构:页号+页内地址。通过页表找物理地址(地址映射)。
快表(TLB):缓存页表,加快地址转换。

分段式:将用户程序地址空间分成若干个大小不等的段,每段可以定义一组相对完整的逻辑信息。存储分配时,以段为单位,段与段在内存中可以不相邻接,也实现了离散分配。
主要是为了满足用户编程的需要:1)方便编程。2)信息共享:对程序和数据共享时,是以信息的逻辑单位为基础的,信息的逻辑单位即是段。3)信息保护:对信息的逻辑单位进行保护。4)动态增长:分段可以很好的解决数据动态的增长。5)动态链接:可以将需要运行的段链接起来调入内存运行。
地址结构:段号+段内地址。通过段表实现地址映射。

分页系统能有效的利用内存,分段系统则能很好的满足用户需要。

段页式:是分段和分页原理的结合,即先将用户程序分成若干个段,再把每个段分成若干个页,每个段有个段名。地址结构:段号+段内页号+页内地址。利用段表和页表实现地址映射。

程序的局部性原理:
1)时间局部性。如果程序中的某条指令一旦执行,则不久该指令可能再次执行。如果某数据被访问过,则不久该数据可能再次被访问。典型原因就是程序中存在大量的循环操作。
2)空间局部性。一旦程序访问了某个存储单元,在不久以后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址,可能集中在一定的范围之内。典型情况便是程序的顺序执行。

虚拟存储器:允许将一个作业分多次调入内存。1)请求分页系统。2)请求分段系统。

页面置换算法:
1 先进先出:淘汰最早进入cache的信息块。会产生belady现象:分配的物理块增多,缺页中断次数反而增多。
2 最近最久未使用:淘汰近期使用频率最低的信息块。
3 随机替换:用随机数发生器随机产生一个信息块号,然后淘汰掉。
4 优化替换:此方法必须先执行一次程序,然后根据cache替换情况对接下来的信息块进行替换。
5 最佳置换:淘汰规则是将以后永远不会用到或者最长时间不会用到的信息块淘汰掉。此方法能够最大限度的减少缺页率,但是这是一种理想的方法,现实是无法实现的,只能作为其他置换算法的一个衡量标准。

 

抱歉!评论已关闭.