ucore-lab3部分实验报告
更新时间:2024-01-04 16:16:01 阅读量: 教育文库 文档下载
- Ucore拉新推荐度:
- 相关推荐
Lab3 实验报告
任务一:完成alloc_proc函数
alloc_proc是申请一个新进程的函数,主要是申请一个进程结构体并对其中的一些变量进行初始化。首先为其申请一块物理内存:
struct proc_struct *proc = kmalloc(sizeof(struct proc_struct)); 变量初始化:
proc->state = PROC_UNINIT; //未初始化状态 proc->pid = -1; //进程id proc->runs = 0; //已调度的次数 proc->kstack = 0; //内核栈指针 proc->need_resched = 0; //是否需被调度 proc->parent = NULL; //父进程指针
proc->mm = NULL; // 内存管理信息 memset(&proc->context, 0, sizeof(struct context));//清零 proc->tf = NULL; //中断帧的指针
proc->cr3 = boot_cr3; //设置CR3为页目录表地址 proc->flags = 0; //标志位 set_proc_name(proc, \; //清空 list_init(&proc->list_link); //初始化链表 list_init(&proc->hash_link); //初始化链表
任务二:根据注释,完成do_fork函数
判断是否已存在进程数超过给定要求:if (nr_process > MAX_PROCESS) goto fork_out;
为新进程申请进程块:proc = alloc_proc();
设置当前进程为新进程的父进程:proc->parent = current; 为进程分配一个内核栈:setup_kstack(proc);
复制原进程内存管理信息到新进程:copy_mm(clone_flags, proc); 复制原进程上下文到新进程:copy_thread(proc, stack, tf); 保存中断符:uint32_t flag;
将新进程添加到进程列表:local_intr_save(flag);
设置进程:IDproc->pid = get_pid(); 设置进程hash链信息:hash_proc(proc);
将进程加入进程链表:list_add(&proc_list, &(proc->list_link)); 进程数加:1nr_process ++;
重载中断符:local_intr_restore(flag); 唤醒新进程:wakeup_proc(proc); 返回新进程号:ret = proc->pid。
任务三:编写sleep系统调用处理函数
确定睡眠时间有效:if (time <= 0) return 0; uint32_t flag;
关中断:local_intr_save(flag);
初始化一个定时器:timer_t *timer = kmalloc(sizeof(timer_t)); 把自己设为睡眠状态,并且正在等待延时: 添加定时:add_timer(timer); 开中断:local_intr_restore(flag); 进入睡眠:schedule();
从睡眠中苏醒并删除定时器:del_timer(timer);kfree(timer)。
设置好超时时间:timer = timer_init(timer, current, time);
current->state = PROC_SLEEPING;current->wait_state = WT_TIMER;
任务四:编写kill系统调用处理函数
进程可以被别的进程用kill系统调用并杀死。Kill函数实现很简单:在目标进程中的标志位设置中正在退出标记,并唤醒它就可以了。
找到目标进程:struct proc_struct *proc = find_proc(pid);
将其标志位设置为正在退出:proc->flags |= PF_EXITING; 如果它的状态处于被中断状态,则唤醒它:
if (proc->wait_state & WT_INTERRUPTED) wakeup_proc(proc); 如果找不到,返回错误:return -E_INVAL。
正在阅读:
ucore-lab3部分实验报告01-04
在xx展览会开幕式上的讲话05-23
关于脐针八卦图 一位脐针的朋友 指出11-06
煤矿的安全管理及采煤技术11-24
ERP原理与应用课程论文 (2)08-19
关于地方高校人才培养规格的若干思考01-07
太仓市2015~2016学年度第一学期初三英语期中教学质量调研试卷及答案06-08
2016-2017上信息技术工作计划03-15
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 实验
- 部分
- 报告
- ucore
- lab
- 学校行为习惯养成教育总结
- 常见动物、植物、水果等名词拼音
- 2018-2019学年人教版数学高考(文)一轮复习训练:第一章规范练4简单的逻辑联结词、
- 叶绿素、光和二氧化碳是光合作用必要条件的一组快速实验
- 201003企业文化复习大纲学生用
- 2019届高三高考模拟信息卷(押题卷)生物含答案4 - 图文
- 永辉超市及其供应链网络的简要分析
- 15旅游班应用文写作中期考试试题
- 防止幼儿园小学化倾向之我见
- 注水井管理及分层注水
- 冷轧带钢生产技术手册
- 中职生创业能力培养研究(学位论文) - 图文
- 铁路防寒过冬细化措施
- (中秋节作文)关于中秋节的作文:中秋感怀
- 浅议市场营销中的顾客需求分析
- 内蒙古呼伦贝尔市扎兰屯一中-度高一化学第一次综合考试
- (人教版)七年级下册教案:第六章第二节亚洲--自然环境-地形和河流 - 图文
- 油泥砂制备蒸压加气混凝土砌块试验研究毕业论文 - 图文
- 曲式分析考试
- 大学英语新世纪视听说第二册听力原文及答案免费