linux启动过程以及登陆

@author:corey

在linux下面,所有的进程都是以一棵进程树的形式组织的,所以,除了根进程以外,所有的进程都必须有父进程,

这也是在进程的struct中为什么会存在两个pid,一个是自身的,另外一个则是父进程的id,

在linux启动的过程中,最先启动的进程是init,他是多有进程的根。

init:init进程做基本的启动工作,如挂在文件系统和启动守护进程等等,init进程所作的事情具体的依赖于用户定义

         的level;

在普通的操作中,如果getty操作正常,则init会收养孤儿进程,因为如上所说,在linux中,进程必须以进程树的形式存在,所以“孤儿”进程必须被收养

当系统退出的时候

init进程开始卸载文件系统,并且关闭处理器,释放资源,最重要的是杀死所有子进程,销毁进程树

 

用户登陆过程:

init为每一个可以登陆的终端实现一个getty进程,getty进程读取用户名,并且启动login,读取密码,如果密码和用户名正确,哪么login就启动一个shell进程!

 

网络登陆:

在linux下面,网络登陆有两种方式,telnet和rlogin,而不是为每一个网络提供一个getty,

网络登陆为以上的每个登陆方式启动一个守护进程,这个守护进程是一个进程实例,来监听所有的登陆企图

若是发现一个登陆企图,那么这一个守护进程就会启动一个新的实例,然后用这个新的实例来处理这一次登陆,

处理方式根getty类似,原来的守护实例继续监听别的登陆企图!

   

你可能感兴趣的:(linux,shell,网络,struct,login,终端)