Linux内核设计与实现 进程调度1: 基本概念

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux内核设计与实现 进程调度1: 基本概念相关的知识,希望对你有一定的参考价值。

参考技术A         进程大致可分为I/O密集型和 CPU密集型。

        调度依据 动态优先级 ,所谓动态优先级就是初始化时给出一个基础优先级,随后优先级可被调度程序动态的增减。高优先级进程也获得较长的时间片。I/O密集型通常被提升优先级,而CPU密集型则被降低。            

        Linux系统有两种独立的优先级范围。第一种是 Nice 值,返回是[-20, 19],默认值为0。数值越高优先级越低。Nice值影响了时间片的分配。如果进程拥有-20的Nice值,那么该进程将被分配理论最长的时间片。Nice值是所有Unix系统的标准优先级。

        Linux的第二种优先级范围是 实时优先级 。这个优先级的值是可配置的。通常来说范围在[0,99]。 所有实时进程的优先级都高于普通进程 。(实时进程是什么?)

        时间片是一个数值,决定了进程被抢占前可运行的时间。必须为进程分配合适长度的时间片。时间片太长会影响系统的交互性,时间片太短则会导致系统花费大量的时间用于进程的切换。同时还要兼顾I/O密集型和 CPU密集型进程的矛盾。因为I/O密集型无需长时间片,却渴望经常运行。而Linux却提供了相对较长的默认时间片——100毫秒。   

        注意到,进程不必在每次被调度运行后就花光自己所有的时间片。举例来说,如果一个进程拥有长达100毫秒的时间片,那么它可以在五个不同时段运行,每次花费20毫秒的时间片。这么做的好处是,一个拥有长时间片的进程(尽管它本身不需要如此长的时间片),可以尽可能长时间的保持运行状态。而不会过早地被丢入等待调度的队列中(稍后说到)。这就好比键盘驱动进程的实现方法。

        当某进程的状态变为TASK_RUNNING的时候,内核会检查它的优先级是否高于当前正在执行的任务。如果是,调度进程就会使该进程抢占CPU。另外,如果一个进程的时间片变成0(意味着用尽了所有时间片,只能等待所有进程时间片为0才会重新分配),调度进程会被再次调用,选择一个新的进程运行。

        个人猜测 :这里拿文字软件和音乐播放软件来举例。CPU在每条指令执行结束后检查中断引脚。如果检测到键盘的活动,就会引发中断而将键盘输入程序的状态设置为TASK_RUNNING,然后执行上述的检查程序。因为文字软件的优先级高于音乐播放软件,所以文字软件将立即得到执行,将键入字符输入在屏幕中。完成这一工作后,文字软件将设置自身状态或是其他方法,使得音乐播放软件可以抢占CPU?

Linux内核设计与实现下载 𣅧

下载地址: http://www.gqylpy.com/di/15

技术图片

《Linux内核设计与实现》PDF高清完整版-下载

内容简介

编辑

《Linux内核设计与实现(原书第3版)》基于Linux 2.6.34内核详细介绍了Linux内核系统,覆盖了从核心内核系统的应用到内核设计与实现等各方面的内容。《Linux内核设计与实现(原书第3版)》主要内容包括:进程管理、进程调度、时间管理和定时器、系统调用接口、内存寻址、内存管理和页缓存、VFS、内核同步以及调试技术等。同时《Linux内核设计与实现(原书第3版)》也涵盖了Linux 2.6内核中颇具特色的内容,包括CFS调度程序、抢占式内核、块I/O层以及I/O调度程序等。《Linux内核设计与实现(原书第3版)》采用理论与实践相结合的路线,能够带领读者快速走进Linux内核世界,真正开发内核代码。《Linux内核设计与实现(原书第3版)》适合作为高等院校操作系统课程的教材或参考书,也可供相关技术人员参考。

如果你是一名linux内核爱好者,本书的内容可以帮助你大显身手。如果你是一名普通程序员,本书的内容将会拓宽你的编程思路。如果你初次接触linux内核,本书则可以帮助你对内核各个核心子系统有一个整体把握。

本版新增内容

·增加一章专门描述内核数据结构

·详细描述中断处理程序

·扩充虚拟内存和内存分配的内容

·调试linux内核的技巧

·内核同步和锁机制的深度描述

·提交内核补丁以及参与linux内核社区的建设性建议

编辑推荐

编辑

《Linux内核设计与实现(原书第3版)》编辑推荐:畅销图书新版《Linux内核设计与实现》第3版翻译版、影印版同步上市,《Linux内核设计与实现(原书第3版)》详细描述Linux内核的主要子系统和特点,《Linux内核设计与实现(原书第3版)》涵盖Linux内核从理论到实践的方方面面。

媒体推荐

编辑

能够把linux内核的内容在300多页内叙述一遍,本身就是一件高难度的事情。但《Linux内核设计与实现》确实做到了。《Linux内核设计与实现》很少涉及具体实现,而是把握思想,讲解算法,读者可以学习到linux内核的知识,而不用纠缠于具体细节。—豆瓣读者Googol,《Linux内核设计与实现》很适合系统学习了OS理论之后直接看代码详解又觉得暂且还不够功力的读者,它可以带你由理论学习阶段逐渐过渡到实践阶段。这本书对Linux内核内容的范围和深度把握得恰到好处。

——豆瓣读者 纳兰经若

作者简介

编辑

(美)拉芙(Robert Love)

拉芙(Robert Love)是一位资深的开源社区达人,很早就开始使用Linux。目前他是Google公司高级软件工程师,是开发Android移动平台内核的团队成员;他曾在Novell公司任职Linux桌面系统的首席架构师;他之前也曾是MontaVista和Ximain公司的内核开发工程师。他参与的内核项目包括抢占式内核、进程调度器、内核事件层、通知机制、VM改进,以及设备驱动程序。他是《Linux journal》杂志的编辑。另外他还著有《Linux System Programming》和《Linux in a Nutshell》。

目录

编辑

译者序

序言

前言

作者简介

第1章 Linux内核简介1

1.1 Unix的历史1

1.2 追寻Linus足迹:Linux简介2

1.3 操作系统和内核简介3

1.4 Linux内核和传统Unix内核的比较5

1.5 Linux内核版本7

1.6 Linux内核开发者社区8

1.7 小结8

第2章 从内核出发10

2.1 获取内核源码10

2.1.1 使用Git10

2.1.1 安装内核源代码10

2.1.3 使用补丁11

2.2 内核源码树11

2.3 编译内核12

2.3.1 配置内核12

2.3.2 减少编译的垃圾信息14

2.3.3 衍生多个编译作业 14

2.3.4 安装新内核14

2.4 内核开发的特点15

2.4.1 无libc库抑或无标准头文件15

2.4.2 GNU C16

2.4.3 没有内存保护机制18

2.4.4 不要轻易在内核中使用浮点数18

2.4.5 容积小而固定的栈18

2.4.6 同步和并发18

2.4.7 可移植性的重要性19

2.5 小结19

第3章 进程管理20

3.1 进程20

以上是关于Linux内核设计与实现 进程调度1: 基本概念的主要内容,如果未能解决你的问题,请参考以下文章

《Linux内核设计与实现》读书笔记- 进程的调度

读薄「Linux 内核设计与实现」 - 进程管理和调度

《内核设计与实现》读书笔记- 进程管理

读书笔记《Linux内核设计与实现》进程管理与调度

linux内核设计与实现--进程调度 系统调用

linux内核同步问题