ChCore-lab3】的更多相关文章

本文为上海交大 ipads 研究所陈海波老师等人所著的<现代操作系统:原理与实现>的课程实验(LAB)的学习笔记的第三篇:用户进程与异常处理.所有章节的笔记可在此处查看:chcore | 康宇PL's Blog 实现用户进程 进程结构 ChCore 中每个进程都对应一个 process 结构体.slot_table 是一个进程占有的内核对象数组和元信息组成的结构体.thread_list 是连接该进程所有线程的链表.如何通过 list_head 的得到对应的对象我们在 Lab 2 里已经学习过…
摘要: 源代码参见我的github:https://github.com/YaoZengzeng/MIT-6.824 Lab3: Paxos-based Key/Value Service Introduction 在Lab2中我们依靠单个的master view server来获取primary.如果view server不可用(崩溃了或者有网络问题),那么key/value service就不工作了,即使primary和backup都是可用的.而且它在处理server(primary或者ba…
[感受] 这次操作系统实验感觉还是比较难的,除了因为助教老师笔误引发的2个错误外,还有一些关键性的理解的地方感觉还没有很到位,这些天一直在不断地消化.理解Lab3里的内容,到现在感觉比Lab2里面所蕴含的内容丰富很多,也算是有所收获,和大家分享一下我个人的一些看法与思路,如果有错误的话请指正. [关键函数理解] 首先第一部分我觉得比较关键的是对于一些非常关键的函数的理解与把握,这些函数是我们本次实验的精华所在,虽然好几个实验都不需要我们自己实现,但是这些函数真的是非常厉害!有多厉害,呆会就知道了…
OS Lab3 踩坑记 Lab3在之前Lab2的基础上,增加了进程建立.调度和中断异常处理.其中测试包括进程建立以及进程调度部分. 由于是第一次做bug记录,而且是调试完bug后再做的记录,所以导致记录不完全.但是为之后bug记录的习惯打下基础. 进程建立测试(env_check) 注意 env_setup_vm() 中的pgdir地址赋值. 在 envid2env() 中当有 checkperm 时,检查失败也要给 *penv 赋值 0 (容易忘记). 这里最好检查一下 curenv 是否存在…
//yuec2 Yue Cheng package lab3; public class Fraction { int numerator; int denominator; //obeject with 1 Fraction() { numerator = 1; denominator = 1; } //object with passing value Fraction(int numerator, int denominator) { this.numerator=numerator; t…
CSAPP lab3 bufbomb-缓冲区溢出攻击实验(上)smoke fizz CSAPP lab3 bufbomb-缓冲区溢出攻击实验(下)bang boom kaboom 栈结构镇楼 这里先给出getbuf的反汇编代码和栈结构,方便下面的使用. 栈结构: 第2关:bang 构造攻击字符串作为目标程序输入,造成缓冲区溢出,使目标程序能够执行bang函数:并且要篡改全局变量global_value为cookie值,使其判断成功.但我们知道全局变量放置在bss节或data节,并不存放在栈中,前…
前言 完成这个实验大概花费一天半的时间,看了很多大佬的博客,也踩了很多的坑,于是打算写一篇博客重新梳理一下思路和过程,大概会有两篇博客吧. CSAPP lab3 bufbomb-缓冲区溢出攻击实验(上)smoke fizz CSAPP lab3 bufbomb-缓冲区溢出攻击实验(下)bang boom kaboom lab3要我们做这样一件事情,修改一个正在运行程序的stack以达到预期的目的.具体的修改方式是这样的:程序定义了一个局部C风格字符串变量,注意局部变量是放在stack上面的,所以…
资源 ucore在线实验指导书 我的ucore实验代码 练习1:给未被映射的地址映射上物理页 题目 完成do_pgfault(mm/vmm.c)函数,给未被映射的地址映射上物理页.设置访问权限的时候需要参考页面所在 VMA 的权限,同时需要注意映射物理页时需要操作内存控制结构所指定的页表,而不是内核的页表.注意:在LAB3 EXERCISE 1处填写代码.执行make qemu后,如果通过check_pgfault函数的测试后,会有"check_pgfault() succeeded!"…
jos系统调用函数链 记录自己对jos系统调用实现的理解. 用户程序访问系统服务的方法 用户使用系统服务的方式大概分为如下几种: (1)用户程序---->库函数----->系统调用----->内核 用户调用库函数,库函数中完成对实际系统调用的封装,并完成例如检测用户参数的工作,最终通过int指令进入内核 (2)用户程序---->系统调用----->内核 在用户程序中直接通过int 指令,进入内核. (1).(2)本质上是同一种,最终都是执行int指令进入内核.实际开发中,推荐…
在这里记录一下关于软件构造课程Lab3中关于正则表达式的应用. 在实验内容中,要求用正则表达式来匹配读入文件的内容,从而取得构建图需要的相关信息. 举个例子,读入的文件(GraphPoetTestFile.txt)内容如下: 先说一下文件内容中的数据格式: ①一定有一行,第一个单词为"GraphType",后面是一个空格.一个'='.一个空格,加上一个"类型名" ②一定有一行,第一个单词为"GraphName",后面是一个空格.一个'='.一个空…