实验二进程的创建实验

实验二进程的创建实验

ID:41708533

大小:49.16 KB

页数:5页

时间:2019-08-30

实验二进程的创建实验_第1页
实验二进程的创建实验_第2页
实验二进程的创建实验_第3页
实验二进程的创建实验_第4页
实验二进程的创建实验_第5页
资源描述:

《实验二进程的创建实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验三进程的创建实验实验目的1、掌握进程的概念,明确进程的含义2、认识并了解并发执行的实质实验内容1、编写一段程序,使用系统调用fork()创建两个了进程。当此程序运行时,在系统中冇一个父进程和两个了进程活动。让每一个进程在屏幕上显示一个字符:父进程显示X,了进程分别显示字符b和字符C。试观察记录屏幕上的显示结果,并分析原因。2、修改上述程序,每一个进程循环显示一句话。了进程显示•daughter…T^son......父进程显示parent……观察结果,分析原因。实验准备(1)阅读LINUX的fork.c源码

2、文件(见附录二),分析进程的创建过程。(2)阅读LINUX的sched.c源码文件(见附录三),加深对进程管理概念的认识。实验指导一、进程UNIX中,进程既是一个独立拥有资源的基木单位,又是一个独立调度的基木单位。一个进程实体由若干个区(段)组成,包括程序区、数据区、栈区、共享存储区等。每个区又分为若干页,每个进程配置冇唯一的进程控制块PCB,川于控制和管理进程。PCB的数据结构如下:1进程表项(ProcessTableEntry)0包括一些最帘用的核心数据:进程标识符PID、用户标识符U1D、进程状态、事件描述符

3、、进程和U区在内存或外存的地址、软中断信号、计时域、进程的大小、偏置值nice.指向就绪队列屮下一个PCB的指针P_Link、指向U区进程正文、数据及栈在内存区域的指针。2、U区(UArea)o用于存放进程表项的一些扩充信息。每一个进程都冇一个私用的U区,其中含冇:进程表项指针、真止用户标识符u-ruid(readuser1D)^有效用户标识符u-euid(elfectiveuserID)^用户文件描述符表、计时器、内部I/O参数、限制字段、差错字段、返回值、信号处理数组。由于UNIX系统采川段页式存储管理,为了把

4、段的起始虚地址变换为段在系统中的物理地址,便于实现区的共享,所以还冇:3、系统区表项。以存放各个段在物理存储器中的位置等信息。系统把一个进程的虚地址空间划分为若干个连续的逻辑区,有正文区、数据区、栈区等。这些区是可被共亨和保护的独立实体,多个进程可共亨一个区。为了对区进行管理,核心屮设迸一个系统区表,各表项中记录了以卜有关描述活动区的信息:区的类型和大小、区的状态、区在物理存储器中的位置、引用计数、指向文件索引结点的指针。4、进程区表系统为每个进程配置了一张进程区表。表屮,每一项记录一个区的起始虚地址及指向系统区表

5、中对应的区表项。核心通过杳找进程区表和系统区表,便可将区的逻辑地址变换为物理地址。二、进程映像UNIX系统中,组成:1、用户级上、2、寄存器上、存器等;3、系统级上、进程是进程映像的执行过程,也就是止在执行的进程实体。它由三部分F文。主耍成分是用户程序;F文。由cpu中的一些寄存器的内容组成,女IIpc,psw,sp及通用寄卜•文。包K-os为管理进程所用的信息,有静态和动态之分。三、所涉及的系统调用1、fork()创建一个新进程。系统调用格式:pid=fork()参数定义:intfork()fork()返回值意义

6、如下:0:在了进程中,pid变量保存的fork()返回值为0,表示当前进程是了进程。>0:在父进程中,pid变量保存的fork()返回值为了进程的id值(进程唯一标识符)。・1:创建失败。如果fork()调用成功,它向父进程返回子进程的PID,并向子进程返回0,BPfork()被调川了一•次,但返回了两次。此时OS在内存中建立一个新进程,所建的新进程是调用fork()父进程(parentprocess)的副本,称为子进程(childprocess)o子进程继承了父进程的许多特性,并具有与父进程完全相同的用户级上下文

7、。父进程与了进程并发执行。核心为fork()完成以下操作:(1)为新进程分配一进程表项和进程标识符进入fork()后,核心检查系统是否冇足够的资源來建立一个新进程。若资源不足,则fork()系统调用失败;否则,核心为新进程分配一进程表项和唯一的进程标识符。(2)检查同时运行的进程数FI超过预先规定的最大数冃时,fork()系统调用火败。(3)拷贝进程表项中的数据将父进程的当前目录和所有己打开的数据拷贝到子进程表项屮,并證进程的状态为“创建”状态。(4)子进程继承父进程的所有文件对父进程当前目录和所有己打开的文件表项

8、屮的引用计数加lo(1)为了进程创建进程上、下文进程创建结束,设了•进程状态为“内存中就绪”并返回了进程的标识符。(2)了进程执行虽然父进程与了进程程序完全相同,但每个进程都冇自己的程序计数器PC(注意子进程的PC开始位置),然后根据pid变量保存的fork()返回值的不同,执行了不同的分支语句。例:PCpid=fork();讦(!pid)printf("I

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

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

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