2020元旦献礼——从零开始开发一个操作系统

2024-01-20 22:48

本文主要是介绍2020元旦献礼——从零开始开发一个操作系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

序言

在2019年的最后一天终于完成了整个系统的开发,并给它起名曰——Inios 。就如同文章名字一样,完全是从内核编写,非二次开发,从最初的“hello os”到初次有了系统的样子。主要用C语言编写,部分汇编语言。。整个操作系统完成后的大小为39.6 KB之所以这么小其实主要是语言的原因,另一个重要原因是在开发中对部分系统代码和字体库以及媒体的压缩。中间进行多次迭代,最终完成整个操作系统的开发Inios。

系统预览

开发环境及主要工具

  • win 8.1 x64 :用来开发Inios的“载体”
  • qemu 虚拟机:测试Inios
  • wxmedit:16进制编辑器
  • nsak:汇编器
  • Notepad++:代码编辑器
  • Git:除了提交代码外,还用来生成特殊文件

系统功能

命令行终端
  • mem: 显示内存的使用情况
  • cls: 清空控制台内容
  • dir: 列出目录
  • type:查看文件内容
  • hlt:运行.hrb可执行程序
  • shift+F1:强制关闭程序
  • enter:关闭当前应用程序窗口
  • F11:将最下面的窗口置顶
  • Tab:切换窗口
  • 鼠标点击:切换窗口/移动窗口
  • shift+F2:打开终端/打开另一个终端窗口(支持多个)
  • exit:关闭当前终端窗口
  • ncst xx:一个终端可以运行多个程序
保护系统

主要做了“内存访问权限 ”、“异常”和“应用程序存入DS操作系统用的段地址”。

多任务

常用的多任务,如果一个系统只能运行一个程序的话,其实是缺少灵魂的。

文字显示

在原来的基础上,实现了中文显示,用到HZK16.fnt编码库。虽然字体库较大,但是经过压缩后,还是小了一半。

鼠标、键盘控制

一个操作系统常用的功能,需要说明的一点的是,在进行鼠标控制时,用现在的鼠标控制并不好用,可能是更改了协议,不过值得庆幸的是,用笔记本的触摸板进行测试,效果还是不错的。

窗口应用程序

可视化窗口程序支持。

媒体播放

这里的媒体主要是指“音频”,说是音频,其实不如说“蜂鸣器”演奏的好,因为我们的音乐都是用“蜂鸣器”来发声的。

压缩

采用的是作者自己做的压缩工具,前后权衡,既可以保证压缩率,也可保证解压速度——tek压缩。

图片预览

支持jpgbmp格式图片预览。

初始开发文档

起初是想这每天都会记录,记录包括但不限于开发中的bug及容易忽略的问题和技巧。但是由于时间原因只是写了5天的文档,后面的会后续补充。仔细想想这5天其实也足够了,其中包括开发中所需要的初始流程及工具的介绍和使用。如果您也想试着开发玩玩,不妨看下这个简单的文档。文档链接:说明文档.pdf

写在最后

至此文章写完,虽然每次都进行测试。但难免有所疏漏,如有有问题,欢迎指正,我将不胜感激。项目开源,如果您对此有着兴趣欢迎继续开发。如果可以的话,可以点一个一个star支持项目地址或点下推荐。这将是对我最大的鼓励,拳拳谢意,无以言表。

参考文献

  • 《汇编语言(第三版)王爽著》
  • 《操作系统设计与实现 上册 Andrew S.Tanenbaum 著》
  • 《30天自制操作系统 川合秀实 著》

这篇关于2020元旦献礼——从零开始开发一个操作系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/627588

相关文章

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Linux中查看操作系统及其版本信息的多种方法

《Linux中查看操作系统及其版本信息的多种方法》在服务器运维或者部署系统中,经常需要确认服务器的系统版本、cpu信息等,在Linux系统中,有多种方法可以查看操作系统及其版本信息,以下是一些常用的方... 目录1. lsb_pythonrelease 命令2. /etc/os-release 文件3. h

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10