"操作系统实验31:进程创建与调度原理及实践分析"

需积分: 0 0 下载量 188 浏览量 更新于2024-01-24 收藏 1.83MB PDF 举报
操作系统实验报告 实验题目:进程的创建 学生姓名:孙淼 学号:2018211958 专业班级:计算机科学与技术 18-2 班 指导教师:田卫东 完成日期:11.07 合肥工业大学计算机与信息学院 1. 实验目的和任务要求 本次实验的目的是为了练习使用EOS API函数CreateProcess来创建一个进程,通过实践掌握创建进程的方法,理解进程和程序的区别。同时,我们还需要调试跟踪CreateProcess函数的执行过程,以了解进程的创建过程,深入理解进程是资源分配的基本单位。另外,我们还需要调试跟踪CreateThread函数的执行过程,以了解线程的创建过程,深入理解线程是调度的基本单位。 2. 实验原理 在本实验中,我们首先阅读了本书第5.1节,重点理解了程序和进程的关系,熟悉了进程控制块结构体以及进程创建的过程。接着,我们学习了CreateProcess函数以及其他与创建进程相关的函数的说明,特别注意理解这些函数的用法和作用。 3. 实验内容 本次实验的主要内容是使用EOS API函数CreateProcess来创建一个进程,并调试跟踪函数的执行过程,以深入理解进程的创建过程。具体步骤如下: 3.1 首先,我们创建一个名为Hello.exe的进程。我们调用CreateProcess函数,传入Hello.exe的路径作为参数,并在函数的返回值中得到一个表示新进程的句柄。通过检查返回值,我们可以确定进程是否成功创建。 3.2 接下来,我们对CreateProcess函数进行调试跟踪,以了解其执行过程。我们可以通过在代码中设置断点,单步执行,逐行查看源代码,以及查看变量值和寄存器状态等方式来深入了解函数的执行流程。 3.3 然后,我们通过调试工具,检查进程的创建过程。我们可以查看进程的进程控制块(PCB)结构体,了解进程所占用的资源情况,包括内存、文件句柄等。我们还可以观察进程的状态转换,例如从创建状态到就绪状态,再到运行状态的过程。 3.4 在本实验中,我们还需要调试跟踪CreateThread函数的执行过程,以了解线程的创建过程。我们可以使用与创建进程类似的方法进行调试,逐步了解线程的创建和调度过程。 4. 实验的思考与问题分析 在进行本次实验的过程中,我们遇到了一些问题,并进行了思考和分析。 4.1 首先,我们思考了进程和程序的区别。我们发现,程序是存储在硬盘上的可执行文件,而进程是程序的一次执行过程。进程包含了程序、数据和相关资源的集合,是系统中完成特定任务的基本单位。 4.2 其次,我们思考了进程和线程的区别。我们了解到,进程是资源分配的基本单位,拥有独立的地址空间和资源。而线程是CPU调度的基本单位,多个线程共享同一个进程的资源。线程之间的切换比进程之间的切换更加快速和高效。 4.3 在调试过程中,我们还遇到了一些问题。例如,创建进程或线程时可能会出现一些错误,如路径错误、权限不足等。我们需要仔细检查代码,并根据错误提示进行相应的调整。同时,通过调试工具和技巧,我们可以更好地理解函数的执行过程,找到问题的根源。 通过本次实验,我们成功掌握了使用EOS API函数CreateProcess来创建进程的方法,并深入理解了进程和程序的区别,以及进程和线程的区别。我们还通过调试跟踪函数的执行过程,加深了对进程和线程创建过程的理解。这对于进一步学习和应用操作系统的相关知识具有重要意义。