操作系统知识复习

来源:互联网 发布:淘宝店所有权证明 编辑:程序博客网 时间:2024/05/20 20:19

 

操作系统知识复习 2011.05.02

多道程序设计(multiprogramming)宏观并行,微观串行

多重处理(multiprocessing)宏观并行,微观并行

并发:若干事件在同一个时间间隔内发生(参考RR轮转法)

 

进程:进程是程序的执行过程,是独立分配资源的基本单位

进程控制块PCBprocess control block):包含进程的描述信息,控制信息,资源信息

上下文context):一种属性的有序列,为驻留在环境内的对象定义环境。对象的激活过程中创建上下文,对象被配置,多个对象可在同一个上下文内

进程上下文:进程在执行过程中顺序关联的静态描述

上文已经执行过 的 进程指令和数据在寄存器堆栈的内容称

正文正在执行 ……

下文待执行   ……

进程上下文的提出 为了 进程上下文切换,就是在进程并发的时候,进程切换前后要保存和恢复该进程的状态,如保存恢复寄存器状态。

图片1

进程互斥

临界区:不允许并发的进程同时对其进行操作的程序区域。(书本上是说不允许进程交叉执行)

互斥准则:①公平竞争 ②有空让进 ③唯一进入 ④有限等待

互斥加锁法:缺点,不能保证准则③,在key发生变化前,多个进程拿到进入权限

