- 博客(7)
- 收藏
- 关注
原创 ucore lab7
练习1: 理解内核级信号量的实现和基于内核级信号量的哲学家就餐问题(不需要编码) 比较Lab6和Lab7,发现区别主要在/kern/sync这个文件夹,其中就是实现信号量的一些代码。 Baidu百科 哲学家就餐问题可以这样表述,假设有五位哲学家围坐在一张圆形餐桌旁,做以下两件事情之一:吃饭,或者思考。吃东西的时候,他们就停止思考,思考的时候也停止吃东西。餐桌中间有一大碗意大利面,每两个哲学家之间有一只餐叉。因为用一只餐叉很难吃到意大利面,所以假设哲学家必须用两只餐叉吃东西。他们只能使用自己左右手边的那两
2020-05-08 19:26:11
626
原创 ucore lab6
练习1: 使用 Round Robin 调度算法(不需要编码) 完成练习0后,用make grade检查结果: 和练习1中说的一样,priority部分错误,其余正确。 请理解并分析sched_class中各个函数指针的用法,并接合Round Robin 调度算法描ucore的调度执行过程 请在实验报告中简要说明如何设计实现”多级反馈队列调度算法“,给出概要设计,鼓励给出详细设计 sch...
2020-05-07 17:08:03
727
原创 ucore lab5及challenge
练习1:加载应用程序并执行(需要编码) do_execv函数调用load_icode(位于kern/process/proc.c中)来加载并解析一个处于内存中的ELF执行文件格式的应用程序,建立相应的用户内存空间来放置应用程序的代码段、数据段等,且要设置好proc_struct结构中的成员变量trapframe中的内容,确保在执行此进程后,能够从应用程序设定的起始执行地址开始执行。需设置正确的t...
2020-05-07 16:52:52
1364
原创 ucore lab4及challenge
练习1:分配并初始化一个进程控制块 初始化kern/process/pro.c中的alloc_proc函数: static struct proc_struct * alloc_proc(void) { struct proc_struct *proc = kmalloc(sizeof(struct proc_struct)); if (proc != NULL) { //...
2020-05-07 16:42:59
1375
原创 ucore lab3及challenge
练习1:给未被映射的地址映射上物理页 page_fault函数不知道哪些是“合法”的虚拟页,原因是ucore还缺少一定的数据结构来描述这种不在物理内存中的“合法”虚拟页。为此ucore通过建立mm_struct和vma_struct数据结构,描述了ucore模拟应用程序运行所需的合法内存空间。 当访问内存产生page fault异常时,可获得访问的内存的方式(读或写)以及具体的虚拟内存地址,这样...
2019-09-29 14:10:05
2442
2
原创 ucore lab2及challenge
Lab2 练习1:实现 first-fit 连续物理内存分配算法 修改default_pmm.c中的default_init,default_init_memmap, default_alloc_pages, default_free_pages等相关函数。 default_pmm.c有一段很长的注释,首先应该要仔细阅读注释。 First, you should get familiar wit...
2019-06-22 15:18:39
3425
2
原创 ucore lab1及challenge
练习1 一、ucore.img是如何一步一步生成的? 1. 生成ucore.img需要kernel和bootblock # create ucore.img UCOREIMG := $(call totarget,ucore.img) $(UCOREIMG): $(kernel) $(bootblock) $(V)dd if=/dev/zero of=$@ count=10000 $(V)d...
2019-06-21 13:54:16
2306
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人