30天自制操作系统
文章平均质量分 73
不吃人的坤坤坤坤坤
这个作者很懒,什么都没留下…
展开
-
《30天自制操作系统》笔记----Day19
DAY19:应用程序type命令对FAT的支持代码整理第一个应用程序二级目录三级目录type命令类似Linux里的cat命令,输入“type 文件名”就会显示出文件的内容struct FILEINFO{ unsigned char name[8], ext[3], type; char reserve[10]; unsigned short time, date, clustno; unsigned int size; }clustno这个成员,代表文件从磁盘上的哪个扇区开始存放原创 2022-02-25 16:27:31 · 217 阅读 · 0 评论 -
《30天自制操作系统》笔记----Day18
DAY18:dir命令控制光标闪烁对回车键支持窗口滚动支持命令行mem命令cls命令dir命令控制光标闪烁任务A和console_task光标闪烁原理相差不大,所以分析一个就可以类推另一个。首先通过tab键来切换窗口,所以在for循环中加入以下代码:if (256 <= i && i <= 511) { /*键盘数据*/ (中略) if (i == 256 + 0x0f) { /* Tab键*/ if (key_to == 0) { ke原创 2022-02-24 11:56:05 · 283 阅读 · 0 评论 -
《30天自制操作系统》笔记----Day17
DAY17:命令行窗口闲置任务创建命令行窗口切换输入窗口实现字符输入符号的输入大写字母与小写字母对各种锁定键的支持二级目录三级目录闲置任务在前文说到,通过采用LEVEL的结构运行系统,但当高层任务A休眠,而下层LEVEL中不存在其他的任务,因此程序就找不到任务而导致运行出行异常,所以优秀的操作系统应该能自动在适当的LEVEL运行适当的任务。创建一个闲置任务:这个任务的功能只是执行HTL。void task_idle(void){ for(;;){ io_hlt(); }}所原创 2022-02-23 12:29:14 · 233 阅读 · 0 评论 -
《30天自制操作系统》笔记----Day16
DAY16:多任务(2)任务管理自动化让任务休眠增加窗口数量设定任务优先级二级目录三级目录任务管理自动化之前才有的多任务处理方法有很大的弊端,如果我们想要运行三个任务的话,就必须改写mt_taskswitch的代码。改写程序:#define MAX_TASKS 1000 /*最大任务数量*/#define TASK_GDT0 3 /*定义从GDT的几号开始分配给TSS */struct TSS32 { int backlink, esp0, ss0, esp1, ss1, esp2, ss原创 2022-02-21 20:54:44 · 275 阅读 · 0 评论 -
《30天自制操作系统》笔记----Day15
DAY15:多任务(1)挑战任务切换CPU处理多任务的原理:寄存器中的内容写入内存:任务切换进阶做个简单的多任务运行速度改进提高运行速度测试运行速度多任务进阶挑战任务切换CPU处理多任务的原理:当向CPU发出任务切换指令时,CPU会先把寄存器的值全部写入内存中,为了运行下一个程序,CPU会把所有寄存器中的值从内存中读出来,这样就完成了一次切换。而任务切换所需要的时间,就是对内存进行写入和读取操作所消耗的时间。寄存器中的内容写入内存:补充“任务状态段”(task status segment) ,简原创 2022-02-20 20:09:04 · 359 阅读 · 0 评论 -
《30天自制操作系统》笔记----Day13
DAY13:定时器(2)简化字符串显示重新调整FIFO缓冲区加快中断处理使用“哨兵”简化程序二级目录三级目录简化字符串显示首先简化之前程序(即完成涂上背景色,再在上面写字符,然后刷新的功能),封装成一个函数(putfonts8_asc_sht()):/*变量说明:x,y ------显示位置的坐标c ------字符的颜色b ------背景的颜色s ------字符串l ------字符串长度*/void putfonts8_asc_sht(struct SHEET *原创 2022-02-14 11:59:28 · 225 阅读 · 0 评论 -
《30天自制操作系统》笔记----Day12
DAY12:定时器(1)使用定时器计量时间超时功能使用多个定时器加快中断处理二级目录三级目录使用定时器CPU通过参考机器周期(牢记每一条指令的执行时间。)来计量时间。在电脑钟管理定时器,只需对PIT(Programmable Interval Timer)进行设定.(PIT与IRQ的0号相连)计量时间超时功能使用多个定时器加快中断处理二级目录三级目录...原创 2022-02-13 12:38:41 · 434 阅读 · 0 评论 -
《30天自制操作系统》笔记----Day8
DAY8:鼠标控制与32位模式切换1.鼠标解读2.移动鼠标指针3.移动鼠标指针1.鼠标解读2.移动鼠标指针3.移动鼠标指针原创 2022-02-04 18:08:49 · 912 阅读 · 0 评论 -
《30天自制操作系统》笔记 ---Day7
DAY7:FIFO与鼠标控制这里写目录标题获取按键编码加快中断处理制作FIFO缓冲区改善FIFO缓冲区整理FIFO缓冲区总算讲到鼠标了从鼠标接收数据获取按键编码加快中断处理制作FIFO缓冲区改善FIFO缓冲区整理FIFO缓冲区总算讲到鼠标了从鼠标接收数据...原创 2022-01-29 20:15:18 · 721 阅读 · 0 评论 -
《30天自制操作系统》笔记----Day6
DAY6:1.分割源文件:在 这个结构体里base又分为low(2字节),mid(1字节),high(1字节) 3段,合起来刚好是32位. 段上限。它表示一个段有多少个字节。可是这里有一个问题,段上限最大是4GB,也就是一个32位的数值,如果直接放进去,这 个数值本身就要占用4个字节,再加上基址(base),一共就要8个字 节,这就把整个结构体占满了。这样一来,就没有地方保存段的管理属 性信息了,这可不行。因此段上限只能使用20位。这样一来,段上限最大也只能指定到1MB为止。明明有4GB,却只能用其中的原创 2022-01-28 11:55:25 · 3133 阅读 · 0 评论