chapter15------任务切换
摘要:任务切换的基本方式(简介) 协同式 从一个任务切换到另一个任务时,需要 当前任务主动地请求暂时放弃执行权,或者在通过调用门请求操作系统服务时,由操作系统将控制转移到另一个任务 任务的切换取决于每个任务的 “自律性” 抢占式 可以安装一个 定时器中断,并在 中断服务程序中实施任务切换 每个任务都能获得
阅读全文
posted @
2024-08-28 22:21
Dylaris
阅读(32)
推荐(0) 编辑
chapter14------任务和特权级保护
摘要:任务的隔离 任务 程序时记录在载体上的指令和数据,其正在执行中的一个副本就叫做任务 简单来说,我们为了完成某项特定的工作,写了一个程序,然后这个程序有可以分成几个小程序,程序执行时,每个小程序也在内存中运行,那这个小程序就是一个任务了 任务的LDT LDT 叫做 局部描述符表,之所以叫局部是因为它是
阅读全文
posted @
2024-08-25 16:23
Dylaris
阅读(35)
推荐(0) 编辑
chapter13------程序的动态加载和执行
摘要:本章内存规划 内核的结构、功能和加载 内核的结构和功能 头部:记录各个段的汇编位置,这些统计数据用于告诉初始化代码如何加载内核 ;以下常量定义部分。内核的大部分内容都应当固定 core_code_seg_sel equ 0x38 ;内核代码段选择子 core_data_seg_sel equ 0x3
阅读全文
posted @
2024-08-18 20:24
Dylaris
阅读(14)
推荐(0) 编辑
chapter12------存储器的保护
摘要:进入32位保护模式 指令前缀的添加 在前面的章节中,我们介绍了指令前缀 0x66 表示反转默认的操作数大小 [bits 16] mov ds, ax ; 8E D8 [bits 32] mov ds, ax ; 66 8E D8 所以在上述这段代码中,32位下的代码生成的机器指令会带有 0x66 的
阅读全文
posted @
2024-08-15 17:06
Dylaris
阅读(22)
推荐(0) 编辑
chapter11------进入保护模式
摘要:全局描述符表(GDT) 这里要先说明下,保护模式下对内存段的访问是有限制的,简单来说就是你不能再随意的访问了,只能访问授权给你的,然后段的访问限制等等信息就记载在一个叫做全局描述表里 段描述符 段描述符存储了某个段的具体信息,就像我们每个人的档案一样,记录着我们的信息 然后段描述符占用 8个字节,以
阅读全文
posted @
2024-08-13 11:04
Dylaris
阅读(24)
推荐(0) 编辑
chapter10------32位x86处理器编程架构
摘要:处理器架构 处理器架构或者处理器编程架构,是指一整套的硬件架构以及与之相适应的工作状态 回顾8086处理器 8086处理器有20根地址线,可以寻址1MB内存,但处理器内部的寄存器只有16位,也就是数据线是16根,只能处理16位的数据 我们没法用16位的寄存器去访问1MB的内存,简单来说就是无法用16
阅读全文
posted @
2024-08-11 18:00
Dylaris
阅读(59)
推荐(0) 编辑
chapter9------中断
摘要:中断是什么 中断就是打断处理器当前的执行流程,去执行另外一些和当前工作不相干的指令,执行完之后,还可以返回到原来的程序流程继续执行 为什么会有中断机制 中断这种机制能够让处理器可以在不同任务之间快速切换,实现多任务处理的功能。试想一下没有中断机制,一次只能执行一个任务,那我就不能边听音乐边写博客了,
阅读全文
posted @
2024-08-09 22:36
Dylaris
阅读(22)
推荐(0) 编辑
chapter8------加载用户程序到内存
摘要:用户程序的结构 处理器的工作模式是将内存分成逻辑上的段,指令的获取和数据的访问一律按“段地址:偏移地址”的方式进行 一个规范的程序,应当包括代码段、数据段、附加段、栈段 段的划分和段与段之间的界限在程序加载到内存之前就已经准备好了 以下是一个用户程序代码组织结构 分析: 分段:SECTION 段名称
阅读全文
posted @
2024-08-08 11:47
Dylaris
阅读(39)
推荐(0) 编辑
chapter7------栈与寻址
摘要:栈段 和代码段、数据段一样,栈也被定义为一个内存段,叫做栈段,由段寄存器ss指向 定义栈段 初始化段寄存器ss >指向栈段的首地址 初始化栈指针sp >指向栈顶字节(以字为单位移动),初始化时指向栈段最后一个字节的下一字节,其实就等于分配给栈段的字节数 栈操作 push:压栈,sp的值减2 pop:
阅读全文
posted @
2024-08-03 20:51
Dylaris
阅读(11)
推荐(0) 编辑
chapter6------段间批量数据传送与循环
摘要:跳过非指令的数据区 一般来说,所有处理器指令都应当按顺序存放,在它们中间不允许夹杂非指令的普通数据,因为他们不能作为指令执行,所以要想办法让处理器执行不到这些非指令的内容,比如jmp指令等 在数据声明中使用字面值 char db 'L', 0x07 \ 'a', 0x07 编译阶段会将这些字面值转换
阅读全文
posted @
2024-08-03 17:38
Dylaris
阅读(13)
推荐(0) 编辑
chapter5------编写主引导扇区代码
摘要:主引导扇区 (Main Boot Sector, MBR) 什么是主引导扇区: 处理器加电或者复位之后(简单来说就是启动计算机),如果硬盘是首选的启动设备,那么ROM-BIOS(基本输入输出系统)将试图读取硬盘的0面0道1扇区(简单来说就是第一个扇区),这就是主引导扇区 主引导扇区的特点: 扇区数据
阅读全文
posted @
2024-08-02 11:43
Dylaris
阅读(77)
推荐(0) 编辑