科技与创新┃ScienceandTechnology&Innovation·66·2023年第13期文章编号:2095-6835(2023)13-0066-03Linux系统进程运行轨迹跟踪与性能统计程序设计王浩宇(沈阳航空航天大学,辽宁沈阳110136)摘要:在Linux内核进程调度中,一般采用基于时间片轮转的调度方式,而每个时间片长度的设定则会影响进程的平均周转时间、平均等待时间和吞吐率,进而影响整个调度的效率。结合Linux0.11操作系统,设计出一种进程跟踪程序。通过实时跟踪分析每个进程在其生命周期中的状态转换过程和调度过程来得出并验证时间片设计的最佳方案。关键词:操作系统;进程调度;时间片;Linux中图分类号:TP316文献标志码:ADOI:10.15913/j.cnki.kjycx.2023.13.0181研究背景为了实现程序的并发执行以及可以对并发执行的程序加以描述和控制,操作系统引入了进程的概念。由于进程参与并发执行时配置有相应的进程同步机制以及PCB(程序控制块),虽然在执行时有异步性但同时也具有可再现性,因此使并发成为了可能。在Linux0.11内核中实现了基于优先级的抢先式调度和时间片轮转调度算法作为其进程同步机制,可以让同一优先级中的就绪进程轮转执行。即每隔一定的时间间隔进行中断,激活调度程序,把CPU分配给就绪队列队首进程,令其执行一个时间片。其中,每个进程每次最多只能执行一个时间片。然而,在时间片的选择上往往会影响整个进程调度的效率。时间片太大则平均周转时间长、响应时间慢,时间片太小则系统开销大(进程切换频繁)。为验证并解决此问题,应结合Linux操作系统的实际运行情况,分析不同时间片情况下所有进程的平均周转时间与带权周转时间来得出结论。2跟踪程序设计2.1理论概述为了分析进程运行的时间和测试时间片大小的影响,应跟踪记录每个进程在生命周期中的转换调度过程,并创建一个应用程序用来测试。因此,针对前一个任务,需要在源程序中找到涉及到进程状态变换的代码位置,并在该处调用记录函数语句[1]。将记录函数命名为fprintk,定义其功能包括记录进程的ID、刚刚进入的状态、发生转换的时刻以及优先级等信息。而关于测试程序,可以建立一个具有创建多进程、模拟占用CPU以及I/O操作功能的应用程序。测试时先运行该程序,记录下生成进程的相关信息,之后再生成并导出log.txt,将二者的内容进行比对分析。2.2日志文件生成fprintk功能与printk函数类似,因此可以定义在printk.c文件下。记录函数定义完毕后,关键就是在于在何处调用。借助于查找功能,以...