摘要: rebel n.不守规矩者 smart ass n.自作聪明的家伙 dork n.呆子 weed n.大麻 I could feel rain stinging my face n.雨水刺在脸上 shower supplies n.淋浴用品 Victoria did her usual suck-u 阅读全文
posted @ 2020-11-02 21:53 HermioneGranger 阅读(87) 评论(0) 推荐(0)
摘要: #内存换出 有换入就应该有换出!等价交换! 必须要选择一个页换出,选择哪一页淘汰emm? 下面介绍淘汰算法。 一、FIFO 先来的先走。 二、MIN 内存当中,将来最久没有使用过的page滚蛋。 效果很好,但是我们做不到,我们不知道将来会有什么东西过来。 三、LRU 用过去的历史预测我来,选最近最长 阅读全文
posted @ 2020-10-28 15:33 HermioneGranger 阅读(109) 评论(0) 推荐(0)
摘要: #内存换入与请求调页 为了实现虚拟内存,就应该有换入换出。 用户可以随意使用该内存,如char *p, p=3G,实际上就是使用该地址,而后续该内存如何映射到物理内存是对用户透明的。 如果逻辑地址空间比物理地址空间更大怎么办?这就引入了换入。 先把东西放到disk上,要用到的时候再放到内存当中来。 阅读全文
posted @ 2020-10-28 14:58 HermioneGranger 阅读(122) 评论(0) 推荐(0)
摘要: #段页结合的实际内存管理 底层希望段管理,用户希望页管理...如何结合呢? 这就引出了虚拟内存的概念。 我们设置一种地址空间,称之为虚拟内存,向上,可以为用户提供段;向下,将段映射到物理帧上。 对用户来说,是段的使用,对物理内存来说,是页的使用。 寻址: 用户给出CS: IP,先查段表,访问某个段内 阅读全文
posted @ 2020-10-28 13:33 HermioneGranger 阅读(158) 评论(0) 推荐(0)
摘要: #多级页表与快表 分页会有问题,为了提高利用率,页应该小吧,但这样页表项就会增加==,到后面就会膨胀得很厉害。例如,4k的页,4G的物理,那么就会有4G/4k=4M个页表项!。不仅如此,每个进程的pcb都要保存一份页表。。。 但实际上大部分逻辑地址根本不会用到,能不能把页表压缩? 第一种尝试:只存放 阅读全文
posted @ 2020-10-28 12:44 HermioneGranger 阅读(278) 评论(0) 推荐(0)
摘要: #内存分区与分页 如何在内存中找出一段空闲的区域?如何分割内存? 简单点,固定分区,内存等分成K个分区。但是有问题,每个程序需要的段大小都不一样,这样造成浪费。 所以,一般采用可变分区,其核心结构是表,记录空闲的内存与已经分配的内存。 如果某次申请的时候,有两个分区都满足要求,那么应该pick谁?下 阅读全文
posted @ 2020-10-26 13:16 HermioneGranger 阅读(126) 评论(0) 推荐(0)
摘要: #内存使用与分段 计算机如何工作?从内存中取址,cpu执行指令,从内存中取址,cpu执行指令...... 内存使用:将程序放在内存当中,并令程序执行起来。但是让程序进入内存时,会发生一些问题,汇编指令的调转地址与物理地址必须一致,如果有两段汇编都要将程序放到0-40的地方,怎么办?这就会发生一些矛盾 阅读全文
posted @ 2020-10-26 09:24 HermioneGranger 阅读(104) 评论(0) 推荐(0)
摘要: #死锁处理 一个死锁的栗子,来源于用户对信号量的错误使用,形成一种信号量需求环路,相互依赖,导致谁也无法向下进行。更坏的情况是,锁住的资源越来越多,导致最后cpu不工作了。 (这里应该是先使用P(mutex),再P(empty))先使用了mutex,然后由于empty不够则producer被阻塞,另 阅读全文
posted @ 2020-10-25 23:41 HermioneGranger 阅读(101) 评论(0) 推荐(0)
摘要: #信号量的代码实现 申请信号量,这个在内核中实现,因为信号量中具有pcb。 每个信号量具有唯一的标识,内核根据标识在信号量表中查询信号量。 这里用开关中断来保证原子性。 具体逻辑是,在做相关操作之前,调用wait函数,判断当前信号量的值,判断自己是否要进入等待队列,如果要就schedule。 如果不 阅读全文
posted @ 2020-10-25 18:43 HermioneGranger 阅读(196) 评论(0) 推荐(0)
摘要: #信号量临界区保护 共同修改一个变量,可能会发生问题。 这种情况称为Race Condition,不是编程的问题,是系统调度的问题。 解决问题的直观想法:给信号量上锁。一个程序在操作信号量的时候,确保信号量不能被别人修改。 我们定义临界区:一次只允许一个进程进入的该进程的那一段代码。其他地方叫剩余区 阅读全文
posted @ 2020-10-25 17:31 HermioneGranger 阅读(226) 评论(0) 推荐(0)