一、效果

这个操作系统取名为winux

主要实现了内存管理、线程、进程、文件系统、shell、进程间通信,是用来学习linux操作系统的不错选择,自从我做完这么一个系统再去看《linux内核设计的艺术》就没那么吃力

先放效果图:

二、开发过程的介绍

1、参考书籍

用到的编程语言主要是汇编和C。

强烈推荐李忠的《X86汇编语言 从实模式到保护模式》,不仅可以学到x86汇编,而且有助于了解操作系统的原理。

马朝晖《汇编语言程序设计》主要是可以从中学到AT&T汇编,还有很多开发的技巧比如gcc、gdb的使用、编译动态库、编译静态库等等

有了前面的铺垫,再跟着郑钢《操作系统真相还原》来做就相对容易多了,但是这本书前200页左右感觉很多废话,我刚开始看的时候都看不下去了,但是书的主体还是不错的,越到后面越精彩,我很多是参考书中的,但是是在理解的基础上写自己的代码,并没有完全按照书中的来,这就造成出现bug需要自己调试很久,但是这能加深对操作系统的理解,中间我都有四五次想放弃了,怀疑自己到底能不能做出来,这个过程需要点耐心和细心。

以上三本书的顺序也是我学习的路线。

另外还需要你懂点Makefile和Shell脚本的知识

Makefile:

推荐祝冬华的《跟我一起写Makefile》,

以及makefile从入门到项目编译实战_哔哩哔哩_bilibili

Shell脚本:

2020全新_Shell脚本从入门到精通教程 视频_哔哩哔哩_bilibili

2、开发平台

Vscode和bochs

三、gitee仓库介绍

仓库主要有如下两个文件夹:docs和src。

如下图所示,docs文件夹主要是整个开发过程的记录,还有很多测试结果的截图,从中可以看出我是如何一步步搭建一个操作系统的,这也是我后面复习的思路:

如下图所示,src文件夹主要是内核的源码以及bochs要用到的镜像文件:

最后,这是仓库的地址,欢迎指正

winux仓库地址

从0开始手写一个类似Linux的操作系统相关推荐

  1. 从 0 开始手写一个 Spring MVC 框架,向高手进阶

    转载自   从 0 开始手写一个 Spring MVC 框架,向高手进阶 Spring框架对于Java后端程序员来说再熟悉不过了,以前只知道它用的反射实现的,但了解之后才知道有很多巧妙的设计在里面.如 ...

  2. 从0开始手写一个 SpringMVC 框架,向高手进阶!

    Spring框架对于Java后端程序员来说再熟悉不过了,以前只知道它用的反射实现的,但了解之后才知道有很多巧妙的设计在里面.如果不看Spring的源码,你将会失去一次和大师学习的机会:它的代码规范,设 ...

  3. javascript从0到0.9手写一个windows计算器

    说实话,最初想用javascript模拟着windows的计算器写一个的时候,感觉也就是10分钟搞定,但写着写着发现,其实并不是那么容易的事,window的这个计算器逻辑挺多的. 而且还想给别人把这个 ...

  4. 一个connection对象可以创建一个或一个以上的statement对象_从 0 开始手写一个 Mybatis 框架,三步搞定...

    来自:开源中国,作者:我叫刘半仙 链接:https://my.oschina.net/liughDevelop/blog/1631006 MyBatis框架的核心功能其实不难,无非就是动态代理和jdb ...

  5. 从 0 开始手写一个 Mybatis 框架,三步搞定!

    最近研究了一下Mybatis,给大家磕叨磕叨,MyBatis框架的核心功能其实不难,无非就是动态代理和jdbc的操作,难的是写出来可扩展,高内聚,低耦合的规范的代码.本文完成的Mybatis功能比较简 ...

  6. zookeeper springboot_摊牌了!我要手写一个“Spring Boot”

    ❝ 目前的话,已经把 Spring MVC 相关常用的注解比如@GetMapping .@PostMapping .@PathVariable 写完了.我也已经将项目开源出来了,地址:https:// ...

  7. 摊牌了!我要手写一个“Spring Boot”

    目前的话,已经把 Spring MVC 相关常用的注解比如@GetMapping .@PostMapping .@PathVariable 写完了.我也已经将项目开源出来了,地址:https://gi ...

  8. Java 手写一个SQL分页

    Java手写一个类似PageHelper的分页SQL 目前分页插件众所周知的莫过于和mybatis完美融合的PageHelper了,简单两行代码就实现了sql分页,配合PageInfo类,将数据总数量 ...

  9. ES6 手写一个“辨色”小游戏

    1. 前言 依稀记得几年前朋友圈流行的辨色小游戏,找出颜色不同的矩形.前些天突发奇想,打算自己手写一个类似的游戏,话不多说,先上 Demo . --项目源码 本实例基于 ES6 实现,并兼容 ie9及 ...

最新文章

  1. FPGA之道(57)状态机的实现方式
  2. java string set_Java StringJoiner setEmptyValue()用法及代码示例
  3. 如何将JAR包发布到Maven中央仓库?
  4. linux shell 常用参数 $? $# 等等解析
  5. 下载Oracle_VM_VirtualBox_Extension_Pack-5.2.28.vbox-extpack
  6. unity可以直接转h5吗_瞎折腾:用Unity撸纯HTML5移动游戏/应用
  7. c语言变长数组参数,使用gdb跟踪C语言中变长数组的实现
  8. Feign出现The bean ‘seckill.FeignClientSpecification‘, defined in null, could not be registered. A be
  9. 超级经典的图书下载网站:梦远书城
  10. 用python告诉你,韦小宝跟他七个老婆哪个最亲?
  11. 通过Htpp访问svn内容
  12. 图形界面介绍Create Route Blockage
  13. 不搞仿真,能不能搞好智能?
  14. 用英语计算机房造句子,机房造句
  15. 高端物理学名词_什么是物理高端备课?
  16. 注册中心在蚂蚁集团的蜕变之路
  17. (一)图像文字检测论文:CTPN方法
  18. CVPR 2020 | 《Learning to Transfer Texture from Clothing Images to 3D Humans》 论文解读
  19. SDNUOJ 1614.阿哲的幻想国(练习vector的用法)
  20. Android下获取FPS的几种方法

热门文章

  1. linux读取一行数据命令,Shell脚本一次读取文件中一行的2种写法
  2. C#构造函数和析构函数
  3. python函数的传递方式有哪些_Python函数参数定义及传递方式解析
  4. 相似度度量:欧氏距离与余弦相似度(Similarity Measurement Euclidean Distance Cosine Similarity)...
  5. html5语音读取文字_不外传自媒体神器,文字转语音免费软件工具下载
  6. 在ROS中配置使用Robotiq 抓手(一)
  7. 有些女人,喜欢买临期的商品,比如临期牛奶、临期饼干。你怎么看?
  8. php算球面距离,球面两点之间的距离计算
  9. epic怎么添加本地游戏_免费的游戏它不香吗?Epic商店《正当防卫4》怎么说
  10. 攻防演练中攻击方是如何打开缺口的方法——总结