
DIY操作系统
文章平均质量分 82
.
无名J0kзr
Talk is cheap, show me the code.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
DIY操作系统(6):特权级CPL、DPL与RPL
OS原创 2022-11-27 23:47:39 · 1784 阅读 · 0 评论 -
DIY操作系统(9):中断基础
文章目录外部中断内部中断中断描述符表基础外部中断外部硬件的中断是通过两根信号线通知CPU的,即INTR(INTeRrupt,可屏蔽中断)线和NMI(NonMaskableInterrupt,不可屏蔽中断)线二者的区别是:从INTR引脚收到的中断都是不影响系统运行的,而从NMI引脚收到的中断都是极其重大的。内部中断内部中断是指由软中断指令本身(如使用int 8位立即数进行系统调用)或在指令执行过程中引起的中断(如除0异常)。中断描述符表基础CPU收到中断信号后,需要具体地知道是哪一种情况导致的原创 2022-02-13 22:58:19 · 2055 阅读 · 0 评论 -
DIY操作系统(8):内核实现之屏幕打印
文章目录VGA寄存器打印单个字符数据类型总体流程put_charis_backspaceput_other处理LF与CRroll_screenset_cursorput_char_doneVGA寄存器寄存器子类分为Address Register和Data Register的原因:一个寄存器分组下会有多个寄存器,要想对其中的某一个寄存器进行操作,就使用Address Register的内容指出此寄存器在寄存器数组中的下标,将Data Register作为此寄存器的替身,对Data Register进行原创 2022-01-27 01:21:30 · 2105 阅读 · 0 评论 -
DIY操作系统(7):函数调用与混合编程
文章目录函数调用调用约定参数的传递中介cdecl调用约定汇编与C混合编程单独编译后链接内联汇编函数调用调用约定calling conventions,指调用函数时的一套约定,是被调用代码的接口。比如说,可能有以下几个方面:参数的传递中介:寄存器?栈?两者混合?参数的传递顺序:从左到右?从右到左?保存寄存器:调用者负责保存?被调用者负责保存?保存哪些寄存器?…参数的传递中介如果将参数通过寄存器传递,则会出现:若传参完成后、函数执行前,CPU被抢占,则参数会被覆盖,需要将其保存到内存。那么原创 2022-01-24 23:55:06 · 318 阅读 · 0 评论 -
DIY操作系统(5):内核装载过程
OS原创 2022-01-20 00:15:17 · 1146 阅读 · 0 评论 -
DIY操作系统(4):内存管理及分页机制
文章目录内存管理获取物理内存容量内存管理获取物理内存容量在Linux2.6内核中是使用detect_memory函数来获取内存容量的,其本质是在实模式下调用BIOS的0x15中断实现的,其下有三个子功能,由强到弱依次为:EAX = 0xE820:遍历主机上全部内存。AX = 0xE801:分别检测低15MB和16MB~4GB的内存。AH = 0x88:最多检测出64MB内存,超过也按64MB计。给出一个loader.S,由强到弱依次调用三种方法来获取物理内存容量 %include "原创 2022-01-18 00:41:29 · 387 阅读 · 0 评论 -
DIY操作系统(3):保护模式及kernel loader
文章目录保护模式与实模式比较全局描述符表GDT基于GDT的访存地址计算保护模式与实模式比较模式地址总线宽度最大寻址空间访存地址计算(非段)寄存器宽度段寄存器宽度实模式20b1M段地址*16+偏移16b16b保护模式32b4GB基于GDT32b16b全局描述符表GDT每一表项(即段描述符)占64B,分别描述各内存段的起始地址、大小、权限等信息,存放在内存中,其地址存放在GDTR寄存器(48b)中。低16b描述了GDT的大小,最大为2^16原创 2022-01-17 00:37:48 · 529 阅读 · 0 评论 -
DIY操作系统(2):MBR与实模式下的kernel loader
文章目录MBRkernel loader测试MBR示例代码mbr.S如下,先显示"1 MBR",再从硬盘上把kernel loader加载到内存,然后执行。%include "boot.inc"SECTION MBR vstart=0x7c00 mov ax,cs mov ds,ax mov es,ax mov ss,ax mov fs,ax mov sp,0x7c00 mov ax,0x原创 2022-01-16 22:41:53 · 517 阅读 · 0 评论 -
DIY操作系统(1):初识BIOS与MBR
文章目录参考BootSector系统启动过程bochs参考自己写操作系统—bootsector篇Boot Sector结构、系统启动过程简介操作系统的启动过程bochs 详细介绍BootSector是硬盘的第一个扇区(0柱面,0磁道,1扇区),共512B,由以下三项组成:MBR(主引导记录):占前446B。存放系统的主引导程序,它负责检查磁盘分区表DPT,寻找可引导分区并将其引导扇区DBR装入内存。DPT(磁盘分区表):占中间64B。记录了磁盘的基本分区信息,分区表内有四个记录,每个16原创 2022-01-14 00:34:56 · 954 阅读 · 0 评论