![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ucore
文章平均质量分 80
a284185006
这个作者很懒,什么都没留下…
展开
-
lab7同步互斥实现
哲学家就餐问题描述:有五个哲学家,他们的生活方式是交替地进行思考和进餐。哲学家们公用一张圆桌,周围放有五把椅子,每人坐一把。在圆桌上有五个碗和五根筷子,当一个哲学家思考时,他不与其他人交谈,饥饿时便试图取用其左、右最靠近他的筷子,但他可能一根都拿不到。只有在他拿到两根筷子时,方能进餐,进餐完后,放下筷子又继续思考。互斥是指某一资源同时只允许一个进程对其进行访问,具有唯一性和排它性,但互斥不用限制进程对资源的访问顺序,即访问可以是无序的。同步是指在进程间的执行必须严格按照规定的某种先后次序来运行,即访问是有原创 2021-06-22 22:48:58 · 178 阅读 · 0 评论 -
ucore操作系统总结
lab1 BootLoader启动ucoreos1、系统从一上电到加载完成的执行过程2、中断机制3、函数调用堆栈过程lab2 物理内存管理1、物理内存页分配算法first-fit(接下来要关注伙伴系统实现解决内存碎片问题)2、二级页表映射的建立lab3 虚拟内存管理1、Page Fault页访问异常处理2、页面置换机制lab4 内核线程管理1、第0个和第1个内核线程的创建2、调度并执行第1个内核线程lab5 用户进程管理1、进程创建与执行2、系统调用的实现lab6 调度器1原创 2021-06-14 22:35:05 · 896 阅读 · 3 评论 -
lab8文件系统与IO子系统原理
文件描述符文件访问方式:进程访问文件数据前必须先打开文件内核跟踪进程打开的所有文件:操作系统为每个进程维护一个打开文件表,文件描述符是打开文件的标识,即 文件描述符是操作系统在打开文件表中维护的打开文件状态和信息,其中包括:访问模式:顺序访问:按字节顺序一次读取(大多数)随机访问:从中间读写(不常用,但很重要,比如虚拟内存中把内存页存储在文件)索引访问:依据数据特征索引,操作系统通常不提供文正索引访问,可以在上面建数据库,数据块建立索引内容网络/分布式文件系统a. 例如:NFS,SMB,AF原创 2021-06-14 20:38:05 · 162 阅读 · 0 评论 -
死锁与进程通信原理
死锁概念:多个进程由于互相等待对方持有的资源而造成的谁都无法执行的情况叫死锁。进程访问资源的流程:申请空闲资源——进程占用资源——进程释放资源死锁检测死锁检测算法:死锁恢复:进程通信信号:进程间的软件中断通知和处理机制管道:进程间基于内存文件的通信机制消息队列:由操作系统维护的以字节序列为基本单位的间接通信机制共享内存:把同一个物理内存区域同时映射到多个进程的内存地址空间的通信机制...原创 2021-06-14 17:17:05 · 117 阅读 · 1 评论 -
lab7同步互斥原理
fork()是怎么实现的多进程并发运行,导致多个进程间有资源共享,比如CPU、内存,因此存在不确定性和不可重现,可能导致多次运行结果不一致。因此操作系统需要利用同步机制在并发执行的同时,保证一些操作是原子操作。原子操作是指一次不存在任何中断或失败的操作类比事务的原子性:要么操作成功完成,要么操作没有执行,不会出现部分执行的状态。互斥是指一个进程占用了某个资源,其他进程都不能使用该资源;死锁是指多个进程各占有了一部分资源,形成了循环等待;饥饿是指其他进程轮流占用资源,一个进程一直得不到资源。进入原创 2021-06-14 16:00:33 · 134 阅读 · 1 评论 -
lab6处理机调度实现
C语言实现类,函数指针接口什么情况下会触发调度?进程切换的详细过程,内核栈等等的切换原创 2021-06-14 11:10:08 · 492 阅读 · 0 评论 -
lab6处理机调度原理
处理机调度概念: 进程切换就是CPU资源当前占用者的切换,通过进程切换实现CPU的时分复用。进程切换时需要保存当前进程在PCB中的执行上下文,同时恢复下一个进程的执行上下文。**而处理机调度就是要实现从进程就绪队列中挑选下一个占用CPU运行的进程;如果存在多个可用CPU,还要从中挑选就绪进程可用的CPU资源。因此其中要关注两个内容:调度策略与调度时机。**调度时机: 有进程从运行状态切换到等待状态(非抢占);有进程退出(非抢占);正在运行的进程时间片用完(抢占);进程由等待转换到就绪(抢占)转载 2021-06-13 21:46:44 · 169 阅读 · 0 评论 -
lab5用户进程管理实现
不同的进程有各自的页表,所以即使不同进程的用户态虚拟地址相同,但由于页表把虚拟页映射到了不同的物理页帧,所以不同进程的虚拟内存空间是被隔离开的,相互之间无法直接访问。ucore把用户进程的虚拟地址空间分了两块,一块与内核线程一样,是所有用户进程都共享的内核虚拟地址空间,映射到同样的物理内存空间中,这样在物理内存中只需放置一份内核代码,使得用户进程从用户态进入核心态时,内核代码可以统一应对不同的内核程序;另外一块是用户虚拟地址空间,虽然虚拟地址范围一样,但映射到不同且没有交集的物理内存空间中。用户进程是如原创 2021-06-13 20:09:28 · 187 阅读 · 0 评论 -
lab4内核线程管理实现
一、关键数据结构1、TCB(线程控制块)二、内核线程的管理内核线程是一种特殊的进程,内核线程与用户进程的区别有两个:内核线程只运行在内核态用户进程会在在用户态和内核态交替运行所有内核线程共用ucore内核内存空间,不需为每个内核线程维护单独的内存空间而用户进程需要维护各自的用户内存空间如果要让内核线程运行,我们首先要创建内核线程对应的进程控制块,还需把这些进程控制块通过链表连在一起,便于随时进行插入,删除和查找操作等进程管理事务。这个链表就是进程控制块链表。然后在通过调度器(schedul原创 2021-06-08 22:15:16 · 192 阅读 · 0 评论 -
lab4、lab5进程管理原理
进程控制块(Process Control Block, PCB):定义:操作系统管理控制进程运行所用的信息集合。操作系统用PCB来描述进程的基本情况以及运行变化的过程PCB是进程存在的唯一标志,每个进程都在操作系统中有一个对应的PCB内容:进程标识信息PID:进程号UID等处理机现场保存堆栈指针:记录堆栈现场指令指针:记录进程运行到哪进程控制信息调度和状态信息:进程和处理机使用情况调度进程间通信信息:进程间通信相关的各种标识存储管理信息:指向进程映像存储空间数据结构进程所转载 2021-06-07 22:13:13 · 188 阅读 · 0 评论 -
lab3虚拟内存管理实现
通过内存地址虚拟化,可以使得软件在没有访问某虚拟内存地址时不分配具体的物理内存,而只有在实际访问某虚拟内存地址时,操作系统再动态地分配物理内存,建立虚拟内存到物理内存的页映射关系,这种技术称为按需分页(demand paging)。把不经常访问的数据所占的内存空间临时写到硬盘上,这样可以腾出更多的空闲内存空间给经常访问的数据;当CPU访问到不经常访问的数据时,再把这些数据从硬盘读入到内存中,这种技术称为页换入换出(page swap in/out)。这种内存管理技术给了程序员更大的内存“空间”,从而可以让更原创 2021-06-02 22:31:03 · 389 阅读 · 0 评论 -
lab3虚拟内存管理原理
覆盖:目标:在较小的可用内存中运行较大的程序。方法:依据程序逻辑,将程序划分为若干功能相对独立的模块,不会同时执行的模块共享同一块内存区域。具体有以下几点:必要部分(常用功能)的代码和数据常驻内存;可选部分(不常用功能)放在其它程序模块中,只在需要时加载到内存;不存在调用关系的模块可以相互覆盖,共用同一块内存区域。交换:交换与覆盖讨论的尺度是不太一样的。覆盖是一个程序内,如果无法全部加载到内存,而交换是内存足够放一个程序,而无法放多个程序。目标:增加正在运行或需要运行的程序的内存。实转载 2021-06-02 22:11:43 · 218 阅读 · 0 评论 -
lab2物理内存管理实现
lab2代码执行流程本次实验主要完成ucore内核对物理内存的管理工作。内存管理相关的总体控制函数是pmm_init函数(kern_init调用pmm_init),它完成的主要工作包括:1、初始化物理内存页管理器框架pmm_manager;2、建立空闲的page链表,这样就可以分配以页(4KB)为单位的空闲内存了;3、检查物理内存页分配算法;4、为确保切换到分页机制后,代码能够正常执行,先建立一个临时二级页表;5、建立一一映射关系的二级页表;6、使能分页机制;7、从新设置全局段描述符表;原创 2021-05-30 22:34:20 · 512 阅读 · 0 评论 -
lab2 物理内存管理原理
一、连续内存分配最先匹配(First-fit):找到的第一个大于我要分配的大小的空闲块最佳匹配(Best-fit):找到那个比我大,但是又是大的最小的那个最差匹配(Worst-fit):找到那个比我大,但是又是大的最多的那个二、非连续内存分配1、段氏存储管理如下图所示:在程序P运行过程中,CPU要访问逻辑地址中的某个位置,已经知道段号与偏移。操作系统中维护段表,段表记录段号对应的基址与长度,首先MMU比对偏移量与段号对应的长度,如果偏移量大于长度说明操作不合法内存异常,否则是合法的,此时将段基原创 2021-05-29 22:34:22 · 351 阅读 · 0 评论 -
lab2 练习
练习1:实现first-fit连续物理内存分配算法1.first-fit算法原理(最先匹配)从前往后找,找到第一个比我要分配空间大的分区代码如下(示例):struct Page { int ref; // page frame's reference counter uint32_t flags; // array of flags that describe the status of the page原创 2021-05-26 22:07:17 · 223 阅读 · 0 评论 -
lab1 BootLoader启动ucoreos实现
1原创 2021-05-21 21:04:27 · 228 阅读 · 1 评论 -
lab1练习
##实验目的完成一个能够切换到x86的保护模式并显示字符的bootloader,为启动操作系统ucore做准备。lab1中包含一个bootloader和一个OS。这个bootloader可以切换到X86保护模式,能够读磁盘并加载ELF执行文件格式,并显示字符。而这lab1中的OS只是一个可以处理时钟中断和显示字符的幼儿园级别OSlab1主要分为6个练习###练习1:理解通过make生成执行文件的过程。操作系统镜像文件 ucore.img 是如何一步一步生成的?一个被系统认为是符合规范的硬盘主引原创 2021-05-12 22:37:44 · 229 阅读 · 0 评论 -
lab0 实验环境搭建
安装VM VirtualBox虚拟机安装ubuntu 14.04(64bit)操作系统所需工具原创 2021-05-07 22:35:37 · 199 阅读 · 0 评论