翻了翻《现代操作系统》

翻了翻《现代操作系统》


进程:一段运行中的程序
进程 = 程序 + 运行上下文; 代码包括数据
线程:程序中的一个执行流程
进程 = 线程 + 资源平台




一直不理解为何 说段式和页式内存管理都需要全部把程序装入内存,不是还有虚拟内存吗。 我说的应该是 基于段式或页式的虚拟内存管理;而这里提到的概念仅仅是 段式和页式内存管理(还没有虚拟内存,虚拟地址的概念,只是把逻辑地址映射到物理地址),所以说需要一次性把程序都装入内存
虚拟内存才需要有MMU的管理


物理页面,页框 Page Frame
逻辑页面,页 Page
页表: 页表基地址寄存器,页表长度寄存器


TLB: Translation Lookaside Buffer,存放最常用的页表项:之所以能加快查找是因为它位于MMU内部,不需要MMU再到内存中去查找页表项


页式的存储管理只有单一的一维线性逻辑地址空间,而实际各个代码中可能各个部分都会有动态增长或收缩,采用段式更合适
在段式存储管理中,用户的地址空间为二维空间(段号,段内偏移) 实现方式可以是:1 地址高端为段号,低端为偏移;2 指令中显式给出段号和段内偏移
系统为每个进程建立段表,给出了进程当中每一个段与它对应的内存分区之间的关系。段表在内存中,设置一个段表基址寄存器和一个段表长度寄存器


资源:需要排他性使用的对象


死锁:一个进程集合中所有的进程都在等待其他进程,这个进程集合则形成死锁
包括资源死锁和通信死锁
死锁的4个必要条件:
1 互斥条件。每个资源要么分配出去了,要么就是可用的
2 占有和等待条件。已经得到某个资源的进程可以再请求其他资源
3 不可抢占条件。已经分配给一个进程的资源不能强制性的被抢占,它只能由占有它的进程显式释放
4 环路等待条件。死锁发生时,系统中一定有两个或两个以上的进程组成一条环路,环路中每个进程都在等待下一个进程所占有的资源


有4种处理策略
1 忽略死锁
2 检测死锁并恢复
3 仔细对资源进行分配,动态避免死锁
4 破坏引起死锁的4个必要条件之一,防止死锁的产生


1 可能死锁发生频率太低,不值得为止损失性能或可用性
2 检测死锁的算法
现有资源,可用资源,当前分配矩阵,请求矩阵
何时开始检测
如何恢复
抢占恢复
回滚恢复
杀死进程恢复
3 死锁避免
资源的轨迹图。
银行家算法,但很少有进程在运行前就知道其所需要资源的最大值,而且进程数也不固定
4 死锁预防
1 破坏互斥条件
假脱机打印机
2 破坏占有和等待条件
1 所有进程执行前请求所需的全部资源。但很多进程直到运行时才知道它需要多少资源
2 当一个进程请求资源时,先暂时释放当前占用的所有资源,然后再尝试一次获得所需的所有资源
3 破坏不可抢占条件
不是所有的资源都可以像脱机打印机一样虚拟化,比如数据库中的记录必须被锁定
4 破坏环路等待条件
1 所有资源统一编号,进程可以在任何时候提出资源请求,但所有请求必须按照资源编号的顺序提出
2 变种是仅仅要求不允许进程请求比当前所占有资源编号低的资源
3 然而没有令所有人满意的编号次序。各方面资源数目太多
结论:死锁理论上没有办法解决


活锁:没有进程阻塞,但是都在空耗CPU
饥饿:某些进程在某些策略下永远得不到服务,虽然并不是死锁进程




多处理机系统
共享存储器多处理机:多个CPU共享访问一个公用的RAM


UMA: 统一存储器访问,各个CPU读出存储器字的速度是一样快的
1 基于总线
2 使用交叉开关
3 使用多级交换
NUMA多处理机


操作系统
每个CPU有自己的OS
主从多处理机
对称多处理机
多处理机同步


虚拟化




性能优化:够用就好

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值