![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
康宇
这个作者很懒,什么都没留下…
展开
-
ChCore Lab1 机器启动 学习笔记
本文为上海交大ipads研究所陈海波老师等人所著的《现代操作系统:原理与实现》的课程实验(LAB)的学习笔记。实验链接:好大学慕课的第十六章,链接以后可能会更换。课程视频&PPT:SE315 / 2020 / Welcome先说感受:虽然不是实验的设计和引导不是很完美,但做起来还是蛮爽的。环境配置能用虚拟机的请直接用讲义里给的虚拟机。想自己配环境的话…太遭罪了!实在是太遭罪了!我用的Ubuntu18的WSL,结果发现需要手动安装一堆依赖。人与人的体质不能一概而论,我在极端愤怒的情况下直接卸原创 2020-11-06 23:01:26 · 6546 阅读 · 3 评论 -
[操作系统]ucore lab8 文件系统 学习笔记
最后一战果然过瘾.代码量够多,新机制够复杂度,都管饱.做这一课就像从高山上往下走,坡急且路险,还不知自己的方位,琢磨不透系统的架构.待到下了山,回头一看豁然开朗,原来方才自己所下的山是这般模样.在这里面最重要的道具就是gdb的调用栈查看器了,没了它我肯定得迷失在深山里.打过了难关就是舒坦,成就感满满,跟打游戏一样还想继续,下一次打哪个BOSS呢?一般就CSAPP吧.概览先放定义:通用文件系统访问接口层(UFSAI):该层提供了一个从用户空间到文件系统的标准访问接口。这一层访问接口让应用程序能够通过一原创 2020-06-02 14:46:56 · 515 阅读 · 0 评论 -
[操作系统]ucore lab7 同步互斥机制 学习笔记
管程的设计实在是精妙,初看的时候觉得非常奇怪,这混乱的进程切换怎么能保证同一时刻只有一个进程访问管程?理清之后大为赞叹,函数中途把前一个进程唤醒后立刻把自己挂起,完美切换.后一个进程又在巧妙的时机将自己唤醒,同时让后一个挂起.看似松散的跳转背后竟然是无比严丝合缝的逻辑,真的就滴水不漏.等待状态在proc.h中又增加了等待定时器和等待内核信号量的宏供本节使用#define WT_INTERRUPTED // the wait state could be interrupted#define WT_C原创 2020-06-02 14:45:20 · 299 阅读 · 0 评论 -
[操作系统]ucore lab6 调度管理机制 学习笔记
这节虽叫调度管理机制,整篇下来主要就讲了几个调度算法.兴许是考虑到LAB5难,LAB6就仁慈了一把,难度大跳水.平常讲两节原理做一个实验,这次就上了一节原理.权当大战后的小憩吧.schedule函数调用点:proc.c::do_exit 用户线程执行结束,主动放弃CPU控制权。proc.c::do_wait 用户线程等待子进程结束,主动放弃CPU控制权。proc.c::init_main initproc内核线程等待所有用户进程结束,如果没有结束,就主动放弃CPU控制权;initproc内核线程原创 2020-06-02 14:44:45 · 444 阅读 · 0 评论 -
[操作系统]ucore lab5 用户进程管理 学习笔记
近几日睡眠质量不佳,脑袋一困就没法干活,今天总算时补完了.LAB5难度比LAB4要高,想要理解所有细节时比较困难.但毕竟咱不是要真去写一个OS,所以一些个实现细节就当成黑箱略过了.这节加上了用户进程,主要逻辑是:idle_proc内核线程–子进程–>init_proc内核线程–子进程–>user_main内核线程–load_icode–>exit用户进程–子进程–>新的用户进程,然后再逐级释放init_main: 在init内核线程中创建user_main内核线程user_me原创 2020-06-02 14:44:17 · 536 阅读 · 0 评论 -
[操作系统]ucore lab4 内核线程管理 学习笔记
越学越简单,真是越学越简单啊看视频的时候着实被那复杂的函数调用图吓到了.看代码的时候发现条理还是很清晰的,远没有没想象的那么复杂.这节创建了俩内核线程,然后运行第一个线程,再由第一个切换到第二个.kern_init:在vmm_init后加了一个proc_init在最末位加了个cpu_idelproc.c&.h枚举类proc_state定义了进程生命周期里的各种状态// process's state in his life cycle enum proc_state {原创 2020-06-02 14:42:33 · 470 阅读 · 0 评论 -
[操作系统]ucore lab3 学习笔记
做个总结,这节说是讲虚拟内存管理,大部分的时间都在搞SWAP机制和服务于此机制的一些个算法.难度又降了一截.不过现在我的电脑都16G内存了,能用完一半的情景都极少见了,可能到用到退休都不见得用的上SWAP机制了.在这种情况下SWAP分区也就象征性的分个几百兆了.vmm.c&.hvma:描述了一块连续的虚拟内存空间,保证start<=endstruct vma_struct {...原创 2020-04-21 14:30:26 · 380 阅读 · 0 评论 -
[操作系统]ucore lab2 学习笔记
总的来讲把的LAB1代码逻辑理顺后再往后学就轻松了一大截.LAB2过遍课程视频,再多翻翻实验指导书基本上就没遇到啥大坎儿.对这节学得东西做个总结就是一张图:练习0:填写已有实验本实验依赖实验1。请把你做的实验1的代码填入本实验中代码中有“LAB1”的注释相应部分。提示:可采用diff和patch工具进行半自动的合并(merge),也可用一些图形化的比较/merge工具来手动合并,比如me...原创 2020-04-16 22:18:54 · 988 阅读 · 0 评论 -
[操作系统]ucore lab1 学习笔记
开头赞美THU给我们提供了这么棒的资源.难是真的难,好也是真的好.这种广查资料,反复推敲,反复思考从通电后第一条代码搞起来理顺一个操作系统源码的感觉是真的爽.1. 操作系统镜像文件ucore.img是如何一步一步生成的?这makefile文件逻辑简略着看都能明白,仔细了瞧却处处有疑问,有的地方还用到了二重展开.对于初学者来讲,细读这东西太痛苦了,还是简略着读吧.# create kernel...原创 2020-04-14 21:43:24 · 1192 阅读 · 0 评论