首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
保护模式专题
《x86汇编语言:从实模式到保护模式》视频来了
《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试
阅读更多...
x86的保护模式(一)
10月份就剩明天一天了,今天晚上突袭一下,写篇新博客 2017年10月30日18:13:23 BY :张飞online
阅读更多...
保护模式总结(四)——分页机制
这是总结的最后一篇,来讲讲分页机制。为什么会有分页机制?如果没有分页机制,内存管理会出现“碎片化”的现象,另外,在虚拟存储中,将没有统一调度的内存大小。为了解决这些因为段长度不同而带来的各种内存管理问题,于是有了分页机制。 页的最小单位是4K。引入分页机制之后,段部件获得的地址就不再是物理地址了,而是线性地址,也就是虚拟地址。
阅读更多...
保护模式总结(三)——任务切换
上一篇总结回顾了任务在计算机中的实现形式,现在接着来讲任务的切换。 任务切换在处理器中并没有特殊的指令,而是借用老指令。有两种方法: 第一种方法:借助中断方式。说到中断方式就必须要引入一个概念,中断描述符表。这个概念具体在下一篇总结中介绍,大致上就是一些存放中断处理程序段的信息的描述符。不同的是,它保存的是门描述符,包括中断门,陷阱门,任务门。结构如
阅读更多...
保护模式总结(二)——任务和特权级
32位保护模式相对实模式来说,除了内存保护,还多了一大功能,那就是多任务。今天总结的内容就从多任务入手。 程序本质上是指令和数据,任务是程序为了完成某个特定的工作而执行的一个副本。 这是抽象的描述,任务在计算机中具体是由什么描述的呢?下面引入LDT和TSS的概念。 LDT:局部描述符表Local Descriptor Table。
阅读更多...
保护模式总结(一)——初探
最近看了李忠老师写的《从实模式到保护模式》,发现保护模式的东西其实真不少,概念性的东西挺多,但是总体来说,弄明白一些新事物的来由,就会加深记忆。这里写几篇总结,算作是对保护模式思路的整理。 首先说保护模式,保护的是什么?从物理上来看,应该是保护存储器,从逻辑上来看,保护的是操作系统。正式因为实模式的分段机制可以让内存被随意修改,操作系统得不到保护,所以出现了保护模式。
阅读更多...
保护模式下DPL,RPL,CPL的区别
1.当前特权CPL(Current Privilege Level) CPL是当前进程的权限级别(Current Privilege Level),是当前正在执行的代码所在的段的特权级,存在于cs寄存器的低两位。 2.描述符特权级DPL(Descriptor Privilege Level) DPL存储在段描述符中,规定访问该段的权限级别(Descriptor Privilege
阅读更多...
保护模式下三个重要的系统表——GDT、LDT和IDT
这三个表是在内存中由操作系统或系统程序员所建,并不是固化在哪里,所以从理论上是可以被读写的。这三个表都是描述符表。描述符表是由若干个描述符组成,每个描述符占用8个字节的内存空间,每个描述符表内最多可以有8129个描述符。描述符是描述一个段的大小,地址及各种状态的。 描述符表有三种,分别为全局描述符表GDT、局部描述符表LDT和中断描述符表IDT。 1. 全
阅读更多...
Intel8086处理器使用NASM汇编语言实现操作系统18-保护模式与特权级概述
实模式下,任意程序,可以操作任意内存位置,为了避免这种情况的发生,所以有了保护模式,保护的就是用户程序之间的相互隔离(当然了,外挂之类的那都是后文要说的了,暂不考虑) 80386及它以后的处理器,都支持三种模式 1.实模式 x86是32位的cpu,所以无法运行早期8086那种16位汇编程序的时候,为了能运行16位程序,这种方式就叫做实模式,计算机启动的时候,是从实模式开始启动的,包括我们如今
阅读更多...
IA32系统级架构总览(一) 实模式和保护模式
应用程序的编写大部分的时候是不必关心系统级架构的,最多学习一下平台所给的API即可,也就是我们通常说的黑箱子。但是在学习操作系统的时候,系统级架构是要关心的。 系统级架构很难学习,其中一个很大的原因是“纷繁复杂的架构”,还有就是很强的陌生感。先说个故事吧。 秋季学期俱乐部招新由我来面试,之前并没有做过这样的事情,我的手中有一份参加面试的名单,上面写着同学们的姓名、学号、学院、联系方式等信
阅读更多...
保护模式超强的寻址功能:天空任鸟飞
X86架构下,cpu 的运行模式分两种,一种是实模式,像早期Dos那种黑底白字的命令行操作界面,可以说是实模式最好表现形式,在实模式下也只能产生这种冰冷,呆板,机械的用户体验。后来Intel的CPU进一步发展,引入了保护模式,由此,操作系统的发展进入了新的时代,在保护模式下,CPU功能进一步增强,进而支撑的起计算量繁重的图形用户界面,我们这才有了温暖,炫酷,友好的图形操作系统,微软也正是靠8038
阅读更多...
虚拟实现汉字系统----VVDOS -- 源码 -- 保护模式程序 - 1
虚拟实现汉字系统----VVDOS -- 源码 -- 保护模式程序 - 1 1、V27.ASM ; ; v27.asm ; ; .386p data segment use16 public data ends code segment use16 public assume cs:code,ds:data code ends os32_code segment u
阅读更多...
虚拟实现汉字系统----VVDOS -- 源码 -- 保护模式程序 - 2
虚拟实现汉字系统----VVDOS -- 源码 -- 保护模式程序 - 2 1、HZ27.INC ; HZ27.inc ; ; ; ; ; ; ; os32_code segment use32 public assume cs:os32_code,ds:data BeginPut proc near mov dx,3ceh mov al,5 ; write 0
阅读更多...
保护模式编程之(一)——分段机制与GDT/LDT
概述:若想理解操作系统程序中的启动相关的部分,必须要理解保护模式下的编程,而分段机制是保护模式编程下的基础。另外,由于实模式与保护模式的不同,对保护模式下的分段机制更需要注意。同时,这一部分的基本数据结构是以后理解代码跳转的基础,必须要熟练。 本文来源:保护模式编程之(一)——分段机制与GDT/LDT 1.段的定义 段是虚拟地址到线性地址转换的基础,段的特征
阅读更多...
实模式与保护模式解惑之(一)——二者的起源与区别
概述:实模式和保护模式是处理器发展的两个非常重要的阶段。这两个模式下的编程也有着显著的不同,弄明实模式与保护模式的区别是理解操作系统运行原理和编写操作系统的基础。本文主要讲解了实模式和保护模式的区别和保护模式的起源,侧重点在二者寻址方式上的差异。 本文来源:实模式与保护模式解惑之(一)——二者的起源与区别 1.保护模式的起源 最开始的程序寻址是直接的“
阅读更多...
二、进入保护模式--内核加载器LOADER:实模式下内存容量检测、开启保护模式、开启分页模式、加载kernel到内存缓冲区、加载kernel到内存(内存复制函数)-kernel
保护模式 我们刚开机时候进入的都是实模式,对硬件访问没有任何的保护措施,随意修改里面的程序,及其不安全。所以我们之后进入保护模式。 保护模式:cpu扩展、寻址扩展、运行模式扩展、运行模式反转、指令扩展 CPU扩展: 实模式是使用的8086的CPU的16位,保护模式的运行环境变为了32位。所以开机时32位的CPU先处于16位的状态,再转为32位。但是16位也可以访问32位的资源。16
阅读更多...
《操作系统真象还原》第四章——保护模式入门
前置知识 段描述符格式 段界限:表示段边界的扩展最值 此段界限是一个单位量,其单位要么是字节,要么是4KB,具体可由G位进行指定最终段界限=此段界限值*单位实际段界限计算公式:(此段界限值+1)*(G位)-1G:粒度位,用于解释段界限的单位 为0:表示段界限的单位表示为字节为1:表示段界限的单位表示为4KBS:描述符类型 为0,表示系统段为1,表示非系统段(代码段或者数据段)type:用
阅读更多...
滴水中级班保护模式阶段测试作业
// 保护模式阶段测试第一题.cpp : Defines the entry point for the console application. // 1给定一个线性地址,长度,读取内容 2-9-9-12 #include "stdafx.h" #include <Windows.h> typedef struct PAGE{ DWORD PTELinkAddress; D
阅读更多...
浅谈Redis 的 保护模式(protected-mode)
今天在一台服务器上面部署了redis,发现始终无法用工具远程连接,项目里面是正常的,就是工具不行,防火墙也关闭了.折腾了一会才突然想起来,是不是触发了保护模式. 什么时候触发保护模式protected-mode: 同时满足以下两个: 1.bind未指定ip 2.未配置密码 解决方案: 编辑redis.conf protected-mode yes改为no,重启服务器即可
阅读更多...
[Spring Cloud] Eureka 的自我保护模式及相关问题
一Eureka 的自我保护模式 等待 Eureka Server 自动恢复重启 Eureka Server关闭 Eureka 的自我保护模式 二开发环境的 Eureka Server三参考链接 一、Eureka 的自我保护模式 访问Eureka主页时,如果看到这样一段大红色的句子: EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING
阅读更多...
保护模式 x86 PDE-PTE中的PWT_PCD位
PDE-PTE中的PWT_PCD位 目录 文章目录 目录先了解CPU缓存PWT 位 [3]PCD 位 [4] 先了解CPU缓存 1>CPU缓存是位于CPU与物理内存之间的临时存储器,他的容量比内存小得多,但是交换速度却比内存要快得多. 2>CPU缓存可以做的很大,有几K,几十K,几百K甚至上M的也有. CPU缓存与TLB的区别: TLB : 线性地址<----->物理地
阅读更多...
保护模式 x86 控制寄存器
控制寄存器 目录 文章目录 目录Cr0寄存器PE 位 [0]PG 位 [31]WP 位 [16] Cr2 寄存器Cr4 寄存器PAE 位 [5]PSE 位 [4] 控制寄存器用户控制和确定CPU的操作模式. Cr0 Cr1 Cr2 Cr3 Cr4(注意跟DR0-DR7分开) Cr1 保留 Cr3 页目录表基址 Cr0寄存器 PE 位 [0] PE = Prot
阅读更多...
保护模式 x86 TLB
TLB 文章目录 TLBTLB结构TLB种类实验 思考: 通过一个线性地址0x12345678访问一个物理页,我们想要读取0x12345678地指处一个字节的数据时, 操作系统是真的只读了一个字节吗? 答:线性地址首先会被拆分,然后读取PDE(4字节),再读取PTE(4字节),最后读取物理页上的1字节,总共读取了8+1字节. 补充提问: 会不会有这种情况,DWO
阅读更多...
保护模式 x86 页保护机制
页的机制 目录 文章目录 页的机制目录分页物理地址-线性地址-有效地址分页机制2 9 9 1210 10 12设置分页方式 实验:通过线性地址找到物理地址(10-10-12)PDE PTE PDE_PTE属性P位 [0]R/W位 [1]U/S [2]P/S PDE[7] pte没有A位D位 页目录表基址 0xc0300000页表基址 0xc0000000线性地址转物理地址公式
阅读更多...
redis保护模式的报错
1.首先得保证redis实在gcc环境下运行的 2.如果发现命令行中只能打印出大写在符号,那么长安【A】就好,或者shift+[A]试试 3.mini安装Linux发现连不了网,要在配置文件中启动网关,并且设置自动分配IP地址,如果手动配置IP地址的话开门,可能还是连不上 4.java连接Redis出现错误, --------(错误原因:1>Linux防火墙默认是开启的 2>Redis默认是保护模
阅读更多...
DG保护模式切换
ADG三种模式切换及介绍 1.1切换到最大保护模式(PERFORMANCE-->PROTECTION) --主库select name,protection_mode,database_role,switchover_status from v$database;NAME PROTECTION_MODE DATABASE_ROLE SWITCHOVER_STATUS------
阅读更多...