linux 0#进程和1#进程

转载 2016年06月01日 19:48:31
       系统允许一个进程创建新进程,新进程即为子进程,子进程还可以创建新的子进程,形成进程树结构模型。整个linux系统的所有进程也是一个树形结构。树根是系统自动构造的,即在内核态下执行的0号进程,是系统中唯一一个静态建立的进程不经过fork函数。由0号进程创建1号进程(内核态)。1号负责执行内核的部分初始化工作及进行系统配置,并创建若干个用于高速缓存和虚拟主存管理的内核线程。随后,1号进程调用execve()运行可执行程序init,并演变成用户态1号进程,即init进程。它按照配置文件/etc/initab的要求,完成系统启动工作,创建编号为1号、2号...的若干终端注册进程getty。

        每个getty进程设置其进程组标识号,并监视配置到系统终端的接口线路。当检测到来自终端的连接信号时,getty进程将通过函数execve()执行注册程序login,此时用户就可输入注册名和密码进入登录过程,如果成功,由login程序再通过函数execv()执行shell,该shell进程接收getty进程的pid,取代原来的getty进程。再由shell直接或间接地产生其他进程。Linux系统中,除了0#进程外的所有进程都是由init进程衍生出来的,从而也称init进程是所有用户进程的祖先。init进程是特殊进程,它不接收也不处理信号。你发送终止信号给它是不会有任何结果的。

 

  上述过程可描述为:0号进程->1号内核进程->1号用户进程(init进程)->getty进程->shell进程

   注意,上述过程描述中提到:1号内核进程调用执行init并演变成1号用户态进程(init进程),这里前者是init是函数,后者是进程。两者容易混淆,区别如下:

   1.init()函数在内核态运行,是内核代码

   2.init进程是内核启动并运行的第一个用户进程,运行在用户态下。

   3.一号内核进程调用execve()从文件/etc/inittab中加载可执行程序init并执行,这个过程并没有使用调用do_fork(),因此两个进程都是1号进程。

相关文章推荐

F:\应用课件\进程管理器V3[1].0.rar

  • 2008年12月07日 05:21
  • 23KB
  • 下载

对Linux0.11 中 进程0 和 进程1分析

1. 背景进程的创建过程无疑是最重要的操作系统处理过程之一,很多书和教材上说的最多的还是一些原理的部分,忽略了很多细节。比如,子进程复制父进程所拥有的资源,或者子进程和父进程共享相同的物理页面,拥有自...

《自己动手写操作系统》第六章:从系统内核到进程A ring0>>ring1(一)

摘要:进程调度可谓是操作系统中最为重要的环节之一,在本文中,我们主要讲解进程模型、涉及的数据结构、如何从内核态转到用户进程?这一小节主要完成进程数据结构的分析,和从ring0>>ring1的进程开始阶...

1、uc/os:进程、线程、(void*)0 的简单解释

转自 http://www.cnblogs.com/chasing/p/3725543.html 分

Linux内核——system初始化、进程0准备

Linux内核——system初始化、进程0启动

linux使用boost的进程库爆出5EiPKc]+0x23):对‘boost::system::system_category()’未定义的引用 collect2: error: ld return

在linux中编译并安装好boost后使用boost_thread 库是报出一下错误g++ -o text2 text2.cpp -lboost_system -lboost_thread /usr/...

《Linux内核设计的艺术》总结:设备环境初始化及激活进程0

现在main函数开始执行了,可真正意义上的说linux操作系统开始运行了。main函数将设置程序在操作系统下运行所需的环境并创建进程0,操作系统才有了第一个进程。 1. 设置根设备和硬盘信息。之前在...
  • a364572
  • a364572
  • 2015年09月20日 15:35
  • 611

实验0 Linux用户界面的使用 实验一 进程的创建与并发执行

实验0   Linux用户界面的使用 实验一  进程的创建与并发执行   实验目的: (1)熟悉Linux工作环境和GCC工具 (2)加深对进程概念的理解,明确进程和程序的区别 (3)进一...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux 0#进程和1#进程
举报原因:
原因补充:

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