操作系统
文章平均质量分 81
DyingLive
软工大三
展开
-
ucore Lab8 文件系统
本实验依赖实验1/2/3/4/5/6/7。请把你做的实验1/2/3/4/5/6/7的代码填入本实验中代码中有“LAB1”/“LAB2”/“LAB3”/“LAB4”/“LAB5”/“LAB6” /“LAB7”的注释相应部分。说实话,本人水平有限,对于ucore很多地方确实还是不太理解,没有很好掌握操作系统的内部机理,只是大致有了一个整体框架,框架内部的细节还是没有填满,最近由于处理事情较多,过段时间写CSAPP的时候,再接再厉,希望到时候我的基础会扎实一些。顺便解释一下主要elf格式信息。原创 2023-08-06 15:40:14 · 185 阅读 · 0 评论 -
ucore lab7 同步互斥
管程中的成员变量信号量next和整形变量next_count是配合进程对条件变量cv的操作而设置的原创 2023-07-31 17:52:10 · 251 阅读 · 0 评论 -
ucore lab6 调度管理机制
在具体实现时,有一个需要注意的地方:stride属性的溢出问题,在之前的实现里面我们并没有考虑 stride 的数值范围,而这个值在理论上是不断增加的,在 stride溢出以后,基于stride的比较可能会出现错误。在trap中断处理函数中,当对应中断号的处理例程返回时会单独的检查need_resched的值,当发现为1时,则会触发schedule函数进行一次强制的线程调度,从而令当前时间片扣减为0的线程得以让出CPU,使其它的就绪线程能得到执行的机会。来调用调度算法的RR_proc_tick这个。原创 2023-07-28 20:21:56 · 288 阅读 · 0 评论 -
ucore Lab5 用户进程管理
系统调用在syscall.c中给出,通过设置了个函数指针数组进行绑定系统调用与对应函数原创 2023-07-24 14:57:04 · 184 阅读 · 0 评论 -
ucore lab4 内核线程管理
tf: 中断帧的指针,总是指向内核栈的某个位置:当进程从用户空间跳到内核空间时,中断帧记录了进程在被中断前的状态。之前在第六步添加进程到列表的时候也需要有这个操作,是因为进程进入列表的时候,可能会发生一系列的调度事件,比如我们所熟知的抢断等,加上这么一个保护机制可以确保进程执行不被打乱。idleproc: ucore: 第一个内核进程,完成内核中各个子系统的初始化,之后立即调度,执行其他进程。 context:报存的是进程运行时的上下文(各个寄存器状态),用于进程切换时,不丢失进程运行环境。原创 2023-07-22 17:47:01 · 179 阅读 · 0 评论 -
ucore lab3 虚拟内存管理
vma: 描述了一块连续的虚拟内存空间,保证start原创 2023-07-21 21:25:18 · 297 阅读 · 0 评论 -
ucore lab1
ucore lab1实验总结原创 2023-07-19 15:06:05 · 336 阅读 · 0 评论 -
ucore lab2 物理内存管理
总结:大致上就是链表的基本操作,不过要注意,分配释放时的标志信息要改写,感觉我的不太对在某些时候,有时候遍历输出的时候遍历链表就死循环了,但是看起来分配和回收时不影响,有些神奇。就是将空闲内存挂在空闲链表上,我看答案是一个一个都挂上去了,然后将开头设置包含后面的信息,而我是直接一把他们变成一整块挂在链表上。释放时,也是先找位置,我是直接找到该位置后面的一个位置,然后循环向前看能否合并,不能合并break就行。分配内存的时候,遍历空闲链表,遇到第一个可以用的就取下来,如果还比较大就切一下。原创 2023-07-19 15:56:23 · 376 阅读 · 0 评论