![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
《操作系统真象还原》学习笔记
文章平均质量分 89
取个名字太难了a
这个作者很懒,什么都没留下…
展开
-
《操作系统真象还原》学习笔记:第七章 中断
把中断按事件来源分类,来自CPU外部的中断就称为外部中断,来自CPU内部的中断就称为内部中断。原创 2023-08-23 10:05:10 · 552 阅读 · 0 评论 -
《操作系统真象还原》学习笔记:第六章 完善内核
所以,对这类寄存器操作方法是先在Address Register中指定寄存器的索引值,用来确定所操作的寄存器是哪个,然后在Data Register 寄存器中对所索引的寄存器进行读写操作。默认情况下,Miscellaneous Output Register 寄存器的值为 0x67,其他字段不管,咱们只关注这最重要的 I/OAS 位,其值为 1。Feature Control register 寄存器的写端口也是 3xAh 的形式,该端口地址取值以同样的方式受 I/OAS 位的影响。原创 2023-08-03 15:57:55 · 224 阅读 · 0 评论 -
makefile基本用法
makefile基本语法目标文件:依赖文件[Tab] 命令目标文件是指此规则中想要生成的文件,可以是.o结尾的目标文件,也可以是可执行文件,也可以是个伪目标依赖文件是指要生成此规则的目标文件,需要哪些文件。通常依赖文件不止一个,所以此处是个依赖文件的列表命令是指此规则中要执行的动作,这些动作可以是指各种shell命令。命令可以有多个,但一个命令要独占一行,行首必须以Tab开头。make程序如何判断文件有过更新呢atime,即access time,表示访问文件数据时间,每次读取文件数据原创 2021-12-22 23:47:48 · 788 阅读 · 0 评论 -
什么是中断
异常:异常是指令执行期间CPU内部产生的错误引起的,由于是运行时错误,所以它不受标志寄存器 eflags 中的 IF 位影响,无法向用户隐瞒(因为运行不下去了,错误兜不住了)。并不是所有的异常都很致命,按照轻重程度,可以分为以下三种。:(1) Fault,也称为故障。这种错误是可以被修复的一种类型,属于最轻的一种异常,它给软件一次“改过自新”的机会。当发生此类异常时 CPU 将机器状态恢复到异常之前的状态,之后调用中断处理程序时,CPU 将返回地址依然指向导致 fault 异常的那条指令。通常中断.原创 2021-11-26 00:50:23 · 1212 阅读 · 0 评论 -
基本内联汇编和扩展内联汇编(《操作系统真象还原》笔记)
#内联汇编基本内联汇编是最简单的内联形式,其格式为:asm [volatile] ("assembly code")asm:用于声明内联汇编表达式,这是内联汇编固定补分,不可少。asm和__asm__ 是一样的,是由gcc定义的宏:#define __asm__ asm。volatile:是可选项,它告诉gcc:“不要修改我写的汇编代码,请原样保留”。volatile 和__volatile__是一样的,是由gcc定义的宏:#define __volatile__ volatile“a原创 2021-11-16 12:28:25 · 558 阅读 · 0 评论 -
AT&T汇编语法和intel汇编语法的区别
区别intelAT&T说明寄存器寄存器前无前缀寄存器前有前缀%操作数顺序目的操作数在左,源操作数在右源操作数在左,目的操作数在右intel的设计思想史目的操作数=源操作数,所以目的操作数为作值。AT&T的设计思想是源操作数->目的操作数,所以目的操作数在右边操作数指定大小有关内存的操作数前要加数据类型的修饰符:byte表示8位,word表示16位,dword表示32位,如mov byte[0x1234,eax]指令的最后一个字母表示操...原创 2021-11-15 10:06:47 · 597 阅读 · 0 评论 -
段描述符、全局描述符表GDT、段选择子
1.段描述符保护模式大大提高了安全性,其中很大一部分的安全就体现在了内存段的描述方面,偏移地址还是和实模式下一样,但是段寄存器保存的再也不是段基址了,为了更安全添加了约束条件,这些“约束条件”便是对内存段的描述信息,由于信息太多,一个寄存器肯定放不下,所以专门找了数据结构——全局描述符表,其中每一个表项都称为段描述符,其大小为64字节,用来描述各内存段的起始地址、大小、权限等信息,全局描述符表很大所以放在内存中,由GDTR寄存器指向它。段寄存器里面保存的内容叫“选择子”,selector,选择子原创 2021-11-10 10:28:12 · 1047 阅读 · 0 评论 -
《操作系统真象还原》学习笔记:第五章 保护模式进阶,向内核迈进
;loader.s%include "boot.inc"section loader vstart=LOADER_BASE_ADDRLOADER_STACK_TOP equ LOADER_BASE_ADDR ;构建gdt及其内部的描述符 GDT_BASE: dd 0x00000000 dd 0x00000000 CODE_DESC: dd 0x0000FFFF dd原创 2021-11-02 03:33:28 · 520 阅读 · 0 评论 -
《操作系统真象还原》学习笔记:第四章保护模式入门
1.为什么要有保护模式1)实模式下操作系统和用户程序属于同一特权级2)用户程序所引用的地址都是指向真实物理地址的,也就是说逻辑地址等于物理地址,实实在在的指哪打哪3)用户程序可以自由修改段基址,可以访问所有内存4)访问超过64kb的内存区域时要切换段基址,转来转去容易晕乎5)一次只能运行一个程序,无法充分利用计算机资源6)共20条地址线,最大可访问的内存为1MB2.初见保护模式1.保护模式之寄存器保护模式大大提高了安全性,其中很大一部分的安全就体现在了内存段的描述方面,偏移地址还是和实原创 2021-11-01 07:08:18 · 1490 阅读 · 0 评论 -
《操作系统真象还原》学习笔记:bochs调试方法
Debugger control 类q|quit|exit,这三个命令任意一个都能退出调试状态,关闭虚拟机,一般用q最简单set是指令族,通常用set设置寄存器的值1) 例如set reg = val 。可以设置的寄存器包括通用寄存器和段寄存器。2)也可以设置每次停止执行时,是否反汇编指令:set u on|offshow是指令族,有很多子功能,常用就下面3个1)show mod 每次cpu变换模式时就提示,模式是指保护模式、实模式,2)show int 每次有中断时就提示,同原创 2021-10-31 04:09:05 · 1098 阅读 · 0 评论 -
《操作系统真象还原》学习笔记:第三章 完善MBR
1.地址、section、vstart什么是地址地址只是数字,描述各种符号在源程序中的位置,它是源代码文件中各符号偏移文件开头的距离。由于指令和变量所占内存大小不同,故它们相对于文件开头的偏移量参差不齐。什么是section伪指令section对程序中的地址产生任何影响,即在默认情况下,有没有section都一个样,section中数据的地址依然是相对于整个文件的顺延,仅仅是在逻辑上让开发人员梳理程序之用什么是vstartsection用vstart=来修饰后,可以被赋予一个虚拟起始地原创 2021-10-31 02:38:16 · 392 阅读 · 0 评论 -
《操作系统真象还原》学习笔记:第二章 编写MBR主引导记录
1. 计算机的启动过程为什么要载入到内存(1)CPU的硬件电路被设计成只能运行处于内存中的程序(2)内存比较快,且容量大,什么是载入内存(1)程序被加载器(软件或硬件)加载到内存某个区域。(2)CPU的cs:ip寄存器被指向这个程序的起始地址。从按下主机power键后,第一个运行的软件就是bios2. 软件接力第一棒,BIOSBIOS 全称叫 Base Input & Output System,即基本输入输出系统BIOS是工作在16位实模式下的2.1实模式下的内存布局原创 2021-10-29 18:49:59 · 315 阅读 · 0 评论 -
《操作系统真象还原》学习笔记:第一章 部署工作环境
部署工作环境物理机操作系统:windows10虚拟机软件:VMware Workstation 16pro虚拟机操作系统:Centos7依赖环境安装yum install -y gtk2 gtk2-develyum install -y libXt libXt-develyum install -y libXpm libXpm-develyum install -y SDL SDL-develyum install -y libXrandr-devel.x86_64yum insta原创 2021-10-29 13:19:55 · 314 阅读 · 0 评论