操作系统
文章平均质量分 70
JoengGaap
这个作者很懒,什么都没留下…
展开
-
第七章 中断
8259A是中断代理,当有多个中断同时发生时,由它负责对所有中断仲裁,决定哪个中断优先被CPU受理。Intel处理器共支持256个中断,但8259A只可以管理8个中断。为了多支持一些设备,可以将多个8259A组合(级联)。最多可级联9个,也就是最多支持64个中断。n片8259A通过级联可支持7n+1个中断源。为了让所有设备之间的通信井然有序,各通信设备间必须有统一的节奏,不能各干各的,这个节奏就称为定时或时钟。是一种使设备间相互配合而避免发生冲突的节拍。内部时钟:指处理处理器内部元件。原创 2023-05-19 20:23:55 · 971 阅读 · 0 评论 -
中断处理程序
在interrupt.c。在interrupt.c。原创 2023-05-18 20:38:35 · 299 阅读 · 0 评论 -
第六章 完善内核
参数的传递方式:使用后栈来保存。每个进程都有自己的栈,这就是每个内存自己的专用内存空间;保存参数的内存地址不用再花精力维护,已经有栈机制来维护地址变化了,参数在栈中的位置可以通过栈顶的偏移量来得到。C语言 由调用者压入栈,由调用者清理栈空间,函数参数是从右到左的顺序入栈。内联汇编:在C语言中直接嵌入汇编语言,内联汇编所用的汇编语言其语法是AT&T。AT&T是汇编语言的一种语法风格、格式。AT&T的内存寻址:机器模式用来在机器层面上指定数据的大小及格式。原创 2023-04-24 19:46:37 · 359 阅读 · 0 评论 -
实现字符打印(实验)
【代码】实现字符打印(实验)原创 2023-04-18 20:24:05 · 126 阅读 · 0 评论 -
第五章 保护模式进阶,向内核迈进
汇编语言和机器指令几乎是一对一的,即一名汇编代码只对应一句具体的机器码,不会有更多对应的选择,所以可以认为汇编指令就是机器指令。C语言的编译过程是先将C语言代码转换成汇编代码,然后再将汇编代码转换成机器指令。所以用C语言写出来的程序,最终可以转换成对应的一句或多句汇编指令。生成C语言程序的过程:先将源程序编译成目标文件,再将目标文件链接成二进制可执行文件。经过gcc编译后的目标文件是待重定位文件,文件中的符号还没有安排地址,需要等和其他文件一起“组成”可执行文件时再重新定位。原创 2023-04-12 19:04:01 · 440 阅读 · 0 评论 -
将内核载入内存(实验)
将内核从磁盘载入内存,并将其匹配到虚拟地址中,然后再通过入口地址跳转到内核中。原创 2023-04-10 20:44:13 · 167 阅读 · 0 评论 -
启用分页机制(实验)
在分页后,GDT的基址会变成3GB以上的虚拟地址,显存基址也变成3GB以上的虚拟地址。GDT的段基址变成了0x0000900,显存段描述符段基址变成了0xc00b800。注意这里count=3。查看虚拟地址映射情况。原创 2023-04-04 21:36:02 · 87 阅读 · 0 评论 -
内存容量检测(实验)
total_mem_bytes记录内存容量,而total_mem_bytes的地址是0xb00,xp用来查看物理内存。0x02000000换算成十进制刚好是32MB。输入命令xp 0xb00+回车,显示结果。原创 2023-03-24 19:22:26 · 233 阅读 · 0 评论 -
第四章 保护模式入门
在实模式下,用户可以访问底层,用户程序乃至操作系统的数据都可以被随意地删改。存在数据安全的问题。访问内存过小且麻烦,内存不够用,资源也不够用。在保护模式下,物理内存地址不能直接被程序访问,程序内部的地址(虚拟地址)需要被转化为物理地址后再去访问。指令执行单元EU是执行指令的唯一部件,一次只能执行一个指令,单核CPU的情况下,只有一个指令处于执行中。CPU中的各部分也是同时只能做一件事,不过在并行工作,各司其职。CPU的指令执行过程分为取指令、译码、执行三个步骤。原创 2023-03-23 19:26:25 · 766 阅读 · 0 评论 -
进入保护模式(实现)
主要新增段描述符的属性及选择子,都是以宏的方式实现。这个文件就是用来定义各种寄存器里的值的,立即数。原创 2023-03-22 19:10:19 · 165 阅读 · 0 评论 -
第三章的问题
重新使用之前的MBR 文件,重新读取512字节,然后再导入新的MBR 文件,同时更改了 boot.inc位置,包含此文件的文件夹应该和MBR 文件处于同一个文件夹中。在引入LOADER文件后输出结果仍然同上次所示,没有2LOADER 的显示,也就是说读取磁盘失败。Ctrl+c可以进行下一步指令的输入,输入q 可以正常退出不锁定虚拟硬盘。在导入新的MBR 文件后读取的字节只有98个字节。主要是因为没有正常退出,每次退出都是通过关闭终端强行退出。重新创建虚拟硬盘–无效。原创 2023-03-16 15:48:21 · 249 阅读 · 0 评论 -
第三章 完善MBR
地址只是数字,描述各种符号在源程序中的位置,它是源代码文件中各符号偏移文件开头的距离。编译器的工作就是给各符号编址。编译器根据所在硬件平台的特性,将源代码中的每一个符号(指令和数据)都按照本硬件平台的特性分配空间,在不考虑对齐的情况下,这些符号在空间上都彼此相邻,连续分布它们在程序中距第一个符号的距离便是它们在程序中的地址。偏移量的本质就是地址,每个变量的地址是前一个变量的地址+前一个变量的内存空间大小。代码编译之后,源代码中的标号会被替换为实际地址。原创 2023-03-15 21:23:39 · 508 阅读 · 0 评论 -
第二章 编写MBR主引导记录
BIOS最后一项工作校验启动盘中位于0盘0道1扇区(磁盘上最开始的那个扇区)的内容。如果此扇区末尾的两个字节分别是魔数0x55和0xaa,BIOS便认为此扇区中确实存在可执行的程序,便加载到物理地址0x7c00,随后跳转到此地址,继续执行。为什么是0盘0道1扇区的内容这是磁盘的第一个扇区,离BIOS近,好找为什么是物理地址0x7c00BIOS规范加载MBR的位置取决于操作系统本身所占内存大小和内存布局。原创 2023-02-23 16:33:50 · 634 阅读 · 0 评论 -
第1章 环境部署工作
最后得到的内容加到bochsrc之中。可以根据提示创建启动盘。原创 2023-02-22 15:13:44 · 74 阅读 · 0 评论 -
第0章 一些你可能正感到迷惑的问题
不同段访问到相同的内存平坦模型指的就是一个段,用一个段就能够访问到硬件所支持的所有内存,段的大小可以是地址总线能够到达的范围。软件中的工程是指开发一套软件所需的全部文件,包括配置环境。协议是一种大家共同遵守的规约,主要用来实现通信、共享、协作,给大家统一一种接口、一组数据调用或者分析的约定。由内存的低地址到高地址,小端与实际数值位置顺序相反,大端与实际数值位置顺序相同,因为实际是从高到低排列的。实际:0x12345678小端:0x78,0x65,0x34,0x12。原创 2023-02-17 16:40:55 · 426 阅读 · 0 评论