`
talin2010
  • 浏览: 521106 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

[Linux内核完全剖析]第七章 初始化程序(init)总结

阅读更多

系统初始化程序init/main.c主要功能是对系统进行初始化,并切换到用户模式下执行登录程序。
主要步骤如下:
1、系统初始化部分:

2、然后是切换到用户层(即idle进程),并使用fork系统调用来生成init进程,idle则循环使用pause()进入进程调度。

3、fork出来的新进程调用init()函数执行shell以及登录程序

4、系统完成了初始化过程,进入shell程序继续执行。
注意:init进程(进程1)是从idle进程(进程0)中fork出来,init继承了idle的代码、数据空间、堆栈、文件描述符等等。但由于直接从内核切换出来的idle进程没有写时复制技术,所以这两个进程共享了上述内容。为了确保数据不发生混乱,idle进程对堆栈不进行任何操作,即没有函数调用。所以在move_to_user()宏调用之后进入idle进程开始,整个idle进程使用了宏的fork(),pause()作为替换。

分享到:
评论

相关推荐

    linux内核完全注释.pdf

    4. **第4章:初始化程序(INIT)** - **概述**:介绍初始化程序的职责。 - **程序详解**:深入分析MAIN.C中的初始化过程。 - **小结**:总结初始化程序的作用和流程。 5. **第5章:内核代码(KERNEL)** - **概述**...

    linux内核分析----初始化

    Linux 内核分析的初始化过程是一个非常复杂的过程,它涉及到 CPU 的初始化、 BIOS 的引导、内核的自解压和初始化等步骤。在本文中,我们将详细讨论 Linux 内核的初始化过程,包括 CPU 的初始化、BIOS 的引导、内核的...

    Linux内核源码分析之系统初始化

    ### Linux内核源码分析之系统初始化 #### 摘要 Linux作为一款开源操作系统,其内核源码对开发者来说具有重要的学习价值。通过对Linux内核源码的深入分析,我们可以了解其如何加载和初始化的过程,从而更好地优化...

    深度剖析linux内核

    一旦内核完成自我初始化,就会启动第一个用户空间进程——init,从而开启系统服务和用户环境。 接下来,我们讨论Linux内核的组成部分。内核主要由四个部分构成:进程调度器、内存管理、设备驱动和文件系统。进程...

    深入分析Linux内核源码.chm

    第七章 进程间通信 7.1 管道 7.2 信号(signal) 7.3 System V 的IPC机制 第八章 虚拟文件系统 8.1 概述 8.2 VFS中的数据结构 8.3 高速缓存 8.4 文件系统的注册、安装与拆卸 8.5 限额机制 8.6 具体文件系统举例 8.7 ...

    arm linux内核源码剖析1

    7. 启动第一个进程:初始化完成后,内核会创建并执行init进程,这是系统的第一个用户空间进程,它负责进一步的系统初始化和启动其他服务。 二、内存管理 4.内存.pdf可能详细讲述了Linux内核的内存管理机制。在ARM ...

    linux 内核 socket相关的协议栈初始化

    为了更好地理解上述概念,我们可以通过一个具体的例子来分析初始化流程是如何实现的。例如,在实际代码中`sock_init`函数可能如下所示: ```c core_initcall(sock_init); ``` 这行代码实际上扩展为: ```c __...

    疯狂内核之——内核初始化

    - **利用early_res分配内存**: 在系统完全初始化前使用特定内存区域。 - **触碰虚拟文件系统**: 初始化文件系统支持。 - **初始化异常服务**: 设置异常处理机制。 - **初始化内存管理**: - **启用伙伴算法**: 一种...

    linux内核0.11完全注释 PDF

    - **第3章:初始化程序(init)**:讨论了初始化程序的主要功能和实现细节。 - **第4章:内核代码(kernel)**:详细分析了内核核心代码,包括但不限于`asm.s`、`system_call.s`、`traps.c`等文件。 - **第5章:块...

    linux内核启动过程

    本文旨在深入剖析Linux内核在Intel 80x86平台上的启动过程,帮助读者更好地理解Linux内核的工作原理。 #### 二、内核结构及平台相关性 Linux内核版本2.6.9作为研究对象,其源代码被解压后放置于`linux-2.6.9/`目录...

    最精简的linux内核说明,Linux内核入门必读

    第七章预计会详细介绍字符设备驱动程序的相关知识,包括字符设备的基本原理、实现方法及其在Linux系统中的作用。虽然这部分内容未在给定的部分内容中出现,但可以推测其重要性与前面章节相似。 #### 十、总结与展望...

    Linux内核完全注释.pdf

    - **初始化程序**(INIT):深入解析了MAIN.C程序,阐述了系统初始化的流程与细节。 - **内核代码**(KERNEL):全面剖析了MAKEFILE、ASM.S、TRAPS.C、SYSTEM_CALL.S等多个核心文件,展示了内核处理中断、系统调用等...

    Linux内核引导过程

    本文将深入探讨Linux内核的引导过程,重点介绍内核引导的第一部分——核心数据结构初始化以及第二部分——外设初始化的具体细节。 #### 二、内核引导第一部分:核心数据结构初始化 ##### 1. start_kernel() 函数 ...

    Linux内核完全剖析

    3. **Init**:这个目录包含了内核的初始化代码,但不包括系统的引导代码。`main.c`和`Version.c`是研究内核启动过程的关键。 4. **Mm**:内存管理的代码存放于此,包括页式内存管理和分配。与处理器架构相关的内存...

    Linux内核分析.pdf

    - **内核启动**:内核启动后,会初始化硬件设备,并加载必要的模块,最终启动初始进程init。 #### 六、安全性和稳定性 - **知识点11:安全性** - **用户权限**:Linux通过用户权限管理确保系统的安全性,不同...

Global site tag (gtag.js) - Google Analytics