![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统基础
伴你永居我忆i
这个作者很懒,什么都没留下…
展开
-
什么是内核态,什么是用户态,谁定义的?从段页层面解析用户态和内核态
应该学习过一段时间的人,都能唱出来,低2GB是用户空间,高2GB是内核空间,我们如果在用户空间访问内核空间数据,直接给你一个0xC0000005异常,告诉你你没有权限访问, 今天就给大家完全的解析什么是内核空间,什么是用户空间CPU有4个运行级别,如下图,我们所说的内核就是Ring0当CPU运行ring0态的时候就是内核态(也就是CPL=0),此时拥有最 高的权限而在用户态的时候就是CPL=3此时CPU处于用户态 再次提出几个问题解决...原创 2020-10-11 15:53:47 · 1377 阅读 · 0 评论 -
一致代码段,非一致代码段的本意和详细测试
不知道有没有人尝试过mov cs,ax这样的指令结果肯定挂,因为不能直接修改cs段寄存器的值,不能直接修改,那肯定可以间接咯,cs段寄存器和其他的段寄存器不太一样,它能加载的段描述符有:代码段描述符,调用门,TSS任务段,任务门,如果加载数据段描述符直接挂,(用数据段加载代码段描述符的时候,直接过,访问内存的时候才挂),而用cs加载数据段描述符直接挂。 这篇帖子只讲代码段描述符(调用门,任务门这些系统段描述符会后面会讲)代码段描述符S=1时TYPE>=8 此时这个段描述符...原创 2020-10-11 12:51:55 · 680 阅读 · 0 评论 -
内存分区
内存对于很多人来说都会有一中,感觉很抽象有种很虚拟的感觉,内存是实体,是由很多内存条构成,我们知道有每8个晶体管称为一个存储单元(一个字节),内存也划分了很多分区,而存储在不同区域的变量有不同的特性,如存储在栈中的我们必须给初始化在程序中我们应该看到的不是变量,而是内存,变量名只是一个标识符,我们通过它操作内存每一个变量都是有一个地址,在内存中占据一段内存,而变量名是这段内存的(标识),我们...原创 2019-06-27 16:08:07 · 274 阅读 · 0 评论 -
8086CPU段地址*16+偏移地址的寻址方式
8086CPU的设计者设计之初地址总线有20根,支持的寻址范围应当是1M,但是8086寄存器都是16位的8086CPU可以说是16位的,寻址范围64K,设计者为了更合理的使用地址总线的,采用段地址16+偏移地址=物理地址的思想,引进了 四个段寄存器 CS,SS,ES,DS和四个偏移地址寄存器 BX,BP,SI,DI 都是16位寄存器用一个16位寄存器是无法让寻址范围到达1M的,引入了 段寄...原创 2019-08-04 21:46:53 · 2029 阅读 · 0 评论