北大操作系统高级课程-陈向群作业-XV6进程线程.pdf

北大操作系统高级课程-陈向群作业-XV6进程线程.pdf

ID:52924154

大小:102.35 KB

页数:4页

时间:2020-04-01

北大操作系统高级课程-陈向群作业-XV6进程线程.pdf_第1页
北大操作系统高级课程-陈向群作业-XV6进程线程.pdf_第2页
北大操作系统高级课程-陈向群作业-XV6进程线程.pdf_第3页
北大操作系统高级课程-陈向群作业-XV6进程线程.pdf_第4页
资源描述:

《北大操作系统高级课程-陈向群作业-XV6进程线程.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、阅读代码:1.基本头文件:types.hparam.hmemlayout.hdefs.hx86.hasm.hmmu.helf.h2.进程线程部分:vm.cproc.hproc.cswtch.Skalloc.c以及相关其他文件代码强调一下:由于内存管理部分还没有学到,所以请同学们遇到相关的代码和问题时,先将问题记录下来,到学过之后,再结合进程线程管理部分进行深入学习,最后要求对XV6有整体的理解。请大家围绕如下一些问题阐述原理课的相关内容,以及XV6中是如何实现的。1.什么是进程,什么是线程?操作系统的资源分配单位和调度

2、单位分别是什么?XV6中的进程和线程分别是什么,都实现了吗?答:进程是在多道程序系统出现以后,为了描述系统内部各作业的活动规律而引进的概念。进程有3个基本状态,运行状态、就绪状态和等待状态(或称阻塞状态);进程只能由父进程建立,系统中所有的进程形成一种进程树的层次体系;挂起命令可有进程自己和其他进程发出,但是解除挂起命令只能由其他进程发出。进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位。线程可称为轻量级的进程,是操作系统可以运行调度的最小单位。线程是进程内的一个相对独立的可

3、执行的单元。若把进程称为任务的话,那么线程则是应用中的一个子任务的执行。不论操作系统中是否引入了线程,操作系统中资源分配的基本单位都是进程。如果操作系统没有引入线程那么进程就是调度的基本单位。线程并不独立拥有资源,它仅仅分配了一些运行必备的资源。一个进程中的多个线程共同分享进程中的资源。在引入了线程的操作系统中,线程就变成了调度的基本单位,进程中的部分线程阻塞并不代表该线程被阻塞。xv6操作系统实现了一个基于进程(没有实现线程)的简单进程管理机制。通过对proc.h文件的阅读了解到xv6的进程中定义了一个context

4、结构,一个枚举类型proc_state定义了UNUSED,EMBRYO,SLEEPING,RUNNABLE,RUNNING,ZOMBIE这6种进程的状态,proc结构定义了进程控制块的内容,cpu结构定义了寄存器和栈指针。2.进程管理的数据结构是什么?在Windows,Linux,XV6中分别叫什么名字?其中包含哪些内容?操作系统是如何进行管理进程管理数据结构的?它们是如何初始化的?答:进程管理的数据结构是进程控制块(PCB)。在Linux中进程控制块的结构是由一个叫task_struct的数据结构定义的,ask_st

5、ruct存在/include/linux/sched.h中,其中包括管理进程所需的各种信息。在创建一个新进程时,系统在内存中申请一个空的task_struct区,即空闲PCB块,并填入所需信息。同时将指向该结构的指针填入到task[]数组中。当前处于运行状态进程的PCB用指针数组current_set[]来指出。这是因为Linux支持多处理机系统,系统内可能存在多个同时运行的进程,故current_set定义成指针数组。Windows的进程由执行体进程块EPROCESS表示,EPROCESS即执行体进程对象。在Wind

6、ows中,PCB也称为内核进程块KPROCESS(KPROCESS即内核进程对象)EPOCESS和KPROCESS位于内核空间,PEB位于用户空间。XV6的进程控制块是proc类中的proc定义了进程ID,进程状态,父进程,context保存寄存器为内核的上下文切换,cpu记录了内存地址和栈指针等。XV6中通过proc.cc对进程进行控制管理,get_raw_proc()方法可以创建一个新的进程并对进程进行初始化分配进程页表和内核堆栈。3.进程有哪些状态?请画出XV6的进程状态转化图。在Linux,XV6中,进程的状态

7、分别包括哪些?你认为操作系统的设计者为什么会有这样的设计思路?答:XV6进程包括UNUSED,EMBRYO,SLEEPING,RUNNABLE,RUNNING,ZOMBIE这6种状态即未使用态、初始态、等待台、就绪态、运行态、僵尸态。状态转换图如下:UNUSEDEMBRYORUNNABLEZOMBIERUNNINGSLEEPING之所以这样设计是为了实现多道程序的交叉运行,和方便设计各种进程调度算法。在时间片轮转调度算法中RUNNING的程序在时间片到的时候就会转成RUNNABLE同时让出CUP。而正在EUNNING的

8、程序如果遇到资源申请,就会主动放弃CPU进入SLEEPING状态。但是SLEEPING状态的程序如果得到资源之后并不能马上进入RUNNING而是先进入就绪队列等待CUP调度。Linux的进程状态可分为R(TASK_RUNNING),可执行状态,S(TASK_INTERRUPTIBLE),可中断的睡眠状态,D(TASK_UNINTE

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。