并发性
共享性
虚拟性(把一个物理实体变成若干个逻辑上的对应物)
异步性
单体结构
层次结构
虚拟机结构
C/S结构
微内核架构
全局变量分配在全局数据段并且在程序开始运行的时候被加载, 局部变量则分配在堆栈里面。
运行进程的物理地址空间连续。页面的大小由硬件的地址结构决定。
把用户程序的地址空间划分为若干个大小相等的页,页号从0开始把内存空间划分为若干和页面大小相等的物理块,即内存块。每个物理块有编号,从0开始。
通常 存储再内存中。
页号,物理块号。
实现了逻辑地址到物理地址的映射。
逻辑地址由页号和页内偏移地址组成。
物理地址为:块号*块大小 + 偏移地址。
逻辑地址2052,页大小1KB,页表如下,求物理地址。
如图:2052/1024(1KB) = 2;2015%1024=4;分页机构为页号p=2、偏移w=4。
根据页表可知第二页对应物理块号为7.
则物理地址为7*1024+w = 7172
分页内存管理不会产生外部碎片,但是会产生内部碎片。
如果进程要求的内存不是页大小的整数倍,那么最后一个物理块就用不完,从而导致页内碎片。
另一个有点是可以共享共同的代码。
为了加快逻辑地址和物理地址转换过程中地址变换速度,在地址变换机构中增设一个有并行查询能力的特殊告诉缓冲 存储器,即快表。
快表用来存放当前访问的那些页表项。
变换步骤:
i>在CPU给出的有效地址后,地址变换机构自动将页号p送入高速缓冲寄存器中,并将此页号与高速缓存中的所有页号进行比较。
ii>如果其中有与此页号匹配的,便表示所要访问的页表项在快表中。
iii>直接从快表中读出该页号所对应的物理块号,并送到物理地址寄存器中。
iv>如果在快表中未找到相同的页表号,则必须再访问内存中的页表,从页表中找到该页号所对应的页表项后,把页表项中独处的物理块号送入地址寄存器。
v>同时,将此页号所对应的页表项存入快表中,即重新修改快表。
能加快虚实地址转换的是:I .增大块表 (TLB) 容量 II .让页表常驻内存
交叉存储器实质上是一种模块式存储器,它能并行执行多个独立的读写操作。
交叉存储器的每个模块都有自己的MAR和MDR。
交叉存储器的每个模块的地址是不连续的,相邻地址的单元位于相邻的模块。
进程间竞争资源和进程推进顺序非法。
满足以下4个条件,就会引起死锁。
指进程对所分配到的资源进行排他性使用,即一个资源每次只能被一个进程使用。
一个进程在请求新资源而阻塞时,对已获得资源又保持不放。
即:进程不是一次性获得所需所有资源,而是在占有一部分时申请新资源。
以及分配的资源不能从相应的进程中被强制抢占。
即:资源只能在进程完成任务后自动释放。
存在一个进程-资源的环状链,循环等待。
不发生死锁的条件:至少保证一个进程获得全部资源。
举例:N个进程共享11台打印机,每个进程要3台,N的取值不超过多少时,系统不会发生死锁?
最坏的情况是1个进程获取3台打印机资源,另外N-1个进程获取到2台打印机,等待获取第3台。所以3+(N-1)*2 = 11,N=5
破坏产生死锁的4个条件之一。
在资源动态分配过程中使用某种算法防止系统进入不安全状态,从而避免死锁发生。
采取适当措施,从系统中将已发生的死锁清除掉。
撤销或挂起一些进程,以便回收一些资源,再将这些资源分配给已处于阻塞态的进程,使之转为就绪态,以继续运行。
银行家算法
消进程法
资源静态分配法
资源分配图简化法。
所谓化简是指一个进程的所有资源请求均能被满足的话 , 可以设想该进程得到其所需的全部资源 , 最终完成任务 , 运行完毕 , 并释放所占有的全部资源 . 这种情况下 , 则称资源分配图可以被该进程化简 . 加入一个资源分配图可被其所有进程化简 , 那么称改图是可化简的 , 否则称改图是不可化简的
化简的方法如下 :
(1) 在资源分配图中 , 找出一个既非等待又非孤立的进程结点 Pi, 由于 Pi 可获得它所需要的全部资源 , 且运行完后释放它所占有的全部资源 , 故可在资源分配图中消去 Pi 所有的申请边和分配边 , 使之成为既无申请边又无分配边的孤立结点 .
(2) 将 Pi 所释放的资源分配给申请它们的进程 , 即在资源分配图中将这些进程对资源的申请边改为分配边 .
(3) 重复 (1),(2) 两步骤 , 直到找不到符合条件的进程结点
经过化简后 , 若能消去资源分配图中的所有边 , 使所有进程都成为孤立结点 , 则改图是可完全化简的 , 否则不可化简的 .