首页 > 其他分享 >保护模式

保护模式

时间:2024-03-11 23:26:28浏览次数:27  
标签:保护模式 操作系统 映射 代码 保护 任务

一、理解保护模式

  大多数现代操作系统(包括Windows 9X/NT/XP和Linux等)都是多任务的,CPU的保护模式是操作系统实现多任务的基础。了解保护模式的底层原理对学习操作系统有着事半功倍的作用。

  保护模式是为了实现多任务而设计的,其名称中的“保护”就是保护任务环境中各个人物的安全。多任务环境的一个基本问题就是当多个任务同时运行时,如何保证一个任务不会受到另一个任务的破坏,同时也不会破坏其他任务,也就是要实现多个任务在同一个系统中“和平共处,互不侵犯”。所谓的“任务”,从CPU的角度来看就是CPU可以独立调度和执行的程序单位。从Windows操作系统的角度来看,就是一个任务就是一个线程(thread)或者进程(process)。

  总结来说,可以把保护模式对任务的保护机制划分为任务内的保护和任务间的保护。任务内的保护指的是同一任务内不同级别的代码不会相互破坏。任务间的保护指的是一个任务不会破坏另一个任务。简单的说,任务间的保护是靠内存映射机制(包括段映射和页映射)实现的,任务内的保护是靠特权级别检查实现的。

1.1任务间的保护机制

  任务间的保护主要是靠虚拟内存映射机制来实现的,即在保护模式下,每个人物都被置于一个虚拟内存控件中,操作系统来决定何时以及如何把这些虚拟内存映射到物理内存。

