摘要:
1. 页表很大,页表的放置就成问题 当页表中的号不连续的时候,就要进行查找,其中的20就是代表每次访问一个地址,要额外查页表20次,这样效率又不高了 所以说页表中也不能只存放只存在用到的页,页号连续的话根据偏移一次就能找到 2. 多级页表 即页目录表(章)+页表(节) 3. 快表 多级页表提高了空间 阅读全文
摘要:
接下来的问题是内存怎么分割? 这样就可以将程序的各个段载入到相应的内存分区中 1. 固定分区与可变分区 2. 可变分区的管理过程 核心数据结构 请求分配 释放内存 再次申请 例题: 3. 引入分页 解决内存分区导致的内存效率问题 1. 可变分区造成的问题 2. 从连续到离散 3. 接下来就是页表 阅读全文
摘要:
1. 从计算机如何工作开始 首先让程序进入内存 重定位:修改程序中的地址(是相对地址) 程序载入后还需要移动 重定位的最合适时机 运行时重定位 首先在内存中找一段空闲的内存,然后把这段空闲内存的地址找到例如起始地址1000,然后把这个1000赋给PCB,因为创建了进程自然就有了PCB,这个起始地址就 阅读全文
摘要:
1. 死锁问题出现 2. 死锁的成因 3. 死锁的4个必要条件 4. 死锁处理方法 1. 死锁预防 2. 死锁避免 判断这次请求是否会引起死锁? 算法实现 死锁避免之银行家算法实例 请求出现时: 首先假装分配,然后调用银行家算法 3. 死锁检测+恢复: 发现问题再处理 例题: 4. 死锁忽略 阅读全文
摘要:
1. 从纸上到实际 2. Linux 0.11读磁盘 申请缓冲区,启动读的命令,开始阻塞 3. sleep_on形成的队列 4. 唤醒 阅读全文
摘要:
什么是信号量?通过对这个量的访问和修改,让大家有序推进 1. 共同修改信号量引出的问题 2. 竞争条件 3. 解决竞争条件的直观想法 4. 临界区 临界区:临界区是指进程中的一段需要访问共享资源并且另一个进程处于相应代码区域时便不会被执行的代码区域 互斥:当一个进程处于临界区并访问共享资源时,没有其 阅读全文
摘要:
1. 进程合作 多个进程共同完成一个任务 每个进程有自己执行的一套方案,但不是每个程序都是可以随便执行的,有时候需要等待,有的进程会给它发一些信号,根据这些信号来决定是否继续执行 2. 生产者 消费者实例 那个地方需要停?那个地方需要走? 3. 只发信号还不能解决全部问题 问题的关键在于消费者仅仅是 阅读全文
摘要:
1. Linux 0.11的调度函数schedule() 1. 也就是找到了counter最大的进程,然后就跳出去执行switch_to,对应上面的优先级算法,而counter本身也是时间片,也作了轮转调度 2. 现在就绪态的所有进程的时间片都用完了counter=0,右移+本身就是把counter 阅读全文
摘要:
1. 多进程图像与CPU调度 2. CPU调度的直观想法 3. 如何设计调度算法? IO约束型任务:前台任务,输入输出多,和用户有交互 CPU约束型任务:后台任务 4. 常见的三种调度算法 First Come , First Served (FCFS) 如何缩短周转时间? 1. 第一种:SJF(短 阅读全文
摘要:
The mind is not a vessel that needs filling , but wood that needs igniting ! 1. 运转CPU 程序计数器pc 将pc置一个初值,然后取值执行,cpu就运转起来了 2. CPU没有好好运转 当遇到IO设备的时候,cpu得等待 阅读全文