“ 我花了 5 年时间编写自己的操作系统!”

程序IT圈

共 2120字,需浏览 5分钟

 ·

2021-07-09 02:41

推荐关注↓

转自:CSDN

前几天,Hacker News 上有一则帖子登上了 TOP 榜,引起了不少人的关注:我花了 5 年时间编写自己的操作系统

“5年”、“自己的操作系统”,这两点显然是吸引人们点击查看的主要原因:帖主凭一己之力,用 5 年时间写出来的操作系统会是怎样的?

好奇心被勾起,于是便打开了这位帖主提供的 GitHub 地址(https://github.com/halfer53/winix)。刚看到这个操作系统的简述,许多人就感到意外了:帖主开发的 Winix 系统主要是受到了他在大学时所学习的 Minix1 操作系统的启发——起初 Linus Torvalds 也是在 Minix 操作平台上建立的 Linux。

据了解,这位帖主 @halfer53 是一位来自新西兰的开发者,而他在业余时间开发的 Winix 是用于 Waikato RISC 架构微处理器(WRAMP)的 UNIX 风格操作系统,也是一个兼顾可用性和性能的混合内核


功能及演示

Winix 虽然仅由 @halfer53 一人开发,但系统功能意外地还挺齐全:

  • 内核内存管理:虚拟内存、页面映射

  • 进程管理:内核线程、进程创建

  • 异常控制和中断处理程序

  • 支持大部分 POSIX api 的内存文件系统

  • 支持多个管道和重定向的 Bourne shell

  • 用户内存管理:malloc() free()

  • ucontext.h 支持的用户协程

  • Stacktrace (堆栈跟踪)转储,段错误分析

Winix 还支持许多命令(均已提供源码)

@halfer53 演示了前两个命令的运行结果:

(玩贪吃蛇)

(在 bash 中使用管道)


如何运行

关于该系统要如何运行,@halfer53 也给出了具体步骤:

1、下载最新的 Rexsimulator:https://github.com/halfer53/rexsimulator/releases(注意:mono 需要在 Linux 环境下运行)

2、下载最新的 WINIX 二进制文件 winix.srec:https://github.com/halfer53/winix/releases

3、运行 Rexsimulator.exe

4、点击 Quick Load,选择 winix.srec

然后就可以加载 Winix 了:


编译和调试

  • 如何编译

编译之前,首先要在 Linux / WSL 中通过 sudo apt-get install xutils-dev gcc 命令行进行安装。

克隆和编译:

git clone https://github.com/halfer53/winix.gitcd winixexport PATH=`pwd`/tools/bin:$PATHmake
  • 调试技巧

调试 Makefile:与 linux kbuild 相似,Winix 支持 verbose 选项,你可以通过将 verbose 设置为 1 来调试 Makefile。

make V=1

调试内核:kprintf() 将是你的朋友;在 bash 中输入 trace 以查找串口 2 中的所有系统调用。以下是 Winix 支持的系统调用:


网友:前途可期

@halfer53 开发的 Winix 也引起了众多网友的热议:

评论 1:Winix 以 RISC 架构为目标,那么随着 RISC-V 的飞速发展,偏向 RISC 的操作系统肯定会为平台提供优势和优势,就像 Linux 在 x86-32 和 x86-64 开始发展时所具备的优势一样。

评论 2:我在 90 年代初做了同样的事情,而我认为这是我迄今为止从中学到最多的项目。虽然我从未发布过它,因为我认为它的时代已经过去了,但它的确是一个有趣的练习。调试此类开发的早期阶段非常困难,尤其是当你在裸机上而不是在 VM 上进行调试时。

评论 3:哈哈,我喜欢你对这个项目的描述,听起来比我的更有希望。

参考链接:

  • https://github.com/halfer53/winix

  • https://news.ycombinator.com/item?id=27647079

- EOF -


长按进入小程序,进行打卡签到

小程序送书福利更新啦!

(更多精彩值得期待……)

最近热文:
我承认 IDEA 2021.3 有点强!
2021高校毕业生薪酬Top100出炉 !
谷歌:. apk 成为历史!
为什么有些大公司技术弱爆了?

2T技术资源大放送!包括但不限于:C/C++,Linux,Python,Java,人工智能,考研,软考,英语,等等。在公众号内回复「资源」,即可免费获取!回复「社群」,可以邀请你加入读者群!

❤️给个「在看」,是对我最大的支持❤️

浏览 36
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报