美文网首页
linux0.11内核分析-段描述符

linux0.11内核分析-段描述符

作者: CODERLIHAO | 来源:发表于2020-09-04 08:27 被阅读0次
Segment Descriptor
  1. Segment Limit
    存放段最后一个内存单元的偏移量,从而决定段的长度,如果G被置为0,则一个段的大小在1个字节到1MB之间变化,否则,将在4KB到4GB之间变化。
  2. Base Address
    包含段的首字节的线性地址。
  3. Type
    描述了段的类型特征和它的存取权限。
  4. S
    系统标志:如果被清0,则这个一个系统段,存储诸如LDT这种关键的数据结构,否则它是一个普通的代码段或数据段。
  5. DPL
    描述符特权级(Descriptor Privilege Level): 用于限制对这个段的存取。它表示为访问这个段二要求的CPU最小的优先级。因此,DPL设为0的段只能当CPL为0时(即在内核态)才是可访问的,而DPL设为3的段对任何CPL值都是可访问的。
  6. P
    Segment-Present标志:等于0表示段当前不再主存中。Linux总是把这个标志设为1,因为它从来不把整个段交换到磁盘上去。
  7. AVL
    可以由操作系统使用,但是被Linux忽略。
  8. L
    在IA-32e模式下,值1表示此代码段中的指令在64位模式下执行。值为0表示此代码段中的指令是在兼容模式下执行。如果设置了L位,则必须清除D位。不处于IA-32e模式时或对于非代码段,保留位21,并且应始终将其设置为0。
  9. D/B
    称为D或者B的标志,取决于是代码段还是数据段。D或B的含义在两种情况下稍微有所区别,但是如果段偏移量的地址是32位长,就基本上把它置位1,如果这个偏移量是16位长,它被清0。
  10. G
    粒度标志:如果该位清0,则段大小以字节为单位,否则以4096字节的倍数计。

相关文章

  • linux0.11内核分析-段描述符

    Segment Limit存放段最后一个内存单元的偏移量,从而决定段的长度,如果G被置为0,则一个段的大小在1个字...

  • linux0.11内核分析-bootsect

    章节目录 第一步:BIOS启动,加载bootsect 电脑加电启动后,RAM还没有数据,由于CPU只能执行内存中的...

  • linux0.11内核分析-setup

    章节目录上一节讲解了bootsect,由bootsect加载setup进入内存,最后jmpi 0,SETUPSEG...

  • linux0.11内核分析-head

    章节目录 head.s程序被编译后,会被链接成system模块的最前面开始的部分,head.s汇编程序与前面的语法...

  • Linux0.11内核源码下载

    linux0.11内核的源代码我已上传到github上https://github.com/mengchaobbb...

  • Linux中文件描述符,重定向与标准输入输出

    Linux中文件描述符,重定向与标准输入输出 文件描述符:内核(kernel)利用文件描述符(file descr...

  • select 和 epoll 区别

    select原理 将 文件描述符集合 fd_set 从用户空间拷贝到内核空间,进入内核态遍历所有的文件描述符,对每...

  • 文件描述符

    内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件...

  • 第三章 文件IO

    对于内核而言,所有打开的文件都通过文件描述符引用,文件描述符是一个非负整数文件描述符标准符号常量文件描述符0标准输...

  • 2021-04-03

    Linux0.11内核阅读——中断篇 中断前处理及中断现场恢复中断执行过程硬中断asm.strap.c软中断sys...

网友评论

      本文标题:linux0.11内核分析-段描述符

      本文链接:https://www.haomeiwen.com/subject/lntbsktx.html