![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
os
文章平均质量分 93
Shine__Wong
明天一定好好学习。
展开
-
ucore lab7_report
Lab7 Report实验目的熟悉ucore中的进程同步机制,了解操作系统为进程同步提供的底层支持;在ucore中理解信号量(semaphore)机制的具体实现;理解管程机制,在ucore内核中增加基于管程(monitor)的条件变量(condition variable)的支持;了解经典进程同步问题,并能使用同步机制解决进程同步问题。实验内容实验六完成了用户进程的调度框架和具体...原创 2019-12-17 14:26:17 · 553 阅读 · 1 评论 -
LRU不会出现belady异常的证明
对于最近最久未使用算法(LRU, Least Recently Used),是不会出现belady异常(belady anomaly)的,证明如下:设分配给当前进程的页面数量为n,令SnS_nSn为当前时刻t,某个进程驻留在内存中的所有页面的集合。要证明LRU不会出现belady异常,即证对于任意的k > 0,给进程分配的页面数量为n + k时,对于同一个页面访问序列,SnS_nSn总...原创 2019-11-21 21:29:55 · 2010 阅读 · 0 评论 -
ucore lab1_report
实验目的操作系统是一个软件,也需要通过某种机制加载并运行它。在这里我们将通过另外一个更加简单的软件–bootloader来完成这些工作。为此,我们需要完成一个能够切换到x86的保护模式并显示字符的bootloader,为启动操作系统ucore做准备。lab1提供了一个非常小的bootloader和ucore OS,整个bootloader执行代码小于512个字节,这样才能放到硬盘的主引导扇区中。...原创 2019-11-19 21:55:11 · 737 阅读 · 0 评论 -
ucore lab2_report
Lab 2 Report实验目的理解基于段页式内存地址的转换机制理解页表的建立和使用方法理解物理内存的管理方法实验内容本次实验包含三个部分。首先了解如何发现系统中的物理内存;然后了解如何建立对物理内存的初步管理,即了解连续物理内存管理;最后了解页表相关的操作,即如何建立页表来实现虚拟内存到物理内存之间的映射,对段页式内存管理机制有一个比较全面的了解。本实验里面实现的内存管理还是非常...原创 2019-11-19 21:50:14 · 499 阅读 · 0 评论 -
进程管理(5):死锁
死锁的基本概念为什么会发生死锁?其实在前面进程管理的总结中,已经多次出现了死锁的概念,比如在信号量机制中,如果信号量使用不慎,就会出现死锁。实际上,在现实生活中,死锁现象也经常会出现,比如两个胖子过独木桥,比如哲学家就餐问题。比如我去清华面试,面试老师和蔼地让我陈述一下自己的科研经历,我说<我很厉害的,真的!你们先答应录我我就跟你们讲我的科研经历>,老师说<那不行,你得先...原创 2019-10-01 15:08:49 · 397 阅读 · 0 评论 -
哲学家就餐问题及其实现
哲学家就餐问题描述哲学家就餐问题是指,有五个哲学家围坐一桌,每两个哲学家之间都有一只叉子,一共有五只叉子。每个哲学家都只有两个动作,即思考和就餐,哲学家思考的时候不需要任何的资源,但只有同时拿起他左右的两只叉子,才能开始进餐。进餐完毕后将叉子放归原位。这个问题在于,应该如何保证哲学家们的动作有序进行,如不会出现有人永远拿不到叉子的情况。一些初步的尝试第一次尝试对哲学家就餐问题进行分析,可以...原创 2019-09-30 10:16:59 · 4590 阅读 · 1 评论 -
进程管理(4):信号量与管程
在进程管理(3):同步互斥中,我们提到,为了解决同步互斥问题,操作系统会提供一些高级抽象方法供应用进程调用,这样应用进程就不需要自己利用繁琐的软件方法来解决同步互斥了。存在三种高级抽象方法,分别是锁,信号量与条件变量,其中锁也在上面那篇中讨论过了,这里主要是讨论信号量与条件变量。同步互斥的层次结构如下图所示:信号量为什么要引入信号量?前面我们已经用锁机制方便的解决了临界区的互斥访问问题...原创 2019-09-26 16:51:24 · 3056 阅读 · 2 评论 -
多线程互斥之eisenberg算法
在前面进程管理(3):同步互斥中,已经就两个进程情况下互斥问题的软件实现方法进行了讨论,最终介绍了两种算法,即Peterson算法和Dekkers算法,这两种算法的基本思路是相同的,但是Dekkers算法更容易推广到多进程的情况。因此,以下我们将尝试以Dekkers算法为基础,实现多进程的互斥访问。一些简单尝试首先还是先来回顾一下Dekkers算法,它的代码描述如下:flag[i] = tr...原创 2019-09-22 21:13:45 · 1810 阅读 · 1 评论 -
进程管理(3):同步互斥
什么是同步互斥问题?引入了进程和线程的概念以后,多个进程和线程可以并发地在处理器中执行。在实际应用中,它们并不是独立地自己执行自己的,有时候会存在多个进程协作完成一个更大的任务。例如前面在进程管理(1):线程和进程的概念中提到的例子,一个MP3播放器软件,被划分为I/O读取数据,解压数据,和播放解压后的音频文件三个子模块,我们可以使用三个线程来实现这三个子模块,I/O操作总是把数据读到某一个缓冲...原创 2019-09-21 15:14:31 · 2287 阅读 · 0 评论 -
进程管理(2):进程调度策略
进程调度的概念第一个问题还是,为什么需要对进程进行调度?在前面一篇进程管理(1):进程和线程的概念中已经提出,进程这个概念是在多道程序的背景下产生的,之所以引入进程,就是为了让操作系统可以更好地管理这些并发的任务。而我们知道,进程的并发并不可能是真正的并行,因为无论是在单处理机还是多处理机中,进程的数量都远远多于CPU的内核数,因此进程的并发本质上只是对CPU资源的时分复用而已。一个CPU...原创 2019-09-17 10:43:15 · 1172 阅读 · 0 评论 -
进程管理(1):进程和线程的概念
进程产生的背景首先需要回答一个问题,为什么要引入进程的概念?前面在物理内存管理部分,我有提到物理内存管理的一切目的,都是为了多任务的系统,否则对于单道程序的操作系统,直接让那单道程序独占内存和CPU就可以了,自然不需要内存管理,显然也不需要进程的管理。所以,进程概念的产生,其实还是处在多道程序的背景下的。正是因为操作系统希望同时运行多道程序,而我们都知道程序运行需要资源,因此操作系统需要合理...原创 2019-09-11 17:55:19 · 465 阅读 · 0 评论 -
虚拟存储总结(2):页面置换算法总结
上次虚拟存储总结(1)中说到,当程序要加载不在内存中的页面时,就会产生一个缺页异常。从而操作系统会选择内存中的一个页面,将它换出到外存当中,这样需要加载的页面就可以驻留在刚刚释放出的内存空间了。那么,在内存中的页面那么多,操作系统是如何选择被换出的页面呢?这就是涉及到具体的页面置换算法。页面置换算法的设计思路前面提到,虚拟存储性能的一个评价指标是有效存储访问时间(EAT, Effective ...原创 2019-09-02 14:18:50 · 2685 阅读 · 1 评论 -
虚拟存储总结(1)
文中的图片都是来源于thu os课程的讲义,如有侵权请联系作者删除。虚拟存储产生的背景在计算机发展的过程中,程序规模的增长速度是远远大于存储器容量的增长速度的。于是喜欢做梦的人类就产生了一些不切实际的幻想,比如[如果我可以回到十年前就好了!],或者[如果我可以使用的存储空间比实际存储空间大该多好啊!]与别的白日梦不同的是,这个白日梦还真实现了。于是人们就开始了实现这个白日梦的探索工作。覆盖和交...原创 2019-08-31 18:02:24 · 537 阅读 · 0 评论