操作系统 | 源码分析

个人主页:Sarapines Programmer
 系列专栏:《操作系统实验室》
少年有梦不应止于心动,更要付诸行动。

目录结构


1. 操作系统实验之源码分析

1.1 实验目的

1.2 实验内容

1.3 实验步骤

1.4 实验过程

1.5 心得体会

2. 致读者


资源链接:安装软件+矢量图链接 提取码:6pl3

专栏地址:linux操作系统实验(万字详解!!!)

1. 操作系统实验之源码分析

1.1 实验目的

  • 通过阅读源代码,分析研究linux的进程调度策略和算法

1.2 实验内容

  • 完成操作系统的源码分析

1.3 实验步骤

实验步骤:

1.在网站下载linux-2.4.22.tar.gz并解压,其目录结构如图6-1.

其中arch:硬件结构相关代码

kernel:进程调度和管理

mm:内存管理

fs:文件系统

drivers:驱动程序

ipc:进程间通讯

include:头文件,定义内核数据结构

2.下载使用Source Insight 4.0打开查看sched.h的调度函数schedule(),并将全部代码导入如图6-2.

3.进程调度队列的组织如图6-3.

4.三种调度类型(SCHED_FIFO、SCHED_RR、SCHED_OHTER)实现过程如图6-4至图6-6.整体调度流程图如图6-7.

5.优先级如何定义和动态变化如图6-8.

6.时间片的赋值?它与优先级的关系如图6-9.

7.对实时进程和多CPU的支持如图6-10.

8.评价linux的调度策略,提出改进意见如图6-11.


1.4 实验过程

操作系统 | 源码分析_第1张图片​​

图6-1

操作系统 | 源码分析_第2张图片​​

图6-2

操作系统 | 源码分析_第3张图片​​

图6-3

操作系统 | 源码分析_第4张图片​​

图6-4

操作系统 | 源码分析_第5张图片​​

图6-5

操作系统 | 源码分析_第6张图片​​

图6-6

操作系统 | 源码分析_第7张图片​​

图6-7

操作系统 | 源码分析_第8张图片​​

图6-8

操作系统 | 源码分析_第9张图片​​

图6-9

操作系统 | 源码分析_第10张图片​​

图6-10

操作系统 | 源码分析_第11张图片​​

图6-11


1.5 心得体会

通过此次实验,我将近花了一周的时间去弄懂操作系统linux-2.4.22内核的代码,由于确实在上万行代码的浏览中有些乏力所以写了大量的注释,参考了部分博客,也查阅了大量的资料,回答了实验六要求的六个问题,并提出自己的改进策略:

在调度函数schedule中,不论是SCHED_FIFO、SCHED_RR还是SCHED_OTHER,在判断结束后都会统一进行判断是否需要重新计算每个进程的时间片,判断的依据是所有正准备进行调度的进程时间片耗尽,这需要对就绪队列中的每一个进程都重新计算时间片,然后返回前面的调度过程,重新在就绪队列当中查找优先级最高的进程执行调度,而除了SCHED_RR用到了时间片外,其余两种调度并未直接使用时间片,所以对此可以将该判断专门放入SCHED_RR调度,对于SCHED_FIFO和SCHED_OTHER就无需操作此步,程序得以加快速度。

让我开心的是,在网上改进的2.6版内核提到了该问题并作出了优化,所以我坚信只要愿意付出,会获得自己想要的收获,努力做到虚壹而静,静心而行。


2. 致读者

虚壹而静,静心而行

你可能感兴趣的:(操作系统奇遇记,linux,服务器,运维)