初识linux
1、操作系统的分界线:
内核状态和用户状态:对应着实时模式和保护模式,保护模式下使用的是虚拟内存,间接访问,增加了扩展性和灵活性
2、启动过程:
- 从电源到BIOS,主板收到正常的电源,这个过程检查硬件并获取参数,BIOS的执行程序在ROM中,其中的硬盘里面就写着去MBR,同时重置所有寄存器数据
- 从BIOS到BootLoader,MBR引导去复制BootLoader的内容即启动程序,这叫做GRUB引导,通过里面的配置来启动不同的操作系统,开始内存映射,并将控制权交给启动扇区的代码
BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机就知道应该去读取哪个硬件设备了。
- BootLoader工作流程,进入init(),加载内核kernel,从实时模式进入保护模式,进入用户界面总的来说:👇
详情参考:linux的启动过程
3、内核的运行原理
通过main()完成初始化后打开新的中断,内核模式正式运行
- 为进程0建立内核态的堆栈
- 清零eflags寄存器
- 调用setup_idt()的中断处理程序填充IDT
- 把BIOS中获得参数传递给第一个页框
- 用GDT和IDT表填充寄存器
4、内核锁部分
- atomic原子变量
- spinlock自旋锁
- semaphore信号量
- mutex互斥锁
- Rw-lock读写锁
- preempt抢占
- Per-cpu变量
- RCU机制(Read-Copy Update)
- 内存屏障(memory-barrier)
5、三个大头
bootloader
Linux内核
文件系统
6、中断
参考这篇文章的
这里引入GIC的概念,就是中断控制器,可以屏蔽中断,如果是多个CPU的情况下,也可以将中断传给特定的CPU
电平的两种触发方式:电平触发和上下沿触发