自制unix
文章平均质量分 87
自制的操作系统,许可证为GPL3,开源地址 https://github.com/pengruiyang-cpu/cunix.git
锟斤拷有点烫
段错误(核心已转储)
展开
-
空指针 - segmentation fault: 栈中的临时变量
所谓 空指针,其实就是指内存地址0。这个地址操作系统保留,是不能够被访问的。所以,尝试访问一个空指针,程序就会崩溃。而大家熟悉的 segmentation fault (段错误,段异常),就是因为访问一个不存在的地址 (或尝试访问操作系统的地址)。程序就会崩溃,不是说程序运行不下去了。我们常见的Intel x86系列处理器在遇到这类错误时候回产生一个中断,而操作系统收到这个中断以后,就知道,现在运行的程序出现了错误,把他kill (杀死,结束)掉吧。Windows系列系统在遇到这类问题,会显示如下图的原创 2021-04-09 23:34:16 · 473 阅读 · 0 评论 -
32位有符号整形的溢出
最近,笔者当然还是在努力写系统,并且在笔者的“滋润”下,我们的cunix系统已经有一个操作系统的样子了。大家可以看看https://github.com/pengruiyang-cpu/cunix.git,gitee上也有,https://gitee.com/pengruiyang-cpu/cunix.git,有兴趣的当然可以向上面提交代码啦,作为开源与GPL的狂热热爱者,笔者当然欢迎。今天我们要聊的这个“诡异的数值”,几乎就是一本活生生的教科书,是笔者在编写cunix的文件系统时出现的一个问题。代码笔者原创 2021-03-27 23:15:27 · 975 阅读 · 0 评论 -
我的OS | 一个文件系统的设计与实现
今天,笔者要设计一个类似ext2的文件系统CFS (cunix file-system),在https://github.com/pengruiyang-cpu/rlib上的cfs.c和cfs.h。设计不管啥样的文件系统,他都是由这几个部分组成的:启动区超级块根目录数据区(NTFS, FAT系列文件系统将超级块放到了启动区内)所以,咱们就一个个的分析,一个个设计吧。启动区 + 超级块CFS的启动区就放在超级块的前512个字节里头,里面只放了代码,文件系统的全部信息都存储在超级块409原创 2021-01-17 21:40:33 · 556 阅读 · 0 评论 -
我的OS | 分段和分页
今天这篇文章很长,但是如果静心读下来,一定会有所收获的。最近,笔者一直在忙着编写切换到保护模式的代码,但由于能力不足,一直没有编写出来。在上一篇文章中有这么一句:; 设置bits31为0...原创 2020-07-19 13:55:33 · 342 阅读 · 0 评论 -
我的OS | 为切换到C语言做准备
注意啊,没看下面的文章的要先看看下面的,再看这一篇啊。我们刚才成功从启动层跳转到了内核程序,现在就应该从内核程序执行C语言了。但是,由于现在的CPU处于实模式中,而我们计划使用保护模式,...原创 2020-05-30 21:27:11 · 954 阅读 · 0 评论 -
我的OS | 不要欺负BIOS,好吗
我们在第二篇文章中讲了如何制作一个启动层,但是,人家BIOS只读取一个扇区,我们也不能只做一个扇区啊?上次我们生成的文件是一个.img格式的文件,这是一个磁盘映像文件,磁盘映像文件是一个...原创 2020-05-30 21:27:11 · 278 阅读 · 0 评论 -
我的OS | 从启动层加载内核程序
上一篇文章我们制作了一个启动层,它可以在屏幕上输出一条信息。但是,由于一个扇区只有512字节,而一个操作系统少说也有1MB左右,所以,我们需要从磁盘读取内核程序到内存,然后用汇编jmp指...原创 2020-05-30 21:27:11 · 447 阅读 · 0 评论 -
我的OS | 地图和航灯
看到这个标题,大家可能会很奇怪“地图是什么高科技啊?”其实地图和航灯的意思是大家可以根据这篇文章来知道自己到底要干什么,不要干到一半之后忘记了自己到底要干什么了。我们叫这个操作系统叫做M...原创 2020-05-30 21:27:11 · 322 阅读 · 2 评论 -
我的OS | 确认操作系统的执行状态
为了方便管理,“我的OS”源代码已经上传到GitHub。网址:https://github.com/pengruiyang-cpu/My-OS/昨天,我们成功制作了一个启动层。但是,这玩...原创 2020-05-22 17:38:47 · 1633 阅读 · 0 评论 -
我的OS | 了解基础知识
相信很多人都有一个自己制作操作系统的梦想吧。我们在文章如何制作没用的电脑操作系统中介绍了制作一个只能显示字符的“操作系统”,今天往后,我们要学习用汇编 + C语言制作一个简单的操作系统。...原创 2020-05-21 14:15:20 · 591 阅读 · 0 评论