操作系统
文章平均质量分 94
30天自制操作系统学习分享
矮油0_o
跆拳道,柔道业余练习生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
30天开发操作系统 第28天 -- 文件操作
alloca的编写原创 2025-05-11 10:16:12 · 717 阅读 · 0 评论 -
30天开发操作系统 第27天 -- LDT与库
大家早上好,我们今天的第一个任务就是修复昨天晚上的那个bug。是个什么bug来着?就是用nsct命令运行的应用程序,无论是按Shift+F1还是点击窗口的“x”按钮都没有反应的那个bug啦。我们得先来找到出问题的原因,然后才能采取对策。从昨天晚上到今天早上一直在思考这个问题,想来想去暂时能得到的结论是,昨天编写的内容貌似没有什么问题,因此这个bug可能之前就已经存在了,只是我们没有发现而已。原创 2025-05-05 22:59:21 · 961 阅读 · 1 评论 -
30天开发操作系统 第26天 -- 为窗口移动提速
昨天我们增加了可同时启动的应用程序的数量,窗口也跟着变多了,整个画面变得热闹起来。话说,在对比color.hrb和color2.hrb的时候我们需要移动窗口,那个时候笔者感到窗口移动的速度很慢。在真机环境下的速度还算可以接受,但在QEMU下就慢得离谱,让人心烦。虽说在真机环境下速度不慢就可以了,但如果速度能再快点总归是件好事。因此,提高窗口移动的速度就成了我们今天的第一个课题。原创 2025-04-20 20:12:20 · 829 阅读 · 0 评论 -
30天开发操作系统 第25天 -- 增加命令行窗口
增加更多的颜色(1)(harib22b)增加更多的颜色(2)(harib22c窗口初始位置(harib22d)增加命令行窗口(1)(harib22e)增加命令行窗口(2)(harib22f)增加命令行窗口(3)(harib22g)增加命令行窗口(4)(harib22h)变得更像真正的操作系统(1)(harib22i)变得更像真正的操作系统(2)(harib22i)原创 2025-03-02 19:57:29 · 809 阅读 · 0 评论 -
30天开发操作系统 第24天 -- 窗口操作
窗口切换(1)窗口切换(2)移动窗口用鼠标关闭窗口将输人切换到应用程序窗口用鼠标切换输入窗口定时器API取消定时器原创 2025-02-27 23:45:09 · 736 阅读 · 0 评论 -
30天开发操作系统 第23天 -- 图形处理
如果apimalloc只是调用操作系统中的memman_alloc, 并将分配到的内存空间地址返回给应用程序的话,是行不通的,因为通过memman_alloc所获得的内存空间并不位于应用程序的数据段范围内,应用程序是无法进行读写操作的。如果 应用程序在不知情的情况下执行了读写操作,将会产生异常并强制结束。 图形处理 :画图原创 2025-02-23 16:54:47 · 765 阅读 · 0 评论 -
30天开发操作系统 第22天 -- 用C语言编写应用程序
保护操作系统,显示窗口与绘图原创 2025-02-20 23:35:00 · 684 阅读 · 0 评论 -
30天开发操作系统 第 21 天 --保护操作系统
保护操作系统:先总结一下昨天最后遇到的情况: hello.hrb运行正常,但hello2.hrb却出现异常。为什么会这样呢? 想了一下, 应该是内存段惹的祸。 显示单个字符时, 我们用[CS:EC]的方式特意指定了CS(代码段寄存器),因此可以成功读取msg的内容。但在显示字符串时,由于无法指定段地址,程序误以为是DS而从完全错误的内存地址中读取了内容,碰巧读出的内容是0,于是就什么都没有显示出来。因此,我们需要在API中做个改动,使其能够将应用程序传递的地址解释为代码段内的地址。原创 2025-02-15 12:36:17 · 1068 阅读 · 0 评论 -
30天开发操作系统 第 20 天 -- API
昨天我们已经实现了应用程序的运行, 今天我们来实现由应用程序对操作系统功能的调用(即API, 也叫系统调用)。 为什么这样的功能称为“系统调用”(system call)呢?因为它是由应用程序来调用(操作)系统中的功能来完成某种操作, 这个名字很直白吧。 “API” 这个名字就稍微复杂些,是“application program interface" 的缩写, 即“应用程序(与系统之间的)接口”的意思。原创 2025-02-12 22:20:01 · 1868 阅读 · 0 评论 -
30天开发操作系统 第 19 天 -- 应用程序
type命令制作,FAT的支持,制作系统的应用程序原创 2025-02-09 22:47:17 · 1219 阅读 · 0 评论 -
30天开发操作系统 第 18 天 -- dir 命令
控制光标闪烁 mem cls dir命令的制作原创 2025-01-25 12:44:50 · 928 阅读 · 0 评论 -
30天开发操作系统 第 17 天 -- 命令行窗口
所谓命令行窗口,就是大家在运行 “make run” 的时候所使用的那个黑底白字的,在里面输入文件名就可以运行程序的东西。接下来我们就做一个试试看。 “这玩意儿能算是命令行窗口吗?”我们一开始做出来的东西很可能带来这样的疑问,不过 没关系,我们会让它逐步发展壮大,最终实现可以启动应用程序的功能。你看,是不是越来越像个操作系统的样子了呢?大家一定迫不及待了吧。我们并不打算将命令行窗口作为任务A的一部分,而是单独做成一个新的任务。这样一来,就像任务B0-B2-样,我们可以很容易地创建多个命令行窗口。原创 2025-01-22 21:43:49 · 1537 阅读 · 0 评论 -
30天开发操作系统 第 16 天 -- 多任务 v2.0
昨天我们已经实践了很多关于多任务的内容,不过今天我们还得继续讲多任务。可 “老是讲多任务都听腻了啊!”,但多任务真的非常重要(当然,如果你不想做一个多任务的操作系统 那就不重要啦)。从咱们制作的操作系统角度来说, 希望大家能够在充分做好多任务机制的基础上,再利用多任务逐步完善操作系统本身。因此,大家再稍微忍耐一下吧。 在昨天,我们已经实现了真正的多任务,不过这样还不够完善,或者说不太好用。如果我们想要运行三个任务的话,就必须改写mt_taskswitch的代码。这样的设计实在太逊了,如果能像当初定时器和窗口原创 2025-01-20 22:26:34 · 1167 阅读 · 0 评论 -
30天开发操作系统 第 15 天 --多任务 v1.0
多任务这个东西还真是奇妙,它究竟是怎样做到让多个程序同时运行的呢?如果我们的电脑里面装了好多个CPU的话,同时运行多个程序倒也顺理成章,但实 际上就算我们只有一个CPU,照样可以实现多任务。 其实说穿了,这些程序根本没有在同时运行,只不过看上去好像是在同时运行一样:程序A 运行一会儿,接下来程序B运行一会儿,再接下来轮到程序C,然后再回到程序A....·如此反复。原创 2025-01-17 22:42:07 · 1277 阅读 · 0 评论 -
30天开发操作系统 第 14 天 -- 高分辨率及键盘输入
那么我们赶快把操作系统我们的做得更像一个真正的操作系统吧。 大家现在可以接触多任务了。可是按计划,我们是从第15天开始才学# 可多任务的,所以今天还是暂时不学习多任务吧。 所以今天打算学点儿别的。 学点儿什么呢?好吧, 就学提高画面分辨率吧。 嗯, 从开发操作系统的角度来看, 现在这样的320x200的画面也没什么问题, 可毕竟还是大画面好。 打印键盘输入原创 2025-01-15 20:27:52 · 947 阅读 · 0 评论 -
30天开发操作系统 第 13 天 -- 定时器 v2.0
我们之所以如此专注于定时器的改良,理由很简单,是因为在今后的开发中会经常使用定时器。经常使用的东西当然要做好。同理,我们也努力地改进了图层控制程序。测试性能的方法很简单:先对HariMain略加修改,恢复变量count,然后完全不显示计数,全力执行“count++;”语句。当到了10秒后超时的时候,再显示这个count值。程序所做的只有这么多。原创 2025-01-10 23:56:55 · 1300 阅读 · 0 评论 -
30天开发操作系统 第 12 天 -- 定时器 v1.0
要在电脑中管理定时器,只需对PIT进行设定就可以了。PIT是“ProgrammableInterval Timer的缩写,翻译过来就是“可编程的间隔型定时器”。我们可以通过设定PIT,让定时器每隔多少秒就产生一次中断。因为在电脑中PIT连接着IRQ(imteruptrequest,参考第6天)的0号,所以只要设定了PIT就可以设定IRQ0的中断间隔。……在旧机种上PIT是作为一个独立的芯片安装在主板上的,原创 2025-01-07 23:54:31 · 2990 阅读 · 0 评论 -
30天开发操作系统 第 11 天 -- 制作窗口
我们现在做出来的图层构架,已经完全可以完成窗口的叠加处理了,所以下面我们就来尝试一下制作窗口吧。其实方法很简单,就像前面制作背景和鼠标那样,只要先准备一张图层,然后在图层缓冲区内描绘一个貌似窗口的图就可以了。原创 2025-01-02 23:08:52 · 1357 阅读 · 0 评论 -
30天开发操作系统 第 10 天 -- 叠加处理
为了以后使用起来更加方便,我们还是把这些内存管理函数再整理一下。memman_alloc和memman_fee能够以1字节为单位进行内存管理,这种方式虽然不错,但是有一点不足--在反复进行内存分配和内存释放之后,内存中就会出现很多不连续的小段未使用空间,这样就会把man->fees消耗殆尽。因此,我们要编写一些总是以0x1000字节为单位进行内存分配和释放的函数,它们会把指定的内存大小按0x1000字节为单位向上舍入(roundup),而之所以要以0x1000字节为单位,是因为觉得这个数比较规整。原创 2024-12-31 23:42:36 · 1625 阅读 · 0 评论 -
30天开发操作系统 第 9 天 -- 内存管理
今天叙述很多,让大家理解一些内存及编译器的运行机制。内容不是很难,让我们开始吧!原创 2024-12-29 10:28:11 · 1601 阅读 · 0 评论 -
30天开发操作系统 第 8 天 -- 鼠标控制与切换32模式
好,现在我们已经能从鼠标取得数据了。紧接着的问题是要解读这些数据,调查鼠标是怎么移动的,然后结合鼠标的动作,让鼠标指针相应地动起来。这说起来简单,但做起来呢......事实上编起程序来,也不是很难。(笑) 我们要先来对bootpack.c的HariMain函数进行一些修改。原创 2024-12-23 00:02:35 · 995 阅读 · 0 评论 -
30天开发操作系统 第 7 天 -- 鼠标控制
今天我们继续加油吧。鼠标不动的原因已经大体弄清楚了,主要是由于设定不到位。但是, 在解决鼠标问题之前,还是先利用键盘多练练手,这样更易于鼠标问题的理解。 现在,只要在键盘上按一个键,就会在屏幕上显示出信息,其他的我们什么都做不了。我们将程序改善一下,让程序在按下一个键后不结束 ,而是把所按键的编码在画面上显示出来,这样就可以切实完成中断处理程序了。原创 2024-12-19 22:37:11 · 874 阅读 · 0 评论 -
30天开发操作系统 第 6 天 -- 中断处理
中断处理原创 2024-12-15 20:02:01 · 1193 阅读 · 0 评论 -
30天开发操作系统 第 5 天 -- 文字显示与IDT/GDT初始化
操作系统文字显示与IDT/GDT初始化原创 2024-12-11 21:35:33 · 910 阅读 · 0 评论 -
30天开发操作系统 第 4 天 -- C语言与画面显示
C语言与画面显示原创 2024-12-08 22:59:30 · 980 阅读 · 0 评论 -
30天开发操作系统 第 3 天 -- 进入32位模式并导入C语言
制作真正的 IPL原创 2024-12-04 00:11:42 · 878 阅读 · 0 评论 -
30天开发操作系统 第 2 天 --汇编语言学习及Makefile入门
昨天我们还没有详细地讲helloos.nas中的注释部分,其中要掌握程序核心之前的内容和启动区以外的内容,需要具备软盘方面的一些具体知识,而这我们之后还会讲到,所以这些先保留哦。这样一来,还没有讲清楚的就剩程序核心部分了,我们把它改成更简单易懂的形式,先把projects/02_day中的helloos3复制到tolset中,然后打开其中的helloos.nas文件。原创 2024-11-27 22:04:50 · 828 阅读 · 0 评论 -
30天开发操作系统 第 1 天 -- 汇编程序入门
今天就到这里吧!大家记得自己去查查程序中的术语 – TAB = 4 ,FAT12格式,启动区,IPL,启动(boot)有疑问大家留言讨论哦,今天的代码都在文章开头的下载中啦!原创 2024-11-21 00:04:48 · 892 阅读 · 1 评论 -
楔子 -- 30天开发操作系统 第 0 天
操作系统这东西还真不太好定义,没有一个完全标准的答案。有的操作系统功能很多,有的却很少。并且现在的操作系统类型非常多。要是非要知道,《深入理解Android内核设计思想》是这么说的:计算机操作系统是负责管理系统硬件,并为上层应用提供稳定编程接口和人机交互界面的软件集合。大家会说你怎么从Android书里搞来个定义呢?只是因为手头有这本书,就拿来告诉大家了。让我自己说我肯定是不知道啥叫操作系统,因为在学校里学的那本《操作系统》也没有学明白…原创 2024-11-17 20:40:16 · 967 阅读 · 0 评论
分享