一、Linux简述
Linux和Windows、Unix、Multis、MVS、VMS、DOS一样,是计算机系统中最复杂的软件:操作系统(OS)。
操作系统是用户和硬件之间的接口。所以OS需要硬件支持的,CPU硬件支持提供【特权集】,来保护内核不被破坏和绕过。
狭义来说,操作系统就是内核。
没有内核可以么?可以的,单片机就是没有内核支持就跑应用程序。
以Linux内核为基础构建的OS成为Linux发布,如可能是现有最好的笔记本OS:Ubuntu MATE。
二、平台和工具
操作系统内核直接运行在计算机硬件平台上,其设计与实现与硬件平台有着密切的关系。
与内核设计关系最密切的是处理器,linux可以运行在多种处理器上,但Intel系列是其支持的第一种处理器。
这一章叫做平台和工具,所谓平台就是指的硬件平台。 硬件平台包括CPU、内存、I/O等,I/O中影响最大的是外部存储设备。外存的操作以块为单位,成为块设备。内存的操作以字符为单位,成为字符设备。
处理器即CPU,负责执行由指令构成的程序,并通过程序的执行来控制整个计算机系统。一个计算机系统可以有多处理器,一个处理器可以多核,可以将每个核看出一个独立的处理器。
内存是处理器执行程序、加工数据的场所,是处理器直接访问的存储空间,内存每个字节都有地址。为提高速度,常有告诉缓存(Cache)。
三、引导与初始化
Linux内核是一个驻留在外存中的程序,运行前必须读入物理内存。将Linux内核有外存读入内存的工作成为引导。
引导程序也是驻留在外存的程序,在运行之前也需要先将其读入内存。
将引导程序读入内存的工作有BIOS完成。BIOS驻留在非易失性内存,不需要再被引导。
系统开机后执行BIOS。BIOS检测整个计算机系统,收集基本配置信息并记录在内存的BIOS数据区中,而后根据配置信息选择引导设备(如硬盘、光盘、U盘)。并读入其第一扇区,该扇区上的程序读入活动分区上的引导程序,引导程序首部将自己的剩余部分读入内存。
四、中断处理
中断时进出内核的通道。
4.1 中断处理流程
IDT表是所有中断处理的入口。无论是外部中断、系统调用还是异常,中断发生时处理器自动切换堆栈、保护现场,而后通过IDT表中的门进入出来程序。、
4.2 异常处理
Intel CPU定义了20个异常,linux内核分别定义了处理程序,系统初始化时构造好了中断门,并填入了IDT表中。异常向量号与处理程序之间一一对应。
4.3 外部中断处理
与异常不同,外部中断来自处理器之外的硬件。包括局部中断(来自处理器自身的Local APIC)、处理器之间中断(其他CPU)和设备中断(外部设备)。
外部中断可以屏蔽。为缩短关中断时间又不至于混乱,分为硬处理(硬件自动进入、必须在关中断状态下处理)和软处理(软件进入、可以在开中断状态下处理)。
4.4 系统调用
出于保护,Linux将进程的地址空间分为内核空间和用户空间。系统调用机制既保护内核信息,又为用户进程提供必要服务。
系统调用方法很多,最常用的是一个特殊的中断,即陷入(int指令),中断向量号是$0x80。
(1)系统调用表
预定义的,每个系统调用有一个编号,在内核中对应一个服务函数。
(2)标准函数库
系统调用是操作系统内核提供给应用程序的服务接口,但直接用麻烦且不可靠,因此封装在标准C函数库中,其是对系统调用的加强,为进入内核空间做必要的前期准备和善后处理。
(3)系统调用处理
IDT表中为int指令设置了陷阱门,处理程序是system_call。
(4)快速系统调用
处理器不进行合法性检车,也不访问内存,加快调用速度。
五、时钟管理
时钟中断时最特别、重要的外部中断。
5.1 时钟管理系统组成结构
包括时钟设备管理子系统和计时器管理子系统。
5.2 时钟设备管理
两种中断模式:工作在周期(period)模式的时钟设备产生周期性时钟中断;工作在单发(One shot)模式的时钟每启动一次仅产生一个中断。
(1)管理结构
不同时钟设备具有不同特性和操作方法。为统一管理,linux定义了结构clock_event_device来描述时钟设备。
周期性时钟中断的频率是被称为HZ,两次中断间的时间间隔被称为1个滴答(tick)。
(2)PIT设备,输入频率较低,且不够规整,目前不怎么用。
(3)HPET设备,高精度。
(4)Local APIC设备。局部时钟设备。
5.3 计时器管理
抽象为计时器,并定义了专门结构来描述。
5.5 单发式时钟中断
周期性时钟中断简单,单页盲目。不管系统是否需要,都会如期中断,时机不受外界干扰,无法动态调整。问题:
1. 中断过多。2.误差过大
(1)高精度单发中断模式
(2)低精度单发中断模式
5.6 变频式周期性时钟中断
空闲状态的CPU因为没有任务,运行idle进程,进入低功耗状态,周期性时钟中断会将CPU频繁唤醒,使其不能深度睡眠。
六、物理内存管理
除时间之外,对空间的管理是OS的另一项核心工作。
6.1 内存管理系统组成结构
划分为:伙伴内存管理器、对象内存管理器和逻辑内存管理器。
6.2 伙伴内存管理
管理的是物理内存,因使用伙伴算法而得名。
UMA系统:每个处理器可以访问所有物理内存,访问速度相同。
NUMA系统:访问速度不同。
(1)伙伴内存管理结构
为实现页粒度的内存管理,需要一种数据结构来描述每一个物理页的使用情况。每个物理页32组合的page结构。
系统为管理、组织很多的page结构,最简单方法是定义
七、进程管理
操作系统所营造的虚拟时空中,活动的主角是进程。