Linux原理

        一、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结构,最简单方法是定义

        七、进程管理

    操作系统所营造的虚拟时空中,活动的主角是进程。

你可能感兴趣的:(Linux)