本文分析基于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继续执行调度函数。重新调度进程运行。
分享到:
相关推荐
1. 进程管理:Linux内核通过调度算法(如抢占式调度、时间片轮转等)来管理进程的执行,确保多个任务公平、高效地分享CPU资源。它还处理进程间的通信,如信号量、消息队列和共享内存等。 2. 内存管理:内核负责物理...
Linux内核调度流程框图详解 Linux内核调度流程框图是 Linux 操作系统中最核心的组件之一,负责将可用的 CPU 资源分配给不同的进程和线程,以确保系统的高效运行。在这个框图中,我们可以看到 Linux 内核调度流程的...
Linux内核中,顶半部通常用于接收中断请求、屏蔽同类型的其他中断请求、做简单的处理,并将复杂的处理任务交给底半部去异步执行。底半部处理机制的选择通常包括软中断(SoftIRQ)、任务队列(Tasklets)和工作队列...
进程调度是Linux内核中最基础且关键的部分之一,它的主要任务是决定哪个进程应当获得CPU执行权。这一章节可能涵盖了以下几个方面: 1. **进程状态**:首先,理解进程的三种基本状态——就绪态、运行态和阻塞态,是...
### 理解 Linux 内核 2.6.8.1 CPU 调度 #### 引言 本文档由原 SGI 工程师 Josh Aas 编写,旨在深入浅出地介绍 Linux 2.6.8.1 版本内核中的 CPU 调度机制。该文档提供了关于 Linux 内核源代码、进程和线程的基本...
《深入理解Linux内核》是Linux开发者和爱好者的一本经典之作,中文第三版更是结合了最新的Linux内核版本,提供了详尽且深入的解析。第五章聚焦于“内核同步”,这是Linux内核设计中的核心概念,对于保证系统稳定性和...
8. 调度时钟分析:LINUX内核调度是基于调度时钟来触发的,每次调度时钟触发都关系到任务是继续执行还是切换,是调度机制的核心部分。 9. 调度时钟触发:LINUX内核会根据编译时的HZ配置来决定调度时间间隔,一般来说...
《深入理解Linux内核》是Linux系统管理员和开发者必读的经典之作,中文第三版更是对这一领域的知识进行了全面且深入的解析。第三章主要聚焦在“进程”这一核心概念上,这一章的内容对于理解Linux系统的运行机制至关...
在深入探讨Linux内核源代码的进程调度机制之前,我们首先要理解操作系统中的“进程调度”概念。进程调度是操作系统核心的重要组成部分,负责管理系统的执行流程,确保系统资源的高效利用。在Linux系统中,进程调度器...
Linux内核源码是计算机操作系统领域中的重要学习资源,尤其是对于想要深入了解操作系统工作原理和Linux系统开发的工程师来说。Linux 0.11是Linux历史上的一个早期版本,由林纳斯·托瓦兹(Linus Torvalds)在1992年...
6. **调度算法**:Linux内核的调度策略,如抢占式调度、实时调度、公平调度等,以及CFS(完全公平调度器)的工作方式。 7. **内核模块**:内核模块是可加载的代码单元,允许动态增加或减少内核功能。这部分会涵盖...
Linux内核0.11是Linux操作系统历史上的一个重要里程碑,它是Linus Torvalds在1991年发布的首个公开可用的稳定版本。这个版本的内核非常精简,但包含了操作系统核心的基本功能,为后来的Linux发展奠定了基础。通读其...
在本文中,作者杨静、李炜、万峰松和吴建国主要分析了Linux内核2.6的进程调度机制,并提出了针对实时性问题的改进策略。Linux内核2.6是Linux操作系统的一个重要版本,它在实时性方面有所提升,但仍然存在一些挑战,...
Linux内核的进程调度策略是操作系统的核心组成部分,它决定了如何有效地在多个进程中分配CPU资源,以确保系统的公平性和响应速度。调度策略主要包括调度时机、调度方式和调度策略,这三个方面共同构成了Linux内核中...
Linux内核是操作系统中最为核心的部分,它负责管理计算机硬件与软件资源,包括进程调度、文件系统、内存管理以及网络通信等。Linux内核完全剖析通常包括对内核源代码的深入理解和分析,而基于早期版本的Linux内核...
### Linux内核分析:进程与进程调度 #### 知识点概述 北航软件学院的Linux内核分析课程深入探讨了Linux操作系统的核心机制之一:进程与进程调度。本课程不仅覆盖了理论知识,还提供了实践指导,通过分析关键源代码...
总的来说,通过分析"一个简单的多任务内核实例/Linux-0.00",我们可以学习到早期Linux内核如何实现多任务调度,理解操作系统核心的调度算法、进程管理和中断处理,以及引导流程中的关键组件。这些基础知识对于任何想...
### Linux内核分析知识点 #### 一、Linux与GNU通用公共许可证 - **知识点1:GNU通用公共许可证(GPL)** - **定义**:GNU通用公共许可证是一种开放源代码的授权方式,允许用户自由使用、复制、研究、更改及改进...
- **Linux内核的特征**:Linux内核支持多任务处理、多用户环境、多进程、多线程等特性,具有强大的网络功能,并且能够高效管理内存资源。 - **Linux内核版本的变化**:Linux内核版本号由三个数字组成,例如2.6.18。...
在Linux内核中,进程和线程的调度是统一的。一个进程可以视为单线程,也可以包含多个共享资源的线程。线程调度是进程调度的一部分,确保线程能够在进程内部公平地分配CPU时间。 早期的Linux调度器采用简单的O(n)...