信号量pv原语:(注意:在pv原语执行期间不允许中断的发生

信号量:semaphore['semə,fo]:缩写sem

sem>=0,sem为可供并发进程使用的实体数

sem<0,sem为正在等待的进程数

p原语:①sem减一 ②若sem-1 >= 0p原语返回,进程继续执行 ③若sem-1 < 0,进程进入等待队列,最后转进进程调度

v原语:①sem加一 ②若sem+1 > 0v原语返回,进程继续执行 ③若sem-1 <= 0,在等待队列中唤醒一个等待进程,再返回原进程继续执行或进行进程调度

 

进程同步:想想打印进程和打印机共同使用一个缓冲区的情况,打印进程要等待缓冲区空时候才会计算要打印的东西,计算后缓冲区满,打印机要缓冲区满时候才会开始打印,打印后缓冲区空。

 

进程死锁条件:①互斥条件 ②不剥夺条件 ③部分分配 ④环路条件

解决死锁:①一次性分配 ②资源顺序分配 ③先释放,后申请

 

线程:在进程的一部分,是CPU调度的一个基本单位减少调度切换时间,提高效率

线程和其他在同一个进程的线程共享进程的资源,进程拥有一个完整的虚拟地址空间。

线程分类:用户级线程(user-level threads)调度算法和过程全部由程序员自己决定,只进行线程上下文切换而不进行处理机切换,由于用户级线程的上下文切换和内核无关,所以进程的状态是阻塞或等待,线程状态可能还是执行的。

内核级线程(kernel-level threads)由系统内核管理,程序员可以通过系统调用和APC来对其操作,它们会被调度到一个处理机上并发进行,在执行状态时候不会出现阻塞或等待状态。

 

进程调度:①记录系统中所有进程的执行情况 ②选择占有处理机的进程 

③进行进程上下文切换

 

调度算法

FCFS先来先服务法

RR轮转法,平均分配时间片

OPT优先级调度法

SRR(selfish round robin)线性优先级调度策略

SJF最短作业优先法

SRTF抢占法(只要比当前剩余时间短则抢占)

HRN最高相应比优先法(响应比R=(W+T)/T,其中W是等待时间,T是执行时间)

 

其中FCFS不利于短作业,SJF处理个数多,可有的作业等待时间过长,HRN在两者之间。

 

存储管理

存储器由内存(primary storage)外存(secondary storage)组成。

 

虚拟存储器(Virtual Memory or Virtual Store):进程中目标代码、数据等的虚拟地址组成的虚拟空间。

 

地址重定位、地址映射:将逻辑的地址转换为实际的物理地址。

静态地址重定位(static address relocation):程序自行之前就做好地址的映射工作,优点:不需要硬件支持,缺点:无法实现虚拟存储器,必须占用连续的内存空间,程序和数据难以共享。

动态地址重定位(dynamic[dai'næmik] address relocation):在程序执行过程中计算实际的物理地址(实际地址=基址+偏移),要一对硬件寄存器支持,实现虚拟存储器的基础,可以对内存进行非连续分配,有利于程序段的共享。

内存信息保护:①上下界保护法:设定上下界,产生访问地址越界中断

保护键法:分配保护键作为开关来保护存储块,产生访问地址出错中断

 

分区存储管理

优点:多个进程对内存的共享,有利于多道程序设计,硬件支持小,算法简单

缺点:效率不高,碎片影响利用率,进程大小受分区控制,分区之间无法信息共享

固定分区法:一次分区,分区结束后整个执行过程分区将不会发生改变,缺点:浪费

动态分区法:按照作业调度次序分区,3种方法

最先适应法(first fit algorithm),尽可能地用了低地址,速度快,开销小

最佳适应法(best fit algorithm),由小到大排序,找刚合适的,会留碎片

最坏适应法(worst fit algorithm),由大到小排序,找最大的,尽量不留碎片

覆盖技术:在同一个进程中进行

把不需要同时执行的程序段放在共享的内存区中,要程序员写出覆盖结构。下面为程序的调用关系例如A(20K)调用B(50K)C(30K),就选BC之间最大的大小做覆盖区大小,则占用大小为20+50=70K


图片2

 交换技术:在不同进程中进行

就是把在等待状态的进程的数据一部分换出内存交换区(swap out),让外存的要使用的数据换入内存交换区(swap in)。只是由操作系统自己完成的。

 

页式存储管理

优点:有效解决碎片为题,提供内外存统一管理的虚拟实现方式,主存利用率高,扩大主存

缺点:要硬件支持,增加系统开销如缺页中断处理,消除了碎片,进程最后一页没利用

把进程的虚拟内存空间划分为长度相等的(page)

把内存空间按页的大小划分为(page frame)


图片3 

上图:页长为1K,拥有1024页的控件地址结构

静态页式管理:在进程开始执行前,把进程的程序段和数据全部装入内存的各个页面中

组成:页表(page mapping table):页号 和 页面号

      b 硬件地址变换机构

地址变换2次寻址

例如:(页号,页面号)={(0,2), (1,3), (2, 8)},每个页面长度为1K,指令MOV [2500],4 的虚地址为100,整个寻址过程为

①由虚地址为100 ——》 第0页,第100个单元 ——》页面号为2,则2*1K+100 = 2148

在物理地址2148找到了这条指令

2500/1K = 2 余 452 ——》 所在的页号为2,第452个单元 ——》 页面号为8,则1K*8+452 = 8644

物理地址8644 就是[2500] 的地址,就是说把4这个数据放到8644物理地址上

优点:解决了分区管理的碎片问题缺点:进程大小受内存可用页面数的限制

展望:高速联想存储器

动态页式管理:只装入反复执行和调用的工作区部分,请求页式管理和预调入页式管理

通过加上一个中断处理(终端位)来确认该页是否在外存中,和加上一个外存副本起始始址,再加上一个改变位,如果在调入内存的数据没有改变,那么就不用回调跟新外存副本了。

(页号,页面号,中断位,外存始址,改变位)

如果页面之间的调出调入非常频繁,产生抖动(thrashing)现象

缺页中断:硬件变换机构发现页面不在内存中,发出的中断。

置换算法

随机淘汰算法,在根本无法预测页面访问频率时候,随机换出在内存中的页面

FIFO:先换进,先换出,Belady现象:分配的页面数目增多,反而去也中断率增加

因为没有考虑程序执行的动态特征

RR轮转法:按时间换出

FIFORR的内存利用率不高,因为可能有的页面虽然存在时间长了,但是会访问频繁。

LRU(last recently used)最近最久未使用,难以实现,巨大系统开销

LFU(last frequently used)最不经常使用,要淘汰时候,淘汰上次淘汰到现在使用计数最小的页面,每次计数器清零。

NUR(no used recently)最近没使用,要淘汰时候,淘汰上次淘汰到现在最近没有被使用的页面,通过标志确定,每次都清标志

OPT(optional replacement algorithm)理想淘汰算法,无法实现,进程往往是无法预测的

存储保护:①地址越界保护 ②页表控制内存操作保护

 

段式管理

优点:每次交换的是一段有意义的信息,段长动态增长,具有对立逻辑的段可共享

缺点:硬件支持,高系统开销,碎片管理比页式差,段长度收内存可用区限制,可能抖动

由于分区式管理和页式管理时,进程地址空间都是线性的,所以要在编译链接的时候,把程序中的各个区域按现行空间排列起来,所以不同进程之间共享公用子程序和数据困难。

按过程(函数)分段,每段有自己的名字。

其实段式管理和动态页式管理差不多,就是段长可以变化,动态增长的,每个段对应一个模块module

 

段页式管理

段式管理方便,可共享,页式管理可以很好的克服碎片,提高存储器利用率。两者结合,虽然会带来很大的开销,但是贵在值得。

(段号,页号,页內对应地址)

通过段号找到段表,通过段表找到对应的页表,再在页表中找到页面号码,算出物理地址

共三个阶段查找。

 

Windows 内存管理机制

x86体系的处理器,页大小一般为4KB,预留机制让程序尽量得到连续虚拟地址空间

②一个进程对共享内存进行修改,为了不对共享数据产生影响,都是先把要修改的地方拷贝一份,然后这个进程再对拷贝的那一份修改,而且拷贝的那一份成了这个进程的私有页面。

这就是“拷贝后写入”的共享内存机制,同一块物理地址在不同进程空间中映射。

③堆管理,内存申请是以页(4KB)为单位的。如果要申请的内存较小时候,可以使用堆管理器管理,对于win32系统,堆管理器的内存分配 粒度可以小到8字节,每个进程都有一个进程堆,进程创建时候缺省分配1MB的进程堆空间,系统视情况动态增加进程堆空间。

④系统内存池,一些内核服务和驱动常驻内存,所以有一个不分页的内存池为服务分配内存而且还不会调到外存去,驱动例外,要通过内核模式来访问这些空间。

 

原创粉丝点击