Linux源码学习笔记day6 模式转换是什么鬼?
2023-06-13 09:17:12 时间
上一次我们一起学到把操作系统代码都复制到内存里的0地址处了。
模式转换
接下来就要进行模式转换了,要从16位实模式转换为32位保护模式。
这是x86的历史包袱。现在的CPU一般都是64位,至少也是32位的,所以需要写一段转换代码。
保护模式
还是在setup.s文件里,搬完操作系统代码就来到了end_move这个标签处。
end_move:
lidt idt_48 # load idt with 0,0
lgdt gdt_48
完了,这上来就是两个下马威,这俩个指令都不认识啊。
想要理解这2个指令就涉及到实模式和保护模式的区别了。目前我们还处于实模式下,这个模式的CPU寻址方式是之前说的:段基址左移4位 + 偏移地址
表达方式为
ds:偏移量
变成保护模式后,内存地址计算方式就变了。寄存器ds里的值
- 在实模式下叫段基址
- 在保护模式下叫段选择子,段选择子里存的是段描述符的索引。
然后根据段描述符到 全局描述符表(gdt) 里找一个段描述符,段描述符里才存着段基址。
再用这个段基址和偏移地址相加,得到物理地址(线性地址,还需要进行分页转换)。整体过程如下图所示:
那全局描述符表又是什么鬼呢?我们下次接着一起学。
相关文章
- Linux组权限设置:从入门到精通(linux组权限设置)
- Linux嵌入式驱动开发指南(linux嵌入式驱动开发)
- Linux: 为何被广泛应用?(linux有什么用)
- Linux系统命令源码:探究与实践(linux系统命令源码)
- USB转Linux:实现一键式无缝转换(usb转linux)
- Linux系统精简版:操作简单快速轻松下载(linux系统精简版下载)
- 深入体验Linux源码:安装Linux源码系统(安装linux源码系统)
- 快速完成Linux系统U盘安装(linux用u盘安装)
- Linux渗透攻防:探索新的可能性(linux渗透攻防)
- 深入浅出Linux内核源码学习(linux内核源码学习)
- 源码安装Linux系统下Redis源码安装指南(linux下redis)
- 基于Linux的串口开发研究(linux串口开发)
- Linux发展史:追溯分支历史(linux的分支)
- Linux发展历程:历经分支,共起绽放(linux的分支)
- Linux中如何进行日期转换?——轻松Get转换技巧(linux日期转换)
- Linux多线程调试技巧(多线程调试linux)
- 【开放世界:Linux系统的专利之旅】(linux专利)
- Linux 允许写入,禁止删除(linux可写不可删)
- Linux清空文件:快速解决方案(linux清空一个文件)
- 码 深入Linux源码,掌握系统运行机制(linux源)
- Linux 内核态进程探究:理解进程的运作机制(linux内核态进程)
- Linux搭建VPN服务器:轻松实现网络安全连接!(linux搭建vpn服务器)
- Linux命令行中的五彩缤纷(linux命令行颜色)
- Linux安装Wireshark:一步一步教你如何搞定(linux安装wireshark)