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号进程。

让Linux进程脱离终端在后台运行

让Linux进程脱离终端而在后台运行 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务,结果却由于网络的不稳定导致任务中途失败。 如果只...
  • iw1210
  • iw1210
  • 2017年02月28日 23:14
  • 264

Linux C编程--进程介绍1--进程的创建

这篇文章介绍的内容包括 1.Linux进程--进程标识号 2.进程控制--进程创建 1.Linux进程--进程标识号 进程(Process)是一个程序在其自身的虚拟地址空间...
  • DLUTBruceZhang
  • DLUTBruceZhang
  • 2013年03月02日 19:46
  • 2281

linux根据进程名字获取进程ID

一、前言:要在程序中启动某一程序,如果程序已经存在了,就不再启动。查找了N篇文档,有所收获,总结一下。 二、实现 大体分两种: 1、exec或popen执行ps的命令行,然后运用某几个字符串匹配...
  • guduandejiaoyin6919
  • guduandejiaoyin6919
  • 2014年11月07日 16:59
  • 1528

Linux进程理解与实践(五)细谈守护进程

一. 守护进程及其特性      守护进程最重要的特性是后台运行。在这一点上DOS下的常驻内存程序TSR与之相似。其次,守护进程必须与其运行前的环境隔离开来。这些环境包括未关闭的文件描述符,控制终端...
  • NK_test
  • NK_test
  • 2015年09月14日 19:26
  • 2087

浅谈Linux进程等待

首先我们要想到两个问题:1、进程为什么等待?2、进程怎么等待?为什么等待:首先要知道进程终止或者退出的时候会发生什么,进程会关闭所有文件描述符,释放在用户空间分配的内存,但是PCB却会暂时保留,里面存...
  • juxin960811
  • juxin960811
  • 2017年06月11日 20:14
  • 194

linux 0号进程 1号进程 区别(转)

系统允许一个进程创建新进程,新进程即为子进程,子进程还可以创建新的子进程,形成进程树结构模型。整个linux系统的所有进程也是一个树形结构。树根是系统自动构造的,即在内核态下执行的0号进程,它是所有进...
  • shenwansan_gz
  • shenwansan_gz
  • 2015年02月04日 20:18
  • 1199

linux下进程无缘无故消失

最近发现每隔一段时间,某一台机器线上的服务总是挂掉,进程直接就消失了,别的机器上的服务都正常跑着,怎么单单某一台的服务的进程就没有了呢,奇怪啊,也没有什么征兆,最后发现:执行 last reboot ...
  • iamlihongwei
  • iamlihongwei
  • 2016年11月23日 18:10
  • 2004

linux 轻量级进程与普通进程的区别

轻量级进程和普通进程的区别在于:前者没有独立的用户空间(内核态线程无用户空间,用户态线程共享用户空间),而普通进程有独立的内存空间;表现在数据结构上:线程的mm=null或者与其他线程共享,而进程有独...
  • sunjiangangok
  • sunjiangangok
  • 2017年04月10日 10:36
  • 388

[linux]进程(三)——idle进程

9,linux进程切换 进程切换: 基本概念: 进程上下文:当一个进程在执行时,CPU的所有寄存器中的值、进程的状态以及堆栈中的内容被称为该进程的上下文。 当内核需要切换到另一个进程时,它需要保存当前...
  • u013686805
  • u013686805
  • 2014年02月25日 11:27
  • 1495

Linux获取进程列表

实现思路是:遍历/proc目录下的所有进程描述文件夹,从而获取进程列表。 代码如下:...
  • cnclenovo
  • cnclenovo
  • 2014年08月14日 11:23
  • 1274
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux 0#进程和1#进程
举报原因:
原因补充:

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