当前位置: 首页 > news >正文

做网站的困难西安学校网站建设报价

做网站的困难,西安学校网站建设报价,怎么增加网站的反链,四川网站建设有哪些在Linux内核中#xff0c;全局描述符表#xff08;Global Descriptor Table#xff0c;简称GDT#xff09;是一个关键的数据结构#xff0c;主要用于管理处理器的内存段和相关的权限与属性。它属于x86架构中的保护模式特性#xff0c;允许操作系统对内存访问进行更精细的…      在Linux内核中全局描述符表Global Descriptor Table简称GDT是一个关键的数据结构主要用于管理处理器的内存段和相关的权限与属性。它属于x86架构中的保护模式特性允许操作系统对内存访问进行更精细的控制。 以下是GDT在Linux内核中的主要用途 内存段管理GDT定义了各种内存段如代码段、数据段、栈段等。每个段在GDT中都有一个描述符该描述符包含了段的基地址、长度以及访问权限等信息。处理器使用这些描述符来确定对内存的访问是否合法。权限和属性控制通过GDT中的描述符操作系统可以控制哪些代码或数据可以被哪些处理器模式如实模式或保护模式访问。此外还可以设置段的属性如是否可执行、是否可写等。任务切换在多任务操作系统中GDT也用于任务切换。每个任务或进程可以有其自己的GDT这样当任务切换时处理器会加载新的GDT从而切换到新的内存段和权限设置。保护机制GDT是x86架构中保护机制的一部分它与其他机制如中断描述符表IDT、任务状态段TSS等一起工作确保系统的稳定性和安全性。 在Linux内核中GDT的初始化和管理通常发生在内核启动的早期阶段。内核会设置适当的段描述符并配置GDT的基地址和大小以便处理器能够正确地使用它。 需要注意的是随着操作系统和硬件架构的发展一些现代操作系统和处理器可能不再直接使用传统的GDT而是采用更先进的内存管理和保护机制。然而对于基于x86架构的Linux系统来说GDT仍然是一个重要的组成部分。 图一 下面我们顺着源码的流程来看看GDT表的建立和他的用途在head.s中我们会看到 call setup_gdt这个函数 startup_32:movl $0x10,%eaxmov %ax,%dsmov %ax,%esmov %ax,%fsmov %ax,%gslss _stack_start,%espcall setup_idtcall setup_gdtmovl $0x10,%eax ; reload all the segment registersmov %ax,%ds ; after changing gdt. CS was alreadymov %ax,%es ; reloaded in setup_gdtmov %ax,%fsmov %ax,%gslss _stack_start,%espxorl %eax,%eax 1: incl %eax ; check that A20 really IS enabledmovl %eax,0x000000 ; loop forever if it isntcmpl %eax,0x100000je 1bsetup_gdt:lgdt gdt_descrret gdt_descr:.word 256*8-1 # so does gdt (not that thats any.long _gdt # magic number, but it works for me :^).align 3_gdt: .quad 0x0000000000000000 /* NULL descriptor */.quad 0x00c09a0000000fff /* 16Mb */.quad 0x00c0920000000fff /* 16Mb */.quad 0x0000000000000000 /* TEMPORARY - dont use */.fill 252,8,0 /* space for LDTs and TSSs etc */ lgdt gdt_descr这条指令的意思就是把 gdt_48 放到gdtr寄存器中。gdt_descr是个标签gdt_descr由一个word 型 和一个long 型的数字组成。 图二 从代码中可以看到 界限值是256*8-1 2047.可以从实验中看到这个值0x5cb807ff 图三 低16为的值0x7ff 2047. 还可以看到gdt 的地址在0x00005cb8 处的数据 图四 有一处数据和源码中的有些不容暂时还不知道原因0x00c09300 源码中是0x00c09200 _gdt: .quad 0x0000000000000000 /* NULL descriptor */.quad 0x00c09a0000000fff /* 16Mb */.quad 0x00c0920000000fff /* 16Mb */.quad 0x0000000000000000 /* TEMPORARY - dont use */.fill 252,8,0 /* space for LDTs and TSSs etc */ 图五 目前的gdt 中只有四个项目的数据是我们提前写入的。后面我们在创建进程的时候调用fork 函数会创建每个进程的tss 和ldt并且把对应的值写入到gdt 表中。 set_tss_desc(gdt(nr1)FIRST_TSS_ENTRY,(p-tss));set_ldt_desc(gdt(nr1)FIRST_LDT_ENTRY,(p-ldt)); 图六 跑完整个main 函数后我们再来看gdt 表中的数据多了一些数据。 图七 我们查看进程表task总共有4个进程被创建 图八 但是我们查看gdt 表中前14项被使用除掉前面四个有10个事被进程使用的但是进程表中只有4个进程这个是什么原因应该是有进程退出了但是没有清除掉gdt中的内容。shell 进程创建了两次第一次退出了。 图九 从图九中可以看出 看出进程之间的关系 图十 从图十可以看出task[2]位置的进程创建于task[3]之后原来的进程应该是退出了。 下面我们来看看gdt 表中的存贮的内容的含义 图十一 64 个字节我们看gdt 中进程id 位0x1 的项目 的LDT  项目{a 0xf2d00068,  b 0x82fd}把它写成一个64位的数据0x000082fdf2d00068取出地址部分0x00fdf2d0. 图十二 我们从进程的任务表中查找到对应进程的ldt 表的地址是0xfdf2d8. GDT 中tss 项目的数据内容和LDT类似都可以通过gdt 表获取到对应地址处的数据。
http://www.hkea.cn/news/14510497/

相关文章:

  • 湖南seo网站设计域名注册网站 不认证
  • 怎样做好网站用户体验南通做网站推广的公司
  • 金融网站模板免费下载沈阳城市建设学院官网网站
  • 建设网站设计承接php网站建设
  • 网站首页原型图咋做杭州做网站的好公司
  • 手机网站和微信网站的区别产品促销活动方案
  • 域名做好了怎么做网站内容购物网站开发教程 视频
  • 网站如何被百度收录文字转链接网址
  • 可以做请柬的网站腾讯网站认证
  • 建设银行内部学习网站竞价排名的弊端
  • 微信公众号如何做微网站网站上的菠菜游戏哪里可以做
  • 35个好的网站设计做室内装修设计的网站
  • 无网站可以做cpc吗郑州seo线上推广系统
  • 建设网站怎样分配给用户空间青岛公司网页设计
  • 免费跨境电商网站xampp wordpress 建站教程
  • 网站的优化和推广方案门户网站建设教程
  • 网站维护很难吗wordpress前端框架
  • 南宁网站建设地方软件工程师工资高吗
  • 天津网站快速备案做企业网站怎样做
  • vps怎么上传网站程序兰州关键词网络推广
  • 随州网站建设推荐长沙县不错的建站按效果付费
  • 做注册会计师网站wordpress live space
  • 怎么把网站地图上传搭建电商平台网站
  • 高端模板建站报价wordpress 首页调用页面标题
  • 一步步教会你怎么做网站小程序源码能直接用吗
  • 中国建设银行卖狗年纪念币官方网站教学网站开发背景
  • 辽宁地矿建设集团有限公司网站莱芜信息平台
  • 用html5做的静态网站网站开发技术与功能 需求说明
  • 企业网站建设的必要性专业团队的梗
  • 资讯网站的优势福建亨立建设集团有限公司网站