linux0.11内核分析之进程调度

本文详细分析了linux0.11内核的进程调度策略,包括FCFS、高优先级优先和时间片轮转法。通过源码阅读,解释了`schedule`、`sys_pause`和`system_call`在调度中的作用。讨论了调度策略的特点,如0号进程的重要性,系统调用后的调度时机,以及时间片分配与优先级的关系。最后,提供了进程调度流程图以帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux0.11内核分析之进程调度

引入

对于一个操作系统小白来说,最重要系统性能的衡量指标就是——流畅度,也就是俗称的“卡不卡”,而这个系统性能背后的支撑就是linux内核的重要组成部分——进程的调度

进程调度策略概述

进程调度的策略常见有三

1、first come first serve(FCFS)

顾名思义,即先来先服务。指的是每次选择一个最先进入进程队列的进程,为其分配CPU资源,使其进入运行状态,该进程将一直运行至完成或者事件发生使其进入阻塞状态。

  • 优点:简单明了

  • 缺点:如果进程需要长时间占用CPU资源,则在进程执行期间,别的进程将会一直无法运行,这样的策略将会导致“卡顿”如同家常便饭。

2、高优先级优先

对进程划分优先级,每次选择一个优先级最高的进程运行,低优先级的进程需要等到高优先级的进程运行完成方可获得CPU资源。而该策略又分为抢占式和非抢占式两种策略,区别是当前进程运行的时候能否被后来的高优先级进程打断。

  • 优点:照顾紧迫型作业,让“好钢用在刀刃上”
  • 缺点:如果队列中一直有新的高优先级进程进入,低优先级的进程可能永远不会被执行;如果低优先级进程访问了高优先级进程所需的共享资源,则高优先级进程由于资源被占用处于阻塞态,低优先级由于优先级低无法获得CPU资源,可能高优先级进程永远无法获得资源。
3、时间片轮转法

给就绪进程队列中的每一个进程分配一定量的时间片,当执行的时间片用完时,把进程送往就绪队列的末尾,再将CPU资源分配给队列中新的队首进程。

  • 优点:雨露均沾,系统能对每一个进程做出响应
  • 缺点:时间片的大小难以确定,需要经过多次实验方可确定最优值,保证既使得每一个进程都获得一定的CPU执行时间,又体现进程的执行效率
进程调度相关源码阅读
1、schedule
void schedule(void)
{
   
	int i,next,c;
	struct task_struct ** p;

/* check alarm, wake up any interruptible tasks that have got a signal */

	for(p = &LAST_TASK ; p > &FIRST_TASK ; --p)
		if (*p<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值