操作系统实验报告——进程的创建

这篇实验报告详细探讨了在Windows和Linux操作系统中进程的创建过程。通过对比分析,阐述了两种操作系统在进程创建时的异同,涵盖了从进程描述符的建立到上下文切换的关键步骤,为读者提供了深入理解操作系统底层机制的视角。
摘要由CSDN通过智能技术生成

一、实验目的

1.熟悉 Windows xp 系统中进程的描述、进程与程序、线程的关系,通过 Word 进程理解进程运行时内存动态分配。

2.理解线程是进程的执行部分的概念。

3.理解进程是系统进行分配的基本单位,是程序在某数据集上的执行过程。

4.利用 Windows xp 的任务管理器进行下面内容的观察并记录、分析,观察 windows 中进程及对应程序之间的大小关系、进程与线程之间的关系。通过对 linux 环境下进程的基本属性观察,并分析其原理。对观察到的内容做详细记录分析,并写出实验报告。

二.实验环境

VMware WorkstationPro

 

三、实验内容与步骤

一、实验内容

1.熟悉 Windows xp 系统中进程的描述、进程与程序、线程的关系,通过 Word 进程理解进程运行时内存动态分配。

2.理解线程是进程的执行部分的概念。

3.理解进程是系统进行分配的基本单位,是程序在某数据集上的执行过程。

4. windows 中进程及对应程序之间的大小关系、进程与线程之间的关系。

二、实验步骤

1.利用 Windows xp 的任务管理器进行下面内容的观察并记录、分析,观察

2.通过对 linux 环境下进程的基本属性观察,并分析其原理

3.对观察到的内容做详细记录分析,并写出实验报告

四、实验过程与分析

1.熟悉 Windows xp 系统中进程的描述、进程与程序、线程的关系,通过 Word 进程理解进程运行时内存动态分配。

答:(1)进程的描述是指进程的静态描述。系统中描述进程存在和能够反映其变化的物理实体,称为进程的静态描述。

①进程的静态描述由三部分组成的:进程控制块PCB,有关程序段和该程序段对其进行操作的数据结构集。

<
操作系统 进程创建实验报告 调用fork( )创建进程 实验原理: 一) 进程 UNIX中,进程既是一个独立拥有资源的基本单位,又是一个独立调度的基本单位。一个进程实体由若干个区(段)组成,包括程序区、数据区、栈区、共享存储区等。每个区又分为若干页,每个进程配置有唯一的进程控制块PCB,用于控制和管理进程。 PCB的数据结构如下: 1、进程表项(Process Table Entry)。包括一些最常用的核心数据: 进程标识符PID、用户标识符UID、进程状态、事件描述符、进程和U区在内存或外存的地址、软中断信号、计时域、进程的大小、偏置值nice、指向就绪队列中下一个PCB的指针P_Link、指向U区进程正文、数据及栈在内存区域的指针。 2、U区(U Area)。用于存放进程表项的一些扩充信息。 每一个进程都有一个私用的U区,其中含有:进程表项指针、真正用户标识符u-ruid(read user ID)、有效用户标识符u-euid(effective user ID)、用户文件描述符表、计时器、内部I/O参数、限制字段、差错字段、返回值、信号处理数组。 由于UNIX系统采用段页式存储管理,为了把段的起始虚地址变换为段在系统中的物理地址,便于实现区的共享,所以还有: 3、系统区表项。以存放各个段在物理存储器中的位置等信息。 系统把一个进程的虚地址空间划分为若干个连续的逻辑区,有正文区、数据区、栈区等。这些区是可被共享和保护的独立实体,多个进程可共享一个区。为了对区进行管理,核心中设置一个系统区表,各表项中记录了以下有关描述活动区的信息: 区的类型和大小、区的状态、区在物理存储器中的位置、引用计数、指向文件索引结点的指针。 4、进程区表 系统为每个进程配置了一张进程区表。表中,每一项记录一个区的起始虚地址及指向系统区表中对应的区表项。核心通过查找进程区表和系统区表,便可将区的逻辑地址变换为物理地址。 二) 进程映像 UNIX系统中,进程进程映像的执行过程,也就是正在执行的进程实体。它由三部分组成: 1、用户级上、下文。主要成分是用户程序; 2、寄存器上、下文。由CPU中的一些寄存器的内容组成,如PC,PSW,SP及通用寄存器等; 3、系统级上、下文。包括OS为管理进程所用的信息,有静态和动态之分。 三) 所涉及的系统调用 1、fork( ) 创建一个新进程。 系统调用格式: pid = fork( ) 参数定义: int fork( ) fork( )返回值意义如下: 0:在子进程中,pid变量保存的fork( )返回值为0,表示当前进程是子进程。 >0:在父进程中,pid变量保存的fork( )返回值为子进程的id值(进程唯一标识符)。 -1:创建失败。 如果fork( )调用成功,它向父进程返回子进程的PID,并向子进程返回0,即fork( )被调用了一次,但返回了两次。此时OS在内存中建立一个新进程,所建的新进程是调用fork( )父进程(parent process)的副本,称为子进程(child process)。子进程继承了父进程的许多特性,并具有与父进程完全相同的用户级上下文。父进程与子进程并发执行。 核心为fork( )完成以下操作: (1)为新进程分配一进程表项和进程标识符 进入fork( )后,核心检查系统是否有足够的资源来建立一个新进程。若资源不足,则fork( )系统调用失败;否则,核心为新进程分配一进程表项和唯一的进程标识符。 (2)检查同时运行的进程数目 超过预先规定的最大数目时,fork( )系统调用失败。 (3)拷贝进程表项中的数据 将父进程的当前目录和所有已打开的数据拷贝到子进程表项中,并置进程的状态为“创建”状态。 (4)子进程继承父进程的所有文件 对父进程当前目录和所有已打开的文件表项中的引用计数加1。 (5)为子进程创建进程上、下文 进程创建结束,设子进程状态为“内存中就绪”并返回子进程的标识符。 (6)子进程执行 虽然父进程与子进程程序完全相同,但每个进程都有自己的程序计数器PC(注意子进程的PC开始位置),然后根据pid变量保存的fork( )返回值的不同,执行了不同的分支语句。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值