1 / 17
文档名称:

linux源代码分析实验报告格式.doc

格式:doc   大小:279KB   页数:17页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

linux源代码分析实验报告格式.doc

上传人:梅花书斋 2020/3/20 文件大小:279 KB

下载得到文件列表

linux源代码分析实验报告格式.doc

相关文档

文档介绍

文档介绍:Linux的fork、exec、wait代码的分析指导老师:景建笃组员:王步月张少恒完成日期:-12-16一、、exec、wait代码的分析,了解一个操作系统进程的创立、执行、等待、退出的过程,锻炼学生分析大型软件代码的能力;,锻炼学生的合作能力。二、准备知识由于我们选的是题目二,因此为了明确分工,我们必须明白进程的定义。经过查阅资料,我们得知进程必须具备以下四个要素:1、有一段程序供其执行。这段程序不一定是进程专有,能够与其它进程共用。2、有起码的“私有财产”,这就是进程专用的系统堆栈空间3、有“户口”,这就是在内核中有一个task_struct结构,操作系统称为“进程控制块”。有了这个结构,进程才能成为内核调度的一个基本单位。同时,这个结构又是进程的“财产登记卡”,记录着进程所占用的各项资源。4、有独立的存储空间,意味着拥有专有的用户空间:进一步,还意味着除前述的系统空间堆栈外,还有其专用的用户空间堆栈。系统为每个进程分配了一个task_struct结构,实际分配了两个连续的物理页面(共8192字节),其图如下:对这些基本的知识有了初步了解之后,我们按老师的建议,商量分工。如下:四、小组成员以及任务分配1、王步月:,其中包含了get_pid和do_forkget_pid,写出代码分析结果,并画出流程图来表示相关函数之间的相互调用关系。所占工作比例35%。2、张少恒:,其中包含了do_execve。写出代码分析结果,并画出流程图来表示相关函数之间的相互调用关系。所占工作比例35%。3、余波:,其中包含了do_exit、sys_wait4。写出代码分析结果,并画出流程图来表示相关函数之间的相互调用关系。所占工作比例30%。五、各模块分析:1、)、,两个进程外,,,往往希望子进程结束后,还要把控制权交给父进程,,是把自己复制给子进程,也就是说,,用一个新的程序来覆盖子进程的内存空间,,,进入僵死(zombie)状态,父进程可经过执行wait系统调用来实现与子进程的终止同步,)、代码分析intdo_fork(unsignedlongclone_flags,unsignedlongstack_start, structpt_regs*regs,unsignedlongstack_size){ intretval; unsignedlongflags; structtask_struct*p; pletionvfork; if((clone_flags&(CLONE_NEWNS|CLONE_FS))==(CLONE_NEWNS|CLONE_FS)) return-EINVAL; retval=-EPERM;/*将retval赋值-ENOMEM,作为task_struct结构申请失败时的返回值*/ if(clone_flags&CLONE_PID){/*若clone_flags的位是置位的*//*若调用do_fork的当前(父)进程不是idle进程(其pid=0)*/ if(current->pid) gotofork_out; } retval=-ENOMEM;/*返回错误信息*/ p=alloc_task_struct();/*申请一个新的task_struct结构*/ if(!p) gotofork_out; *p=*current;/*将当前(父)进程task_struct结构值赋给新创立的(子)进程*/ p->tux_info=NULL; p->cpus_allowed_mask&=p->cpus_allowed; retval=-EAGAIN; /*若子(新)进程所属的用户拥有的进程数已达到规定的限制值,*则跳转至bad_fork_fre*/? if(atomic_read(&p->user->processes)>=p->rlim[RLIMIT_NPROC].rlim_cur &&!capable(CA