`
suoyihen
  • 浏览: 1359067 次
文章分类
社区版块
存档分类
最新评论

Linux 内核--任务0的调度切换

 
阅读更多

本文分析基于Linux 0.11内核,转载请标明出处

http://blog.csdn.net/yming0221/archive/2011/06/09/6533865.aspx

main.c中在move_to_user_mode()之后,切换到用户模式下运行,task0然后执行fork()创建进程task1来执行init()函数。init()函数如下:

init进程通过fork()产生子进程,产生的子进程开始读取硬盘参数包括分区表信息并建立虚拟盘和安装根文件系统设备,打开设备,并运行sh程序

,当该进程异常结束,就会循环重试上述过程。然而进程0这时会运行到代码

for(;;) pause()

处,pause()函数是系统调用,它也被声明为内联函数,通过int 0x80调用系统调用sys_pause()。

该系统调用所做的任务就是将当前任务的运行状态改为可中断运行状态,然后执行调度函数schedule()。

该段代码有很多精巧之处,如果让我自己来实现同样的功能,代码可能会很繁琐。

精巧之处:

1、i起初赋值64,循环的时候先进行变量的--,然后再判断,这样正好执行63次,task0没有必要循环判断。

2、c起初赋值为-1,next赋值0,这样可以解决当循环63次后,task[1]--task[63]没有相应的任务在执行,这时,执行下一句break后,跳

出死循环,执行swtich_to(next)语句,正好切换到task[0],task0这时继续循环执行pause()语句,调用调度函数。所以说task0是个闲置的

任务,只有task数组没有其他任务的时候才执行task0,让task0继续执行调度函数。重新调度进程运行。

分享到:
评论

相关推荐

    Linux内核分析(进程与进程调度) 北航软件学院课件

    北航软件学院Linux内核分析课程课件 进程与进程调度部分

    深入分析Linux内核源码.chm

    1.3走进Linux内核 1.4 分析Linux内核的意义 1.5 Linux内核结构 1.6 Linux内核源代码 1.7 Linux内核源代码分析工具 第二章 Linux运行的硬件基础 2.1 i386的寄存器 2.2 内存地址 2.3 段机制和描述符 2.4 分页机制 2.5 ...

    《深入分析Linux内核源代码》

    《深入分析Linux内核源代码》 第一章 走进Linux 第二章 Linux运行的硬件基础 第三章 中断机制 第四章 进程描述 第五章 进程调度与切换 第六章 Linux 内存管理 第七章 进程间通信 第八章 虚拟文件系统 第九章 Ext2 ...

    Linux内核源代码情景分析 (上下册 高清非扫描 )

    丛书名: Linux内核源代码情景分析 出版社:浙江大学出版社 目录 第1章 预备知识 1.1 Linux内核简介. 1.2 Intel X86 CPU系列的寻址方式 1.3 i386的页式内存管理机制 1.4 Linux内核源代码中的C语言代码 1.5 Linux...

    Linux2.6内核标准教程(共计8-- 第1个)

    Linux内核的工作原理,对Linux内核的核心组件逐一进行深入讲解。 全书共8章,首先讲解Linux系统的引导过程;然后对Linux内核的3大核心模块——内存管理、进程管理、中断和异常处理进行了深入的分析; 在此基础上,...

    Linux内核中进程调度的分析.PDF

    Linux内核中进程调度的分析.PDF

    Linux内核解析案例详解

    系统调度:研究Linux内核的进程调度算法和策略,了解进程优先级、调度器运行队列、上下文切换等相关概念。 内存管理:深入了解Linux内核的内存管理机制,包括虚拟内存管理、页面置换算法、内存分配和释放等。 文件...

    Linux2.6内核标准教程(共计8--第6个)

    Linux内核的工作原理,对Linux内核的核心组件逐一进行深入讲解。 全书共8章,首先讲解Linux系统的引导过程;然后对Linux内核的3大核心模块——内存管理、进程管理、中断和异常处理进行了深入的分析; 在此基础上,...

    Linux2.6内核标准教程(共计8--第8个)

    Linux内核的工作原理,对Linux内核的核心组件逐一进行深入讲解。 全书共8章,首先讲解Linux系统的引导过程;然后对Linux内核的3大核心模块——内存管理、进程管理、中断和异常处理进行了深入的分析; 在此基础上,...

    Linux2.6内核标准教程(共计8--第3个)

    Linux内核的工作原理,对Linux内核的核心组件逐一进行深入讲解。 全书共8章,首先讲解Linux系统的引导过程;然后对Linux内核的3大核心模块——内存管理、进程管理、中断和异常处理进行了深入的分析; 在此基础上,...

    Linux2.6内核标准教程(共计8--第7个)

    Linux内核的工作原理,对Linux内核的核心组件逐一进行深入讲解。 全书共8章,首先讲解Linux系统的引导过程;然后对Linux内核的3大核心模块——内存管理、进程管理、中断和异常处理进行了深入的分析; 在此基础上,...

    linux内核分析 MOOC

    然后开始分析Linux内核源代码,从系统调用陷入内核,进程调度与进程切换,最后返回到用户态进程,通过仔细分析梳理这一过程,并推广到硬件中断、缺页异常等内核执行路径,最终能从本质上把握Linux内核的实质,乃至在...

    深入分析Linux内核源码

    深入分析Linux内核源码 前言 第一章 走进linux 1.1 GNU与Linux的成长 1.2 Linux的开发模式和运作机制 1.3走进Linux内核 1.3.1 Linux内核的特征 1.3.2 Linux内核版本的变化 1.4 分析Linux内核的意义 ...

    linux操作系统内核技术-uestc课件

     3介绍支持SMP的O(1)调度,用户和内核抢占和进程上下文切换,了解优先级复算,睡眠和唤醒机制,SMP的负载均衡。(4小时)  4掌握在x86体系结构上系统调用的具体实现原理,接口参数传递,用户地址空间和核心地址...

    Linux内核源代码分析视频课-视频教程网盘链接提取码下载.txt

    然后开始分析Linux内核源代码,从系统调用陷入内核,进程调度与进程切换,最后返回到用户态进程,通过仔细分析梳理这一过程,并推广到硬件中断、缺页异常等内核执行路径,最终能从本质上把握Linux内核的实质,乃至在...

    Linux内核情景分析

    1. 1 Linux内核简介 1. 2 Intel X86 CPU系列的寻址方式 1. 3 i386的页式内存管理机制 1. 4 Linux内核源代码中的C语言代码 1.5 Linux内核源代码中的汇编语言代码 第2章 存储管理 2.1 Linux内存管理的基本框架 2.2 ...

    linux进程调度图

    linux内核O(1)调度算法下进程之间的切换情况,注意,现在的linux使用的是绝对公平调度,和这个有比较大区别,

    linux 内核源代码分析

    1. 1 Linux内核简介 1. 2 Intel X86 CPU系列的寻址方式 1. 3 i386的页式内存管理机制 1. 4 Linux内核源代码中的C语言代码 1.5 Linux内核源代码中的汇编语言代码 第2章 存储管理 2.1 Linux内存管理的基本框架...

    Linux内核情景分析(非扫描版)

    1. 1 Linux内核简介 1. 2 Intel X86 CPU系列的寻址方式 1. 3 i386的页式内存管理机制 1. 4 Linux内核源代码中的C语言代码 1.5 Linux内核源代码中的汇编语言代码 第2章 存储管理 2.1 Linux内存管理的基本框架 2.2 ...

    Linux2.6内核标准教程(共计8--第4个)

    Linux内核的工作原理,对Linux内核的核心组件逐一进行深入讲解。 全书共8章,首先讲解Linux系统的引导过程;然后对Linux内核的3大核心模块——内存管理、进程管理、中断和异常处理进行了深入的分析; 在此基础上,...

Global site tag (gtag.js) - Google Analytics