linux 内核研究--1--进程调度

原创 2012年03月28日 17:04:03

 

linux 内核研究--1--进程调度

内容组织:
一段牢骚+学习内容

1,一段牢骚

我是“半路出家”的。在大学过了两年的“必修课选逃,选修课必逃”的快乐时光后开始考虑未来。

本来打算大学毕业后读研来着,当时幸运,正好赶上金融危机,在把量子物理看了两遍后,感觉没戏

,于是就着急将来靠什么安身立命,思索再三,感觉网络工程师这个职业前途无量,于是在大三的暑

假来临前,在当当上买了本网络工程的书(第一次网购),以高考的状态看完后,又感觉没意思,后

来感觉平面设计前途无量,于是搜寻大量这方面的资料,还没来得及瞄一眼,就在一次学校举办的演

讲会上被专家定义为低端职业。走投无路时,有一个培训机构到我们学校笔试招人。于是就从图书馆

借了一本谭浩强的书,研习一晚,考了48分,义无反顾的加入了嵌入式的大军。。。

欲知后事如何,且听下回分解。说正事。。。

 


2,进程调度
2.1 概念
进程,程序,线程,调度。几乎所有介绍linux kernel的书上都有说明,并且说的很详细,生怕咱弄

混了。

2.2 进程调度
首先有几件事先说明一下:
1>进程调度程序独立于所有进程之外
2>2.4 和2.6内核的调度程序相差比较大,2.6进行了重写
3>在linux世界里,可以把进程和线程搞混,没有人会笑话你(本来他们就没多大差别)。
4>每个进程都有自己的第二代身份证(task struct),和身份证号码(PID)。
5>强调一下是第二代身份证,上面有芯片,它里面有内核管理这个进程的所有信息(32位机,1.7K左

右,)。
6>强调一下身份证号,不是无限大,默认32768,一般桌面系统够用了,但是对于大型server就可能不

够用,可以通过/proc/sys/kernel/pid_max修改
7>所有进程的身份证以一个双向链表联系在一起,current全局变量只是当前active的进程。
8>进程的身份证和上面芯片里的内容较多,它在<linux/sched.h>里面呆着呢,有兴趣可以自己探望

一下,先不说。

然后说一下调度算法:
调度准备:
0>每个CPU有一个执行队列
1>把把执行队列分为两类,可运行的和不可运行的,分别组成两个简单链表。
2>把可运行的再分成两个数组,活跃组和过时组。
3>两个数组又按优先级分成优先级个组,组每个元素包含这个优先级的可运行进程链表
4>每个数组元素主要包括一个160位的bitmap,当进程进入运行时,将与自己优先级对应的bit置位。

开始调度:
1>通过位图第一位,找到最高优先级的可运行进程
2>执行这个进程。

没了,当然没有这么简单,还有很多内容需要考虑。
next:
1,考虑重新计算时间片和动态修改进程优先级
2,考虑I/O消耗型进程和CPU消耗型进程
3,考虑多CPU情况下的负载平衡

说明:本人菜鸟,内容有错误之处,纯属无心,敬请指出。

Linux Kernel 2.6进程调度的分析

第一章 Kernel 2.4存在的不足 根据对2.4进程调度的分析,我们总结出看出2.4内核总的特点就是:         内核调度简单有效         内核不可抢占 但是经过对2.4内核...
  • wrx1721267632
  • wrx1721267632
  • 2015年11月30日 15:30
  • 607

Linux内核之内核进程调度

Linux进程调度是通过内核子系统:进程调度程序完成的。进程调度程序决定投入运行的进程、何时运行已经运行时长。从这里可以看出,进程调度程序就是一个在可运行进程之间分配有限的处理器时间资源的内核子系统。...
  • hankerzero
  • hankerzero
  • 2017年02月18日 09:21
  • 423

内核源码分析之进程调度机制

转自:http://www.cnblogs.com/liangning/p/3892306.html 进程调度所使用到的数据结构: 1.就绪队列 内核为每一个cpu创建一个进程就...
  • caoyahong114
  • caoyahong114
  • 2016年06月16日 14:52
  • 1671

操作系统 linux 内核的三种进程调度方法

1,SCHED_OTHER 分时调度策略; 2,SCHED_FIFO 实时调度策略,先到先服务; 3,SCHED_RR 实时调度策略,时间片轮转 。         实时进程将得到优先调用,...
  • u013630349
  • u013630349
  • 2015年08月18日 11:09
  • 1237

把握linux内核设计思想(九):进程调度

【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】         linux为多任务系统,正常情况下都存在成百上千个任务。由于...
  • gentleliu
  • gentleliu
  • 2015年07月31日 22:18
  • 1594

Linux进程调度机制(1)

进程调度负责决定哪个进程投入运行,何时运行以及运行多长时间。  进程调度:非抢占式和抢占式   Linux这么酷的系统当然是抢占式的喽。  进程在被抢占之前可以运行的时间是预先设定好的,叫做时间片。...
  • kzq_qmi
  • kzq_qmi
  • 2015年08月03日 17:08
  • 1023

研究linux内核的目的

一.研究内核的目的  欲举其事,先正其道。要谈论内核的研读以及交流心得,前提必须得有一个恰当准确的目的,方能收获良多。 很多人都有这样一个疑惑,为什么要研究内核呢?我们又不是内核开发者(或...
  • SunboyJohn690905084
  • SunboyJohn690905084
  • 2013年11月08日 18:14
  • 1452

Linux内存管理和进程调度相关知识点

Linux内存管理机制: 1、             为解决以下几个问题:   如何使进程的地址空间隔离;如何提高内存的使用效率;如何解决程序运行时的重定位问题。 2、            ...
  • zhiren2011
  • zhiren2011
  • 2015年07月24日 10:33
  • 1073

Linux进程调度器概述--Linux进程的管理与调度(十五)

日期 内核版本 架构 作者 GitHub CSDN 2016-06-14 Linux-4.6 X86 & arm gatieme LinuxDeviceDrive...
  • gatieme
  • gatieme
  • 2016年06月17日 14:50
  • 10459

【Linux 内核】进程调度

现在的操作系统都是多任务的
  • yeswenqian
  • yeswenqian
  • 2014年05月05日 21:34
  • 855
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux 内核研究--1--进程调度
举报原因:
原因补充:

(最多只允许输入30个字)