• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Linux内核系列—4.操作系统开发之LDT,linuxldt

Linux内核系列—4.操作系统开发之LDT,linuxldt

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了linux内核 文件操作,深入理解linux内核,linux内核完全注释,linux内核版本,查看linux内核版本等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Linux内核系列—4.操作系统开发之LDT,linuxldt


一直以来,我们把所有的段描述符都放在GDT中,而不管它属于内核还是用户程序,为了有效地在任务之间实施隔离,处理器建议每个任务都应当具有自己的描述符表,称为局部描述符表LDT,并且把专属于自己的那些段放到LDT中。

和GDT一样,LDT也是用来存放描述符的。不同之处在于,LDT只属于某个任务。或者说,每个任务都有自己的LDT,每个任务私有的段,都应当在LDT中进行描述。另外,LDT的第1个描述符,也就是0号槽位,也是有效的、可以使用的。

LABEL_DESC_LDT:    Descriptor       0,        LDTLen - 1, DA_LDT	; LDT

SelectorLDT		equ	LABEL_DESC_LDT		- LABEL_GDT

[SECTION .s16]
; 初始化 LDT 在 GDT 中的描述符
	xor	eax, eax
	mov	ax, ds
	shl	eax, 4
	add	eax, LABEL_LDT
	mov	word [LABEL_DESC_LDT + 2], ax
	shr	eax, 16
	mov	byte [LABEL_DESC_LDT + 4], al
	mov	byte [LABEL_DESC_LDT + 7], ah

	; 初始化 LDT 中的描述符
	xor	eax, eax
	mov	ax, ds
	shl	eax, 4
	add	eax, LABEL_CODE_A
	mov	word [LABEL_LDT_DESC_CODEA + 2], ax
	shr	eax, 16
	mov	byte [LABEL_LDT_DESC_CODEA + 4], al
	mov	byte [LABEL_LDT_DESC_CODEA + 7], ah

LDTR寄存器只用于指向当前任务的LDT。每当发生任务切换时,LDTR的内容被更新以指向新任务的LDT。如果选择子的TI被置为1则系统将从当前LDT中寻找相应描述符。当用到SelectorLDTCodeA时,系统会从LDT中找到LABEL_LDT_DESC_CODEA描述符,并跳转到相应的段中。在用LDT前需要先用lldt指令加载ldtr,lldt的操作数是GDT中用来描述LDT的描述符。

; LDT
[SECTION .ldt]
ALIGN	32
LABEL_LDT:
;                            段基址       段界限      属性
LABEL_LDT_DESC_CODEA: Descriptor 0, CodeALen - 1, DA_C + DA_32 ; Code, 32 位

LDTLen		equ	$ - LABEL_LDT

; LDT 选择子,SA_TIL将此选择子的TI位置为1.
SelectorLDTCodeA	equ	LABEL_LDT_DESC_CODEA	- LABEL_LDT + SA_TIL
; END of [SECTION .ldt]

运行结果如下:

 

一个码农的日常 

【源码及软盘映像】

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Linux内核系列—11.操作系统开发之ELF格式,linuxelf
  • Linux内核系列—7.操作系统开发之中断和异常,linux内核
  • Linux内核系列—6.操作系统开发之内存分页机制,linux分页
  • Linux内核系列—4.操作系统开发之LDT,linuxldt
  • Linux内核系列—操作系统开发之保护模式的优势,linux内核
  • Linux内核系列—操作系统开发之进入32位保护模式,linux保护模式
  • Linux内核系列—操作系统开发之HelloWorld,linuxhelloworld

相关文章

  • 2017-05-26Linux主机网络流量监控ifstat
  • 2017-05-26填坑实录 Android Studio 利用 ADB WIFI 插件实现真机无线调试,androidadb
  • 2017-05-26LocationManager使用细节,locationmanager
  • 2017-05-26Android 手机卫士10--应用管理器,android10--
  • 2017-05-26浅谈Android编码规范及命名规范,浅谈android编码规范
  • 2017-05-26arcgis andriod 加载影像,arcgisandriod
  • 2017-05-26android 特殊用户通知用法汇总--Notification源码分析
  • 2017-05-26Android之ViewPager 第一课,androidviewpager
  • 2017-05-26android 读中文文本文件,android中文
  • 2017-05-26andriod 获得应用程序名称,andriod应用程序

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Activity按下2次退出,Activity2次退出
    • 优化1--布局的优化,优化1--布局优化
    • 6.3.1 数据存储与访问之——初见SQLite数据库
    • Android提权漏洞CVE-2014-7920&CVE-2014-7921分析,android提权漏洞
    • Android studio 下的SDK Manager只显示已安装包的情况,androidsdk
    • 移动应用支付系列一:支付宝支付,移动应用支付系列
    • 【Android】第7章(2)--布局控件常用的公共属性,android第7章
    • 网络连接异常处理工具,网络连接异常处理
    • 带新手走进神秘的HTTP协议,新手走进协议
    • android布局带参返回,android布局

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有