首页 Home.

  • 自制操作系统(4):libc完善——控制台逻辑完善更多的输出字体 在上一篇文章我们重构了kernel,创造了一个简陋的libc,并成功地把二者链接了起来。 下面我们来完善这个libc,首先从一些“所见即所得”的东西入手,今天最终的目标是用这个libc来输出一个露米娅的AA(ASCII ART)。 字体完善-从8*8到8*16 现在8*8的字体有点不够带劲,而且只支持几个简单的字体,我们让AI生成一个更大更完善的字体库,并稍微修改一下我们的终端输出逻辑,具体是,我们检测到当前要输出的是换行符的话,我们重置字符输出的列,并将输出的行+1.(你说这应该是\r\n而不是\n?我觉得像Unix那样简单点 […]

  • 自制操作系统(3):从Bare bone到Meaty skeleton(下) 在上一节,我们重新组织了文件架构,重构了一些代码,并引入了makefile来辅助构建,我们可以用更干净的架构去输出我们的Hello world了。 extern "C" void kernel_main(multiboot_info_t* mbi) { // 1. 初始化硬件 terminal_initialize(mbi); // 2. 定义颜色 uint32_t white = 0x00FFFFFF; uint32_t green = 0x0000FF00; // 3. 业务逻辑:打印字符 / […]

  • 自制操作系统(2):从Bare bone到Meaty skeleton(上) 在上一节,我们利用GRUB来实现了引导程序,并成功在屏幕上输出了Hello world。 虽然代码是用AI写的,但是我们已经把比较繁琐的编译环境配置这项搞定了!~可喜可贺。 可是瞅一眼我们的配置目录,我们会发现这里面堆放的文件很杂乱。 我们应该用某种规则来重新组织下我们的文件,虽然现在的文件不多,但是随着我们逐步完善操作系统,文件数量肯定会越来越多,因此我们要提前做好规划。我们不妨用下面的方式来组织我们的文件: 目标结构:Meaty Skeleton 的“四大支柱” 我们要将项目拆分为四个核心逻辑区域。这种结构模仿了 […]

  • 自制操作系统(1):内核Hello world 注:这篇文章并不完整,因为我一开始没打算记录制作的全过程,所以一开始并没有写这一章...后面会把它补充完整,请见谅。 全程参考:https://osdev.wiki/wiki/Multiboot1_Bare_Bones。 毫不避讳地说,Bare bone这里AI帮我写了绝大部分的代码,因为:1、这部分代码不多,而且绝大部分在后面会被替代;2、我没有进行过内核编程,我不想太过苛求自己,让自己一开始就困在各种报错和调试中,为自己带来太多的挫败感;3、我想先让自己能尽快“看到点什么”——反馈是很重要的! 开发环境 WSL2+VSCode 准备工作:交叉 […]

  • 自制操作系统(0):开始与结束的序言 这篇序言本应该是最开始就写好的,但实际上它是最后一篇写好的,所以叫”开始与结束的序言”。 阅读下面这一系列的文章,你会看到我在实现这个操作系统过程中的一些想法。理想化地想,我想展示的是好的东西,包括看到一个庞然大物是如何从无到有的,而且每一步都有所见即所得的反馈;但现实总不是那么理想,这里面当然也有不好的东西,包括一时的纠结、挣扎,以及无奈妥协… 需要注意的是,这一系列文章可能难称得上是什么教程。 硬要说,这些只是我的一些思绪的记录和学习的笔记——在此之前,我没有哪怕一行的内核编程经验。记录这一切的目的是:我想跟大家分享开发操作系统的乐趣。当然乐趣并不意味 […]

  • 博客历经半年沉寂再度复活!因服务器到期及备案波折,虽遭遇数据库丢失惨剧,终靠老备份与AI辅助完成重构。

  • 1. ``` root@C202511211157657:~# python3 segmentation.py -a 128 -p 512 -b 0 -l 20 -B 512 -L 20 -s 0 ARG seed 0 ARG address space size 128 ARG phys mem size 512 Segment register information: Segment 0 base (grows positive) : 0x00000000 (decimal 0) Segment 0 limit : 20 Segment 1 base (grows negative) : […]

  • 1. ``` root@C202511211157657:~# python3 relocation.py -s 1 ARG seed 1 ARG address space size 1k ARG phys mem size 16k Base-and-Bounds register information: Base : 0x0000363c (decimal 13884) Limit : 290 Virtual Address Trace VA 0: 0x0000030e (decimal: 782) --> PA or segmentation violation? VA 1: 0x00 […]

  • 1. ``` root@C202511211157657:~# tar xvzf HW-Lottery.tgz ./._lottery.py lottery.py ./._README-lottery README-lottery root@C202511211157657:~# python3 lottery.py ARG jlist ARG jobs 3 ARG maxlen 10 ARG maxticket 100 ARG quantum 1 ARG seed 0 Here is the job list, with the run time of each job: Job 0 ( l […]

  • Select Homework for Chapter 8 of 《Operating Systems: Three Easy Pieces》: MLFQ Scheduling 1 ``` root@C202511211157657:~# python3 mlfq.py -j 2 -M 0 -m 4 -n 2 -q 1 Here is the list of inputs: OPTIONS jobs 2 OPTIONS queues 2 OPTIONS allotments for queue 1 is 1 OPTIONS quantum length for queue 1 is 1 OPT […]