![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
operator system
文章平均质量分 87
fang92
这个作者很懒,什么都没留下…
展开
-
6.828 lab1 bootload
第一个练习,主要是让我们熟悉汇编,嗯,没什么好说的。 Part 1: PC Bootstrap 首先,整个实验使用qemu这款模拟软件来,来对代码进行调试,相当于我们在qemu这个模拟的计算机平台上,运行自己的程序。可以再qemu这个软件上进行gdb的调试,比较方便。 首先看下整个内核在qemu上的模拟的结果: 整个内核现在能实现的就两个功能,一个kerninfo,原创 2015-06-16 14:18:40 · 1968 阅读 · 0 评论 -
JOS 系统调用的过程
系统调用,是用户态进程转向内核态的一种安全机制,在保证了内核空间安全并且不被破坏的的前提下,让用户态程序可以实现一定的功能。 通过JOS系统,来看系统调用的具体过程。 系统调用,在语言层面来看,其实可以把系统调用看成是一种函数的调用。只是这种函数调用,不同于一般的用户态下的函数调用,用户态下,函数调用,只需要用栈来保存各种信息就可以了,因为调用前后,保存的信息的栈都是用户地址空间下的栈,所以只原创 2015-09-14 20:15:50 · 2780 阅读 · 0 评论 -
JOS 轮转调度实现
JOS的轮转调度思想比较简单,当env[i]进程来调用sched_yield()函数的时候,表示进程i要让出CPU了,此时,系统会从i开始,不停的往下寻找状态为runnable的进程,然后执行那个进程。原创 2015-11-04 21:19:27 · 1142 阅读 · 0 评论 -
MIT6.828 Lab4 PartA
lab4地址:https://pdos.csail.mit.edu/6.828/2014/labs/lab4/ lab4主要是讲多核处理器的系统的实现,主要包括3个part,多核系统的实现,fork,和任务抢断。原创 2015-11-04 21:47:23 · 4033 阅读 · 0 评论 -
JOS大内核锁
JOS lab4里面,采用了SMT的操作系统,所以可能存在两个CPU同时进入内核态,虽然CPU之间的内核栈,但是多核同步可能还是会出现问题,所以JOS采用大内核锁来锁住整个内核,使得每次只有一个CPU会进入内核,另外的CPU如果申请进入内核态,是进不去的。原创 2015-11-03 22:29:37 · 1041 阅读 · 0 评论 -
JOS 系统中第一个用户进程的建立和运行
一:进程的表示: 在jos系统里面,进程用一个struct结构体Env来存储相应的信息,这个ENV的结构体有点类似于进程描述符一类的东西。 struct Env { struct Trapframe env_tf; // Saved registers struct Env *env_link; // Next free Env envid_t env_id; // Un原创 2015-09-11 21:22:53 · 1750 阅读 · 0 评论 -
ELF文件格式学习
最近的lab里面有ELF文件相关的,所以成这个几乎,学点ELF的东西。 ELF,是一种文件格式。暂时,只看可执行文件的ELF文件格式。 首先,给出文件的格式的布局图: 光看这个很难理解,所以写一个小的程序,用readelf来结合的看。 程序比较简单: #include #include int data[100] ={0}; int bss[100]; int main()原创 2015-08-30 12:22:55 · 1979 阅读 · 0 评论 -
MIT6.828 虚拟地址转化为物理地址——二级分页
Mit6.828 Lab2:http://pdos.csail.mit.edu/6.828/2014/labs/lab2/ lab2主要讲虚拟内存->物理内存的变换,通过一定的函数来实现软件MMU的部分。 整个地址转化的过程如下图所示: 首先,明确一点,在程序里面的所有地址,都是虚拟地址,程序里面是不会出现物理地址的,就算是物理地址,CPU也会把它当做虚拟地址,通过MMU转化为物理地原创 2015-08-06 20:14:35 · 3020 阅读 · 0 评论 -
MIT6.828 JOS系统 lab2
MIT6.828 LAB2:http://pdos.csail.mit.edu/6.828/2014/labs/lab2/ LAB2里面主要讲的是系统的分页过程,还有就是简单的虚拟地址到物理地址的过程。关于系统分页,在MIT6.828 虚拟地址转化为物理地址——二级分页中有讲。 下面主要是lab2的几个exercise的解题过程。 1.第一个boot_alloc()函数: stat原创 2015-08-19 21:52:31 · 7632 阅读 · 0 评论 -
MIT6.828 LAB4 PartB
JOS LAB4 PartB PartB主要讲述了fork的写时复制的实现,为了满足实现的要求,需要page_fault的实现,即页面异常处理。 这里主要实现几个系统调用函数,以供后面的fork实现调用。这些系统调用都比较简单。这里就看下 sys_exofork的实现。 sys_exofork这个函数只是fork函数的一个雏形,他的功能就是新建立一个进程,原创 2015-12-08 20:26:31 · 2129 阅读 · 1 评论