文章目录
内核设计流派
1.宏内核(monolithic kernel):又称单内核和强内核,
Unix,Linux把所有系统服务都放到内核里,所有功能集成于同一个程序,分层实现不同功能,系统庞大复杂,
Linux其实在单内核上实现了模块化,也就相当于吸收了微内核的优点。
2.微内核(micro kernel): 简化内核功能,
在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护,
每种功能使用一个单独子系统实现,将内核功能移到用户空间,性能有待商讨。
windows,Solaris,Harmonyos等使用微内核
linux启动流程
1.硬件加电自检
POST: Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘等硬件情况的检测。
主板的ROM: BIOS,Basic Input and Output System,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、开机加电自检程序和系统启动自检程序等。
主板的RAM:CMOS互补金属氧化物半导体,保存各项参数的设定,按次序查找引导设备,第一个有引导程序的设备为本次启动设备。
2.启动加载器bootloader
bootloader:引导加载器,引导程序
1.Windows: ntloader,仅是启动OS
2.Linux: 功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;
把用户选定的内核装载到内存中的特定空间中解压、展开,并把系统控制权移交给内核。
Linux的bootloader
LILO: Linux Loader,早期的bootloader,功能单一。
GRUB: GRand Unified Bootloader, CentOS5,6 GRUB 0.97:GRUB Legacy,CentOS 7以后使用GRUB 2.02
GRUB启动阶段
1.primary boot loader :
1st stage: MBR的前446个字节
1.5 stage: MBR之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统
2.secondary boot loader : 2nd stage,分区文件/boot/grub/
3.加载kernel
kernel自身初始化过程
1.探测可识别到的所有硬件设备
2.加载硬件驱动程序(借助于ramdisk加载驱动)
3.以只读方式挂载根文件系统
4.运行用户空间的第一个应用程序:/sbin/init
4.init初始化
init程序的类型
SysV: init, CentOS5之前
配置文件:/etc/inittab
Upstart: init, CentOS6
配置文件:letc/inittab,letch/init/*.conf
Systemd: systemd, CentOS7
配置文件:/usr/lib/systemd/system
/etc/systemd/system
运行级别
运行级别:为系统运行或维护等目的而设定;0-6:7个级别,一般使用3,5做为默认级别
运行级别:
0:关机
1:单用户模式(root自动登录), single,维护模式
2:多用户模式,启动网络功能,但不会启动NFS;维护模式