# diy操作系统 **Repository Path**: yanjingtu/diy-operating-system ## Basic Information - **Project Name**: diy操作系统 - **Description**: 一个简单的x86操作系统,运行在qemu模拟器上,基本实现boot,系统初始化,进程管理,中断处理,内存管理,互斥锁及信号量,设备管理模块(简单实现了终端),文件管理模块(采用虚拟磁盘文件,基于fat16文件系统) 备注:代码基本来自:https://study.163.com/course/courseMain.htm?courseId=1212765805&share=1&shareId=14 - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2023-10-25 - **Last Updated**: 2023-10-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # diy操作系统 #### 介绍 一个简单的操作系统,运行在qemu模拟器上,采用vscode开发,基于Linux早期版本linux0.11,linux0.12开发 #### 软件架构 **基本模块** - boot自举:加载os程序,开启32位寻址等 - 系统初始化:初始化软硬件:诸如cpu,irq,定时器,log日志,内存管理及映射,文件系统等 - 进程管理:采用原始tss进行进程切换,同样也实现了栈切换功能(详见相关内容的注释代码),基于链表实现进程的切换 - 中断处理:设置IDT表,注册终端处理程序, - 实现常见的系统调用接口:如exec,read,open,write等 - 内存管理:建立内存位图,打开分页机制,实现虚拟内存等 - 互斥锁及信号量:实现互斥锁及信号量(基于开关中断) - 设备管理模块:dev设备(整合显存(显示器)及键盘为tty设备)(简单实现了终端) - 文件管理模块:采用虚拟磁盘文件,基于fat16文件系统,目前只能读取根目录 **导入了newlib便于开发** 2023年1月份 添加计算器及整合了C4C语言(剪裁版的C语言)解释器(但是解释器中调用print函数无法正确传参数,手头没有newlib库底层源码及个人能力尚不够解决此问题,函数的输出只能通过return语句最后返回,同样也无法包含头文件) **** **更多资料**: - https://pan.baidu.com/s/14HUFQpS7F2iKs11EETUoyA - https://www.yuque.com/lishutong-docs/diyx86os - 以上链接中包括源码及相应运行所需软件,及更多设计 - 以上内容非本人所有 - 若由于以上网站不可访问等原因导致资料下载失败,请联系我 3094655619@qq.com - 若需md笔记图片请联系我,个人笔记,由于图片太多暂未上传 **备注**:代码基本来自:https://study.163.com/course/courseMain.htm?courseId=1212765805&share=1&shareId=14 - https://gitee.com/lishutong-01ketang/diy-x86os #### 安装教程 - **软件运行需要qemu及cmake及gcc-elf编译工具,建议采用vscode进行开发** - **安装教程**:https://www.bilibili.com/video/BV1jV4y1H7Gj/?p=1 **备注**:视频p3-p6 #### 使用说明 1. 运行调试打开程序,可在配置文件中进行调整 1. 启动文件在/start/start中,记得删除/start/start/build目录,在本机上重新编译后再运行 1. window下记得已管理员权限运行,才有写虚拟磁盘的权限 1. 需要再image文件下加入disk1.vhd及disk2.vhd文件 #### #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)