操作系统之进程管理和内存管理

进程和线程
进程主要是一些数据放在那里

进程可以创建线程,线程也可以创建线程
就绪,阻塞、运行三个状态之间的阻塞
线程切换可能造成进程切换,也可能不造成

处理机调度
算平均周转时间

进程同步
信号量pv为重点

临界资源和临界区不一样,临界资源是数据之类的,而临界区是代码段

pv不是系统调用

死锁

银行家算法,死锁避免
资源有向图,死锁检测
不死锁最小资源数
根据现有资源确定一个安全序列

内存管理概念和虚拟内存管理

编译链接装入
将源代码编译成若干目标模块
由链接程序将编译后形成的一组目标模块及所需的库函数链接在一起,形成一个完整的装入模块
由装入程序将装入模块装入内存中运行

链接有三种
静态链接
装入时动态
运行时动态链接

装入也有三种
绝对装入
可重定位装入
动态运行时装入

覆盖和交换
按顺序进行调入后续覆盖掉之前调入的
将不占有cpu的进程的资源换出内存,把占用cpu的掉进来

连续分配 管理方式
单一连续
固定分区,调入内存放入对应大小的地方,可以一样也可以不一样。
动态分区:由于分配给进程而造成了分区

固定分区产生内碎片,而动态分区产生外碎片,因此就产生了分页管理机制。
将程序切成一份一份的,映射到不同的页块中去,只保持了逻辑上的连续性

现在假设每个页大小为4kb,逻辑地址32位,按字节编址,我们的分页管理系统应该是个什么样的呢?
首先内存被我们分成了4kb一份份的大小
那么页内地址就是12位,还剩下20位的地址来给我们选择映射到那个页面
20位用3b就可以存储,如果采用对其,4b可能会比较好,那我们就得到了1mb个页,这么多逻辑页差不多得有4mb存放这个映射系统
存放这些映射关系的话需要1k页页表
说实话可能有点大了,每次运行都得把这么多页表带进来。
所以可以换一个思路,可以用一张页表一个总目录,也就是我们得顶级页表
1k张页表是十位,4kb,只有5张

页表起始地址和页表长度放在pcb中

虚拟内存

为什么引入虚拟内存
虚拟内存大小
虚拟内存解决什么问题,虚拟内存带来什么问题

解决作业运行时必须全部装入内存的问题,内存过小的问题
运用了局部性原理,只装入一部分,另一部分在内存外,假装装入了

需要以下硬件支持

一定内存外存
页表
中断
地址变换

虚拟存储器容量由cpu寻址位数决定

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值