实验4 进程运行轨迹的跟踪与统计
实验目的
- 掌握 Linux 下的多进程编程技术;
- 通过对进程运行轨迹的跟踪来形象化进程的概念;
- 在进程运行轨迹跟踪的基础上进行相应的数据统计,从而能对进程调度算法进行实际的量化评价,更进一步加深对调度和调度算法的理解,获得能在实际操作系统上对调度算法进行实验数据对比的直接经验。
实验内容
进程从创建(Linux 下调用 fork())到结束的整个过程就是进程的生命期,进程在其生命期中的运行轨迹实际上就表现为进程状态的多次切换,如进程创建以后会成为就绪态;当该进程被调度以后会切换到运行态;在运行的过程中如果启动了一个文件读写操作,操作系统会将该进程切换到阻塞态(等待态)从而让出 CPU;当文件读写完毕以后,操作系统会在将其切换成就绪态,等待进程调度算法来调度该进程执行……
本次实验包括如下内容:
- 基于模板
process.c编写多进程的样本程序,实现如下功能: + 所有子进程都并行运行,每个子进程的实际运行时间一般不超过 30 秒; + 父进程向标准输出打印所有子进程的 id,并在所有子进程都退出后才退出; - 在
Linux0.11上实现进程运行轨迹的跟踪。 + 基本任务是在内核中维护一个日志文件/var/process.log,把从操作系统启动到系统关机过程中所有进程的运行轨迹都记录在这一 log 文件中。 - 在修改过的 0.11 上运行
本文详细介绍了Linux操作系统实验中关于进程运行轨迹的跟踪与统计,包括实验目的、实验内容、关键函数解释,如fork()、struct tms结构体和clock_t数据类型。文章详细阐述了如何在内核中实现进程状态切换的记录,涉及修改内核源代码如fork.c、sched.c、exit.c等,并讨论了不同时间片对进程调度的影响。实验还涉及了进程状态的四种转换:就绪到运行、运行到就绪、运行到睡眠和睡眠到就绪,以及新建和退出。通过修改时间片,观察进程调度的变化,加深了对调度算法的理解。
订阅专栏 解锁全文
731

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



