摘要: 这一部分要实现抢占式调度和进程间通信 前面的调度是进程资源放弃CPU,但是实际中没有进程会这样做的,而为了不让某一进程耗尽CPU资源,需要抢占式调度,也就需要硬件定时 但是外部硬件定时在Bootloader的时候就关闭了,至今都没有开启 而JOS采取的策略是,在内核中的时候,外部中断是始终关闭的,而在用户态的时候,需要开启中断 所以首先需要求改IDT,但是我在之前把256个都弄好了 所以... 阅读全文
posted @ 2016-01-06 13:58 bdhmwz 阅读(1486) 评论(0) 推荐(0) 编辑
摘要: 这里要实现的就是UNIX标准系统调用中的fork,核心当然是copy on write技术 至于为什么采用copy on write,是因为子进程在被创建之后很可能立刻执行exec()了,之前做的一系列的拷贝是无用功 所以说,当创建一个新的子进程的时候,只需要拷贝父进程的内存映射(页表)就可以了,而且将父进程所有的内存映射页都标记为只读的,这样,当子进程或者父进程尝试去读的时候是安全的,而当尝... 阅读全文
posted @ 2016-01-06 13:57 bdhmwz 阅读(2365) 评论(0) 推荐(1) 编辑
摘要: Long long time ago, I finished Lab2. And now, let me face Lab3目标:建立用户环境,可以追踪进程的运行情况,可以创建一个新的用户环境。也要完成系统调用和可能引发的异常在这门课看来,环境和进程是可以对等的,都指程序运行期间的抽象。不直接叫进程... 阅读全文
posted @ 2016-01-06 13:56 bdhmwz 阅读(2261) 评论(0) 推荐(0) 编辑
摘要: 这一部分是希望能够处理页错误、断点和系统调用处理系统页错误在发生了page fault之后,进入到系统中断中,然后经过_alltraps,进入到trap,再经过trap_dispatch分发,应该对中断类型为T_PGFLT的中断进行处理当然,页错误也有内核页错误和用户页错误处理断点在JOS中,断点中... 阅读全文
posted @ 2016-01-06 13:55 bdhmwz 阅读(997) 评论(0) 推荐(0) 编辑
摘要: 这一部分要实现的是对多核处理器的支持,然后实现系统调用只喜欢用户应用创建新的应用,而且还要实现round-robin调度算法Multiprocessor supportjos中对CPU进行了抽象要描述一个CPU, 需要知道id,运行状态,当前正在运行的进程所有的cpu数目放在cpus数组中接下来则是... 阅读全文
posted @ 2016-01-06 13:55 bdhmwz 阅读(4343) 评论(0) 推荐(0) 编辑
摘要: Xv6使用lazy allocation当进程需要更多的内存的时候,调用malloc申请更多的堆内存,而系统调用sbrk()完成该工作但是有的进程会一次申请大量的内存,但是又可能根本用不到,比如说sparse array所以说复杂的内核涉及会将实际的allocation的工作推迟到实际用的时候,发生... 阅读全文
posted @ 2016-01-06 13:55 bdhmwz 阅读(1685) 评论(0) 推荐(0) 编辑