在学习linux-0.11内核的时候,感觉查看查看内存描述符比较费劲,因此自己写了一个描述符自动分类的软件,使用html+js。用网页打开即可使用,有需要的朋友自行下载。后面如果使用的人多了我挂到gitee去吧。 ...
分类:
其他好文 时间:
2021-07-01 17:26:05
阅读次数:
0
中断的简要介绍: 中断的出现是为了解决cpu和外设I/O之间速度不匹配的问题,硬件上每个外设都会连接一个设备管理器,该管理器连接中断处理器,再连cpu,如图所示 每个能够发出中断请求的硬件设备控制器都有一条称为IRQ(Interrupt ReQuest)的输出线。所有的IRQ线都与一个中断控制器的输 ...
分类:
其他好文 时间:
2020-07-08 23:13:23
阅读次数:
84
一. 页式内存管理介绍 80386能够将内存分为不同属性的段,并通过段描述符、段表以及段选择子等机制,通过段基址和段内偏移量计算出线性地址进行访问,这一内存管理方式被称为段式内存管理。 这里要介绍的是另一种内存管理的方式:80386在开启了分页机制后,便能够将物理内存划分为一个个大小相同且连续的物理 ...
分类:
其他好文 时间:
2020-06-19 01:15:16
阅读次数:
86
Q:通常情况下选择子中的RPL与对应描述符中的DPL相同,那么是否可以取缔RPL?RPL是保证内核数据安全的关键要素之一;在内核代码中有决定性作用,绝对不能取缔A.获取操作系统的内核该实验主要通过调用门调用将内核数据进行打印具体的实现代码如下%include"inc.asm"org0x9000jmpENTRY_SEGMENT[section.gdt];GDTdefinition;段基址,段界限,段
分类:
其他好文 时间:
2020-05-07 12:01:36
阅读次数:
73
代码间跳转的执行流程 以下面代码为例,看CPU在跳转过程做了什么操作。 jmp 0x20,0x004183d7 (一)段选择子拆分 0x20的二进制形式 0000_0000_0010_0000; RPL=00; TI=0; INDEX=4; (二)查表得到段描述符 TI=0,所以查GDT表; IND ...
分类:
其他好文 时间:
2020-04-23 23:30:24
阅读次数:
119
前言 我们知道volatile关键字的作用是保证变量在多线程之间的可见性,它是java.util.concurrent包的核心,没有volatile就没有这么多的并发类给我们使用。 本文详细解读一下volatile关键字如何保证变量在多线程之间的可见性,在此之前,有必要讲解一下CPU缓存的相关知识, ...
分类:
其他好文 时间:
2020-04-14 00:42:53
阅读次数:
74
任务切换的方法 第一个方法就是借助中断来进行任务切换,这是现代抢占式多任务的基础。在实模式下,内存最低端1KB是中断向量表,保存着256个中断处理过程的段地址和偏移地址。在保护模式下,处理器不再使用中断向量表,而是使用中断描述符表。中段描述符表和GDT,LDT是一样的,用于保存描述符,唯一不同的地方 ...
分类:
其他好文 时间:
2020-03-30 20:07:58
阅读次数:
97
内核结构 内核分为四个部分,分别是初始化代码,内核代码,内核数据段和公共例程段,主引导程序也是初始化代码的组成部分。 初始化代码用于从BIOS那里接管处理器和计算机硬件的控制权,安装最基本的段描述符,初始化最初的执行环境。然后,从硬盘上读取和加载内核的剩余部分,创建组成内核的各个内存段。 内核的代码 ...
分类:
其他好文 时间:
2020-03-30 18:00:37
阅读次数:
67
全局描述符 和一个段有关的信息需要 8 个字节来描述,所以称为 段描述符(Segment Descriptor) ,每个段都需要一个描述符。为了存放这些描述符,需要在内存中开辟出一段空间。在这段空间里,所有的描述符都是挨在一起,集中存放的,这就构成一个 描述符表 ,最主要的描述符表是 全局描述符表( ...
分类:
其他好文 时间:
2020-03-26 14:00:46
阅读次数:
101
通过前四章的努力,我们成功将控制权转交给了 loader.asm 这个程序,并且从实模式跨越到了保护模式。第四章讲保护模式的时候我说过,这是我们操作系统的第一个精彩之处。但其实这只是针对之前我们进行的只是无意义的输出,以及硬盘的加载等工作。但到了这一章,之前一步步的努力进入到了保护模式,也只能说是做 ...
分类:
其他好文 时间:
2020-01-26 22:23:18
阅读次数:
120