✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆
🔥系列专栏 :hfut实验课设
📃新人博主 :欢迎点赞收藏关注,会回访!
💬舞台再大,你不上台,永远是个观众。平台再好,你不参与,永远是局外人。能力再大,你不行动,只能看别人成功!没有人会关心你付出过多少努力,撑得累不累,摔得痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷。
文章目录
1 实验目的和任务要求
依据操作系统课程所介绍的操作系统的进程创建的原理,本次实验的目的是掌握创建子进程和加载执行新程序的方法,理解创建子进程和加载执行程序的不同。调试跟踪 fork 和 execve 系统调用函数的执行过程,从而加深对教材上进程的创建的理解。
2 实验原理
进程是计算机中最基本的执行单位,每个进程都有自己的地址空间和执行环境。在操作系统中,创建进程是一个重要的操作,可以通过系统调用来完成。进程的创建涉及到许多操作系统的核心概念和机制,如进程控制块、内存分配、上下文切换等。
在操作系统中,每个进程都有对应的 PCB 数据结构,用于保存进程的状态信息和控制信息。当一个进程被创建时,操作系统会分配一个新的 PCB 并初始化它。新进程需要一定的内存空间来运行,操作系统会分配一部分内存给进程使用。新进程需要加载一个可执行文件来运行。在 Linux 中,可以使用 exec() 系统调用来加载一个新的程序。exec() 调用会将一个可执行文件的代码和数据加载到当前进程的地址空间中,并将控制权转移到新的程序中。当一个新进程被创建时,操作系统会复制当前进程的 PCB 和内存空间,并创建一个新的进程。在 Linux 中,使用 fork() 系统调用来创建一个新的进程。fork() 调用会创建一个与当前进程完全相同的新进程,并将它的状态设置为就绪状态。当一个进程被创建时,操作系统需要将 CPU 的控制权从当前进程切换到新进程中。这个过程称为上下文切换,操作系统需要保存当前进程的执行状态和寄存器值,然后加载新进程的执行状态和寄存器值。当多个进程都处于就绪状态时,操作系统需要选择一个进程来执行。这个过程称为进程调度,操作
该实验旨在掌握在Linux中使用fork和execve创建子进程及加载新程序的方法。通过调试跟踪,理解进程创建的过程,涉及进程控制块、内存分配、上下文切换等核心概念。实验内容包括使用fork创建子进程,execve加载执行新程序,并观察父进程与子进程的运行轨迹。
订阅专栏 解锁全文
708

被折叠的 条评论
为什么被折叠?



