北大操作系统高级课程-陈向群作业-线程机制实习报告
发布时间:
线程机制实习报告
>>>>
目录
内容一:总体概述..................................................................................................................3内容二:任务完成情况...........................................................................................................3
任务完成列表(Y/N).....................................................................................................3具体Exercise的完成情况................................................................................................3内容三:遇到的困难以及解决方法.......................................................................................7内容四:收获及感想..............................................................................................................7内容五:对课程的意见和建议...............................................................................................7内容六:参考文献..................................................................................................................8
2
内容一:总体概述
本次lab主要是对线程机制的学习和理解。首先,进程控制块(PCB)是进程存在的标志,系统利用PCB来控制和管理进程,所以PCB是系统感知进程存在的唯一标志。用它来记录进程的外部特征,描述进程的运动变化过程。Exercise1通过对不同系统的进程控制块的调研学习进程控制块在不同系统中的实现方式。
内容二:任务完成情况
任务完成列表(Y/N)
>>>>完成情况
Exercise1
Y
Exercise2
Y
Exercise3
Y
Exercise4
Y
具体Exercise的完成情况
Exercise1调研
调研Linux或Windows中进程控制块(PCB)的基本实现方式,理解与Nachos的异同。解答:
Linux的进程控制块为一个由结构task_struct所定义的数据结构,task_struct存放在/include/linux/sched.h中,其中包括管理进程所需的各种信息。Linux系统的所有进程控制块组织成结构数组形式。早期的Linux版本是多可同时运行进程的个数由NR_TASK(缺省值为512规定,NR_TASK即为PCB结果数组的长度。近期版本中的PCB组成一个环形结构,系统中实际存在的进程数由其定义的全局变量nr_task来动态记录。结构数组:structtask_struct*task[NR_TASK]={&init_task}来记录指向各PCB的指针,该指针数组定义于/kernel/sched.c中。在创建一个新进程时,系统在内存中申请一个空的task_struct区,即空闲PCB块,并填入所需信息