操作系统 | 源码分析

简介: 操作系统 | 源码分析

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 实验过程

图6-1

图6-2

图6-3

图6-4

图6-5

图6-6

图6-7

图6-8

图6-9

图6-10

图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 API 调度
深入了解DPDK:如何优化网络包处理性能(上)
深入了解DPDK:如何优化网络包处理性能
深入了解DPDK:如何优化网络包处理性能(上)
|
算法 调度 Python
探索操作系统的心脏:深入理解进程调度
【8月更文挑战第31天】 在数字世界的每一次跳动中,都藏着一个不为人知的英雄——进程调度。就像甘地所言,“你必须成为你希望在世界上看到的改变。” 本文将带你走进这个英雄的内心世界,一起看看它如何巧妙地管理时间片,确保每个任务都能得到公平的处理机会,同时保持系统的高效运行。我们将通过简单的代码示例,一步步揭开进程调度的神秘面纱,让你也能成为改变系统性能的关键力量。
|
存储 机器学习/深度学习 算法
【操作系统】实验六 分析源代码
【操作系统】实验六 分析源代码
171 1
|
Kubernetes API Python
|
JSON 算法 数据可视化
https://mp.weixin.qq.com/s/PfvgokzPelMJet3aBqgE1w
https://mp.weixin.qq.com/s/PfvgokzPelMJet3aBqgE1w
|
网络协议 网络安全 网络虚拟化
防火墙VSYS
使用防火墙的虚拟系统,可以让路由来回绕
|
自然语言处理 小程序
精致系列的第二个小游戏作品
嗨!大家好,我是小蚂蚁。今天主要想介绍一下精致系列的第二个作品【精致点点连线】,名字看起来有点儿长,其实完全可以叫做“点点连线”,但因为是精致系列,要延续第一个作品【精致】的风格,所以就在前方增加了“精致”两个字,可以预见的是这个系列的所有作品将都会是“精致
403 0
|
存储 缓存 网络协议
深入理解Linux网络——内核是如何接收到网络包的
一、相关实际问题 RingBuffer是什么,为什么会丢包 网络相关的硬中断、软中断是什么 Linux里的ksoftirqd内核线程是干什么的 为什么网卡开启多队列能提升网络性能 tcpdump是如何工作的 iptable/netfilter是在哪一层实现的 tcpdump能否抓到被iptable封禁的包 网络接收过程中如何查看CPU开销 DPDK是什么
|
缓存 Linux API
冲破内核限制:使用DPDK提高网络应用程序的性能(上)
冲破内核限制:使用DPDK提高网络应用程序的性能
|
存储 缓存 网络协议
深入了解DPDK:如何优化网络包处理性能(下)
深入了解DPDK:如何优化网络包处理性能