当前操作系统缺少黑体等字体_从零开始开发一个操作系统
在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压缩。
图片预览
支持jpg和bmp格式图片预览。
初始开发文档
起初是想这每天都会记录,记录包括但不限于开发中的bug及容易忽略的问题和技巧。但是由于时间原因只是写了6天的文档,后面的会后续补充。仔细想想这6天其实也足够了,其中包括开发中所需要的初始流程及工具的介绍和使用。如果您也想试着开发玩玩,不妨看下这个简单的文档。文档链接:说明文档.pdf
写在最后
至此文章写完,虽然每次都进行测试。但难免有所疏漏,如有有问题,欢迎指正,我将不胜感激。项目开源,如果您对此有着兴趣欢迎继续开发。如果可以的话,可以点一个一个star支持项目地址或或者 免费评分。这将是对我最大的鼓励,拳拳谢意,无以言表。
参考文献
当前操作系统缺少黑体等字体_从零开始开发一个操作系统相关推荐
- 当前操作系统缺少黑体等字体_操作系统开发之——中断
这里先提交一个代码的错误,之前运行过快,没看出刷屏的问题: // kernel/console.c...void init_console(void) {... // Before: // conso ...
- react的导出是怎么实现的_从零开始开发一个 React
这个是从零开始开发一个 React 系列的第七篇.想要访问之前的内容可以点击下方的链接进行访问: 最简单的实现,包括 vdom 结构,createElement,ReactDOM.render 增加 ...
- 2020元旦献礼——从零开始开发一个操作系统
序言 在2019年的最后一天终于完成了整个系统的开发,并给它起名曰--Inios .就如同文章名字一样,完全是从内核编写,非二次开发,从最初的"hello os"到初次有了系统的样 ...
- 当前操作系统缺少黑体等字体_2020世界互联网大会:360视觉、360守望领域、360城市运营操作系统齐亮相...
来源:环球网 11月22日上午,2020年世界互联网大会"互联网之光"博览会在浙江乌镇开幕.期间,360数字城市集团携城市运营操作系统,与360视觉.360守望领域社区安全解决方案 ...
- 如何从零开始开发一个小程序
如何从零开始开发一个小程序 开始 申请账号 开发设置 开发工具 新建小程序 阅读文档 模版语法 项目架构 开始编写 基础语法 wx:for循环 wx:if判断 页面导航 自定义组件引用 样式修改 单行 ...
- 从零开始开发一个大型网站
从零开始开发一个大型网站 更新:前端代码已全部由TypeScript进行重写 这是本人第一个从零开始开发一个大型网站(前后端+部署代码),是一个内容分享社区,详细信息见github.目前还是开发中后期 ...
- 视频教程-用Java从零开始开发一个物联网项目-物联网技术
用Java从零开始开发一个物联网项目 多年的产品设计和开发经验,带领团队完成多个知名产品.历任多家大型公司的Java架构师,对知名框架的源码均有深入研究.拥有IT一线开发.教学10多年的实战经验,能充 ...
- Android-IM从零开始开发一个即时通讯项目
Android-IM从零开始开发一个即时通讯项目 https://www.jianshu.com/p/dca480006691 关于聊天室项目 聊天室项目,也被称为即时通讯(IM). 其原理是服务器是 ...
- python区块链框架_从零开始创建一个区块链应用(Python版)
2018年什么最火?非区块链莫属! 一时间网上各种介绍区块链的文章层出不穷,但大多数都是从概念层面进行解释的,本文则从技术层面讲解,如何从零开始创建一个区块链应用. 本文使用Python开发,读者需要 ...
最新文章
- php7和7.1,PHP7.0和7.1 部分新增特性备忘代码分享
- 网页左下角蒲公英动画
- how is SAP ui5 shell view implemented
- How is syntax error in Vue detected - Vue的语法错误检查机制介绍
- 第37课 thinkphp5添加商品基本信息及通过前置钩子上传商品主图 模型事件(勾子函数)...
- 如何使用API提交转码任务?
- java+cache使用方法_java相关:springboot使用GuavaCache做简单缓存处理的方法
- 受检异常 非受检异常_C++异常实战之十一 使用scope_fail处理复杂场景(非fail-fast)下的异常...
- [洛谷P1501][国家集训队]Tree II(LCT)
- excel表自动向下填充
- win10共享打印机搜索不到计算机,win10找不到共享打印机 win10搜不到共享打印机 - 云骑士一键重装系统...
- 诺瓦科技2022数字IC设计提前批笔试
- 网络语言C位意思,网络流行语“C位出道”探究
- 携程网移动端首页-学习与自我分析
- 根据M3U8文件地址下载网站上的视频
- 阿里巴巴开源力作(二)--分布式流量卫兵Sentinel简介及控制台安装
- Got permission denied while trying to connect to the Docker报错排障
- 序列的算法(一·a)马尔可夫模型
- Python 编码规范 PEP8
- Linux系统云服务器查看/启用网站日志
热门文章
- 三维空间中曲线绕任意轴旋转所得的旋转曲面求法
- jdbc获取结果行数,如何获取JDBC中的行数?
- perl mysql dml_MySQL Connector执行SQL语句的三种方式
- c语言求100以内整除13的最大,VB程序设计的一道题,找出100以内能被3整除的所有数之和,并把值保存在一维数组中...
- python中扑克牌类设计_Python中的计数 Counter类
- python周天为一周的开始_周天-和周天相关的内容-阿里云开发者社区
- url主机域名可以省略_从输入url到页面完成加载发生了什么
- 电脑出货量_Q3季度全球笔记本电脑出货量增长34%,惠普出货量首次超过联想
- C++ 指向子类的指针转型为指向父类类型指针之后指向的对象地址不变
- Xception,Inception-ResNet,SENet(Squeeze-and-Excitation)