Linux内核0.12——理清内核相关知识

来源:互联网 发布:淘宝靠谱的男装韩代 编辑:程序博客网 时间:2024/05/17 06:15

1、Linux内核的主要用途是为了与计算机硬件进行交互,实现对硬件的编程控制和接口操作,调度对硬件资源的访问,并为计算机上的用户程序提供一个高级的执行环境和对硬件的虚拟接口

2、Linux内核结构,如图:


3、虚拟地址:由程序产生的由段选择符和段内偏移地址两部分组成的地址;虚拟地址空间由GDT映射的全局地址空间和由LDT映射的局部地址空间组成。

逻辑地址:由程序产生的与段相关的偏移地址部分;在Intel保护模式下即是指程序执行代码段限长内的偏移地址。

线性地址:虚拟地址到物理地址变换之间的中间层,是处理器可寻址的内存空间中的地址;程序代码产生逻辑地址(段中的偏移地址)加上相应段的基地址就产生了一个线性地址

物理地址:出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果地址;如果开启分页机制,线性地址会使用页目录和页表中的项变换成物理地址,如果没有开启分页机制,那么线性地址就是物理地址

4、实模式下的段寄存器:段的基地址直接存放于段寄存器中,加上段内偏移地址可直接寻址,不需要比较特权级等保护措施相关的东西

保护模式下的段寄存器:段寄存器存放一个段描述符表中某一描述符项在表中的索引值,索引值指定的段描述符项中含有需要寻址的内存段的基地址、段的长度值和段的访问特权级别等信息,段寄存器值被称为段选择符

也就是说:如果你不在一个段描述符中定义一个内存线性地址空间区域,那么该地址区域就完全不能被寻址,CPU将拒绝访问该地址区域

5、分页机制适用于当系统内存实际上被分成很多凌乱的块,让每个执行中的任务可以使用比实际内存容量大得多的连续地址空间

6、异常:每个中断由0~255之间的一个数字来标识,对于中断int0~int31,每个中断的功能由Intel公司固定设定,属于软件中断,也被称之为异常,通常还被分为故障和陷阱;中断int32~int255可以由用户自己设定

7、中断标志:cli指令可以用来复位CPU标志寄存器中的中断标志,可屏蔽中断,sti指令可以设置标志寄存器中的中断标志,不可屏蔽中断

8、系统调用接口:用户程序可以通过库函数向内核发出一个中断调用int0x80,并在eax寄存器中指定系统调用功能号,使用内核资源

9、使用寄存器传参:Linux系统使用了通用寄存器,如ebx、ecx和edx,来传参,进入系统中断服务程序而保存寄存器值时,这些寄存器值也被自动放入内核态堆栈上了,因此用不着再专门对传递参数的寄存器进行特殊处理

10、分时技术核心:时间片的划分