
linux0.11
文章平均质量分 93
皓空Fly
这个作者很懒,什么都没留下…
展开
-
从零编写linux0.11 - 第十一章 可执行文件
加载 elf 格式可执行文件,不支持过大的文件,不支持动态编译。原创 2023-02-18 01:51:07 · 1240 阅读 · 1 评论 -
从零编写linux0.11 - 第十章 文件系统(二)
完善文件系统,提供文件的增删改等功能。能够更改文件以及创建删除文件和文件夹。原创 2023-02-02 22:41:15 · 377 阅读 · 0 评论 -
从零编写linux0.11 - 第九章 文件系统(一)
简单地实现了 open,read,write,close等函数。原创 2023-01-28 20:27:47 · 996 阅读 · 0 评论 -
从零编写linux0.11 - 第八章 软盘操作
介绍在linux0.11中,如何初始化DMA,读写软盘扇区,对软盘出错的处理等操作。原创 2022-08-15 11:06:51 · 881 阅读 · 0 评论 -
从零编写linux0.11 - 第七章 完善终端
编程环境:Ubuntu Kylin 16.04、gcc-7.3.0代码仓库:https://gitee.com/AprilSloan/linux0.11-projectlinux0.11源码下载(不能直接编译,需进行修改)本章目标本章将会完善终端,实现输入功能,完善输出功能。知识点涉及到键盘和终端控制。1.数据结构介绍之前我们在用 printk 函数打印字符串时,printk 函数调用 tty_write,tty_write 调用 con_write 都是直接对字符串进行操作的。这种方式并没有什原创 2022-05-30 14:01:41 · 610 阅读 · 0 评论 -
从零编写linux0.11 - 第六章 任务管理
编程环境:Ubuntu Kylin 16.04、gcc-5.4.0代码仓库:https://gitee.com/AprilSloan/linux0.11-projectlinux0.11源码下载(不能直接编译,需进行修改)本章目标本章的目的是要创建任务,并调度到新任务中。这其中涉及到任务结构体的讲解,进程调度,内存分配,系统调用等一系列知识,是目前内容最为充实,最为丰富的一章。相信大家都会沉浸其中,无法自拔(手动滑稽)。1.第一个任务相信大家都学过操作系统的知识,对于任务的相关知识就不多说了,毕原创 2022-04-12 18:02:41 · 921 阅读 · 0 评论 -
从零编写linux0.11 - 第五章 中断与异常
编程环境:Ubuntu Kylin 16.04、gcc-5.4.0代码仓库:https://gitee.com/AprilSloan/linux0.11-projectlinux0.11源码下载(不能直接编译,需进行修改)本章目标本章会编写部分异常的处理函数以及初始化PIC(可编程中断控制器)。下图是中断异常向量分配表,本章会编写0-6、8-13、15、17-20号异常处理函数,根据有无错误代码,将异常分为两类,我们会先编写无错误代码的异常处理函数,再编写有错误代码的异常处理函数。7和16号异常向量原创 2022-04-03 20:00:34 · 1262 阅读 · 0 评论 -
从零编写linux0.11 - 第四章 部分系统初始化
编程环境:Ubuntu Kylin 16.04、gcc-5.4.0代码仓库:https://gitee.com/AprilSloan/linux0.11-projectlinux0.11源码下载(不能直接编译,需进行修改)本章目标完成系统的部分初始化操作:内存管理的初始化、缓冲管理初始化、时钟初始化和协处理器的检查。为以后管理系统资源做准备。1.内存管理的初始化在head.s中我们已经设置了页目录和页表,现在要对内存的使用做出进一步的规定。对于linux0.11内核,它默认最多支持16M物理内原创 2022-04-01 22:03:18 · 1152 阅读 · 0 评论 -
从零编写linux0.11 - 第三章 printk函数
编程环境:Ubuntu Kylin 16.04、gcc-5.4.0代码仓库:https://gitee.com/AprilSloan/linux0.11-projectlinux0.11源码下载(不能直接编译,需进行修改)本章目标编写printk函数,实现它的功能。printk函数的功能与printf相同,区别在于printk在内核态被使用,printf在用户态被使用。首先printk要把格式化字符串转换成普通字符串,如"%s"转换成它指向的字符串,把"%d"转换成数字字符串等等。接着要把字符串显原创 2022-03-31 11:36:13 · 1902 阅读 · 0 评论 -
从零编写linux0.11 - 第二章 内核初始化
编程环境:Ubuntu Kylin 16.04代码仓库:https://gitee.com/AprilSloan/linux0.11-projectlinux0.11源码下载(不能直接编译,需进行修改)1.添加内核进入内核后也不是马上进入main函数,上一章只是暂时设置gdt,此外还要设置idt和其他的一些初始化操作,这些内容也要使用汇编进行编写,此处采用AT&T格式的汇编。以下为head.s的内容,为了简单起见,内容还是一个死循环。.globl startup_32startup_3原创 2022-03-03 22:06:41 · 1051 阅读 · 0 评论 -
从零编写linux0.11 第一章 简单的bootloader
编程环境:Ubuntu Kylin 16.04代码仓库:https://gitee.com/AprilSloan/linux0.11-project工程结构:每一个目录对应于一章的内容,如chapter_01对应于第一章。每一章包含多个小节,如chapter_01/1st代表第一章第一节(简单的启动盘),所有的shell命令都默认当前目录为小节的目录。linux0.11源码下载(不能直接编译,需进行修改)原本linux0.11是用gas汇编编写bootloader,我认为大家对gas汇编不太熟悉,所原创 2022-02-24 15:48:13 · 1530 阅读 · 0 评论 -
从零编写linux0.11 - 序
序最初接触到自制操作系统的书是《30天自作操作系统》,因为这本书,我对如何制作操作系统有了基本的了解。 但这本书有些本末倒置了,重点的内存管理、进程管理、文件系统等方面介绍得太少,反而把大篇幅花在了gui和shell上。我看的第二本自制操作系统的书是《一个64位操作系统的设计与实现》,64位操作系统在不少地方与32位操作系统不同,比如进程切换的方式,不过在用C语言编程时对此没有多大感触 。这个操作系统的代码不够精简,不宜阅读,我并没有读完这本书。后来想看看实际的操作系统源代码,首选的肯定是lin原创 2022-02-24 15:10:05 · 503 阅读 · 1 评论