首页 > 系统相关 >linux kernal note

linux kernal note

时间:2022-08-21 16:11:30浏览次数:60  
标签:描述符 note 地址 寻址 内存 模块 linux 线性 kernal

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

相关文章

  • Linux Centos 打开和关闭防火墙
      systemctlstatusfirewalld.service#查看防火墙状态systemctlstartfirewalld.service#开启防火墙systemctlstopfirewalld.service#关......
  • 虚拟机安装Linux系统
    环境:Windows11+VMwareWorkstation16Pro安装:Linux的UbuntuCentOS(CommunityENTerpriseOperatingSystem)是Linux发行版之一,它是来自于RedHatEnterpriseLinux......
  • Mac安装python jupyter notebook
    前置条件:已安装python3查看当前python版本:python--version如果不使用虚拟环境,直接用步骤3和步骤4即可。1.创建虚拟环境:pip3installvirtualenvpython3-mvirtuale......
  • 过滤>符号,Linux下写入Webshell
    最近的学习生活中,看到了好兄弟写出的这么一句话让我陷入沉思,是否>被过滤,就意味着写入不了Webshell了?于是有了下面的Payload只要|没被过滤,就有可能写入成功!echo3c3f706......
  • Linux 内核对交换芯片上送的协议报文的处理
          1.应用场景       对于数据报文,交换芯片完成硬件转发,即转发层面,无须cpu的参与。       对于协议报文,例如L2的EAPS环网检......
  • linux split
    linuxsplitsplit语法//-aX指定后缀名的长度,默认为2位-a,--suffix-length=NgeneratesuffixesoflengthN(default2)--additional-suffix=SUFFIX......
  • 【Nginx】Linux上Nginx安装详细教程(保姆级教程)
    一、准备工作:安装nginx需要一些环境的支持1、安装GCC(必选)yuminstallgcc-c++解释:GCC用来对nginx源码进行编译2、安装PCREpcre-devel(必选)yuminstall-ypcre......
  • Notepad plus 通过NppExec插件编译/运行 golang,php,python等语言
        1. 在Notepadplus的插件-->插件管理中,添加nppExec插件。          2.打开插件-->NppExec,选择Showconsole,和Follow($CURRE......
  • Linux 错误处理
    UNIX出错处理当unix系统函数出错时,通常返回一个负值,将整形变量errno设置为特定值。文件<errno.h>定义了errno以及可以赋予它的各种常量。这些常量都以E开头。Linux中,出......
  • linux---man
    linux---man命令man,manuals,手册、说明书,用来查看命令、api的用法对应网址:https://man7.org/linux/man-pages/index.html查看命令例子:#查看kill命令手册,用`m......