Linux启动过程

       Linux操作系统,在开机时,启动BIOS(基本输入输出系统)程序,执行POST(上电自检过程),检查确认基本硬件是否正常工作,否则退出引导。若果检查正常会立刻产生一个BIOS中断INT 13H,此中断指向引导扇区,将引导扇区的内容加载至内存,执行起来引导加载器GRUB,并将计算机的控制权移交给引导加载器。GRUB可以寻找到操作系统内核代码,加载到内存中并加以执行,并且将计算机控制权交给内核,内核开始自解压,解压完成依据配置启动0号进程,即idle进程,idle进程负责进程调度以及内存交换等,idle进程使用kernel_thread创建1号进程,即init进程,完成后续阶段的初始化工作。

      init进程的初始化工作:

      用户登陆linux操作系统执行各个程序,最初是通过哑终端进行登陆(一种硬件连接到主机的方式),终端可以是本地也是可以是某个网络位置,此两种登陆方式均经由内核设备驱动程序,硬件设备有限,导致最初登陆数目有限。上一段,我们可以看到,系统最终创建init进程,此进程会读取/etc/ttys文件,文件中每一行保存一个终端设备。读取内容调用fork,生成一个子进程,接着调用exec getty程序,getty会open一个终端设别或者一个网络设备,同时设置文件描述符0/1/2也被设置到该设备上。会显示出login:字符,等待用户输入,一旦输入,getty程序,调用exec login程序,login程序检查用户名及密码,登陆失败调用exec getty程序反复之前过程,如果登陆成功,则完成以下动作:

     1 把当前工作目录设置为登陆用户起始目录。

     2 更改终端所有权。

     3 更改终端设备访问权限。

     4 设置进程组。

     5 初始化环境。

     6 login程序 调用exec sh程序,为此用户登陆shell。

至此,登陆成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值