举例: 

  在Win32下,每个人物都被赋予4GB的虚拟内存空间,可以用地址0~0XFFFFFFFF来访问这个空间的任意地址。虽然不同的人物可以访问相同的地址(比如:0x00401010,但是因为这个地址仅仅是当前任务空间中的虚拟地址,不同任务处于不同的虚拟空间中,不同任务的虚拟地址被映射到不同的物理地址,这样就可以很容易的防止一个任务内的代码直接访问另一个任务的数据。IA-32 CPU提供了两种机制来实现内存映射:段基址(Segmentation)和页基址(paging)。

1.2任务内保护机制

  任务内的保护机制主要用于保护操作系统。

  操作系统的代码和数据通过被映射到系统中每个人物的内存空间中,并且对于所有人物其地址是一样的。例如,在Windows系统中,操作系统的代码和数据通常会被映射到每个进程的高2GB空间中。这意味着操作系统的空间对于应用程序来说是“可触及的”,应用程序中的指针可以指向操作系统中所使用的内存。

  任务内保护的核心思想就是权限的控制,即代码和数据根据其重要性指定特权级别,高特权级的代码可以执行和访问低特权级的代码和数据,而低特权级的代码不可以直接执行和访问高特权级的代码和数据。高特权级通常被赋予重要的数据和可信任的代码,比如操作系统的数据和代码。低特权级通常被赋予不重要的数据和代码,比如应用程序。这样操作系统可以直接访问应用程序的代码和数据,而应用程序虽然可以指向系统的空间,但是不能访问,一旦访问就会被系统发现并且禁止。

实例:

int main(int argc,char*argv[])
{
    *(int*)0x8003f100 = 0x22; //视图访问高2GB内存并且赋值
    return 0;
}

 

分析:尽管应用程序可以指向系统的内存,但是访问时会被系统发现并且禁止。

事实上,应用程序只能通过系统提供的接口(API)来使用操作系统的服务,即系统调用。系统调用相当于在系统代码和用户代码之间开了一扇有人看守的小门。

1.3特权级

 

标签:保护模式,操作系统,映射,代码,保护,任务
From: https://www.cnblogs.com/zhongyongzixue/p/18067335

相关文章

  • 实模式和保护模式的区别
    实模式和保护模式是指计算机在不同工作模式下的运行状态和功能。实模式(RealMode):实模式是早期的x86计算机运行的基本模式,它提供了最初的兼容性,与早期的8086和80286处理器兼容。运行在实模式下的计算机仅能访问1MB的物理内存,并且没有内存保护机制。实模式使用物理地址寻址方......
  • 80386保护模式笔记
    目录保护模式简述分段管理机制控制寄存器与系统地址寄存器任务状态段和控制门控制转移任务内无特权级变换的转移,段间转移:任务内不同特权级的变换转移任务切换386中断和异常中断异常中断门或陷阱门的转移转移总结任务切换途径任务内特权集变换途径任务内相同特权级转移的途径操作系......
  • 实保护模式、任务、任务内特权集切换
    保护模式是内核逆向、内核对抗基础。《80x86汇编汇编语言程序设计》第10章示例5清晰的展示了:实模式/保护模式的切换,任务内特权集切换,任务间切换的底层细节。保护模式学习代码笔记如下:;程序名:T10-5.ASM;功能:演示任务切换和任务内特权级变换;INCLUDE386SCD.ASM;参见实例三.3......
  • 一个操作系统的设计与实现——第3章 保护模式
    实模式下,内存的访问是没有任何限制的,任何程序都能访问和修改任何内存地址,这就导致了实模式下的程序,甚至操作系统自己,都可能自身难保。于是,自8086的下一代产品80286起,保护模式诞生了;进一步的,自80386起,32位保护模式诞生了。3.1内存为什么要分段在学习保护模式之前,需要先讨论一个......
  • 保护模式下的存储管理
    分段段描述符32位模式下,\(2^{32}bits=4GB\),起始地址用\(32bits\)表示,偏移用\(20bits\)表示,一页大小是\(4KB\),\(2^{20}\times2^{12}=2^{32}\),表示内存空间的某个位置最少用\(52bits\),实际上用\(64bits\),段基地址32位+限长20位+访问权限8位+属性4位。P:存在位:=1表示装入内存,=0......
  • 实模式和保护模式
    读源码时应该注意的事项在第一遍阅读源码时,已弄懂整体流程为主,至于具体的实现细节先简单的理清处过一遍,不用过于纠结。当梳理清楚全部的框架逻辑后,第二遍再深入的学习研究各个模块的实现,此时应该解决第一遍中的疑惑。第三遍可以跳出代码的实现,来看Linux的设计思路、编程......
  • Linux第四章(80X86保护模式及其编程)
    80X86保护模式及其编程80X86基础知识保护模式内存管理各种保护措施中断和异常处理任务管理保护模式编程的初始化一个简单的多任务内核4.180X86系统寄存器和系统指令为了协助处理执行初始化和控制系统操作,80X86提供了一个标志寄存器EFLAGS和几个系统寄存器,除了一些通......
  • java开发操作系统内核:由实模式进入保护模式之32位寻址
    从时模式到保护模式,是计算法技术跨时代的发展。大家想想笨拙的Dos界面,黑底白字的那种冷漠界面到win95各种色彩斑斓的窗口,两者之间的区别其实就是实模式和保护模式的天壤之别。保护模式中,最重要的一个概念莫过于”保护”二字,有了“保护”功能后,CPU为软件提供了很多的功能,当然也有了......
  • 保护模式超强的寻址功能:天空任鸟飞
    X86架构下,cpu的运行模式分两种,一种是实模式,像早期Dos那种黑底白字的命令行操作界面,可以说是实模式最好表现形式,在实模式下也只能产生这种冰冷,呆板,机械的用户体验。后来Intel的CPU进一步发展,引入了保护模式,由此,操作系统的发展进入了新的时代,在保护模式下,CPU功能进一步增强,进而支撑......
  • redis去掉保护模式
    #情境今天在部署redis的过程当中,启动之后,竟然报了一堆警告的错误,客户端也连接不上redis这就很奇怪了,原来是redis开启了保护模式#解决1)首先进入redis客户端模式./redis-c......