linux kernal note
内核体系结构
内核由五个模块构成
进程调度模块(核心)
内存管理模块
文件系统模块
进程间通信模块
网络接口模块
内存管理
内存条分区
内存分为以下几个功能模块:从前到后为内核模块、高速缓存区(包含显存和BIOS ROM)、虚拟盘、主内存区。linux分页分段管理可以选择,由系统程序员通过编程来确定是否采用。
高速缓存区:供硬盘或软盘等块设备使用的高速缓冲区部分(其中要扣除显示卡内存和ROM BIOS所占内存640KB-1MB),当一个进程需要读取块设备中的数据时,系统会首先把数据读到高速缓冲区中。当有设备要写入块设备时,系统同样先写到高速缓冲区中,然后再由块设备驱动程序写到相应设备上。
主内存区:放内核程序。
几种地址的区分
虚拟地址:由段选择符和段内偏移地址两部分组成的地址。通过分段地址变换映射到真实物理地址。
逻辑地址:是指由程序产生的与段相关的偏移地址部分。即偏移地址,因为分页分段机制对应用级程序员是完全不可见的,所以只需要考虑逻辑地址即可。
CPU线性地址:虚拟地址到物理地址变换之间的中间层,是处理器可寻址的内存空间中的地址。即偏移地址加上基地址。(和虚拟地址不同的在于线性地址是两个相加,虚拟地址是两个的组合)
实际物理内存地址:内存的寻址线对应的真实地址。
内存分段机制
由逻辑地址到线性地址的映射
实模式和保护模式下的寻址方式不同点
实模式下段寄存器存放的是基地址
保护模式下存放的是基地址的索引值,索引到描述符表,表中记录了访问特权级别等信息,如果不在表中则不能被寻址
每个描述符占用8个字节,其中含有所描述段在线性地址空间中的起始地址、段的长度、段的类型、段的特权级别和其他一些信息。一个段可以定义的最大长度是4GB。
描述符表有3种类型,每种用于不同目的。全局描述符表GDT是主要的基本描述符表,该表可被所有程序用于引用访问一个内存段。中断描述符表IDT保存有定义中断或异常处理的段描述符(类似中断向量?)。这两个表是必须的。最后一个表是局部描述符表LDT。该表应用于多任务系统中。通常每个任务使用一个LDT表。作为对GDT表的扩充。
这些表可以保存在线性地址空间的任何地方。CPU找到这三个表的方式是设置GDTR、IDTR、LDTR三个特殊寄存器。这些寄存器中将存储对应表的32位线性基地址和表的限长字节值。表限长值是表的长度值-1。
当CPU要寻址一个段时,就会使用16位的段寄存器中的选择符来定位一个段描述符。
标签:描述符,note,地址,寻址,内存,模块,linux,线性,kernal From: https://www.cnblogs.com/EeiKo/p/16610083.html