开启辅助访问 切换到窄版

打印 上一主题 下一主题

真正实用的操作系统的结构,简介

[复制链接]
作者:聂彩辰 
版块:
嵌入式操作系统 linux 发布时间:2021-3-15 18:55:28
11490
楼主
跳转到指定楼层
| 只看该作者 回帖奖励 |倒序浏览 |阅读模式
之前的一系列文章,说了下bochs上的入门级操作系统demo的写法(还差个execve的内核实现),这篇说一下具有真正实用价值的操作系统的结构。
世界上真正实用的操作系统特别少,目前使用比较普遍的只有windows、Linux、ios、Android,共4种。
其中后两个的内核也是Linux系的,API和命令行与Linux区别不大。
Linux则传承自古老的unix。
(unix系统早在1970年就伴随着C语言一起出现了,作者是图灵奖得主,丹尼斯里奇和肯汤普森。
肯汤普森和Rob Pike近几年又发明了go语言)
Linux的发行版比较多,例如ubuntu、centos,但内核都是一脉相承的,由Linus开发维护。
Android的内核是在Linux 2.6内核上修改而来的。
为什么采用Linux 2.6内核?
因为Linux 2.4内核没有防范字符串缓冲区溢出攻击,这个问题在当年风靡一时,著名的redhat 9.0采用的就是2.4内核(自然也可以被溢出的)。
一个具有真正实用价值的操作系统,
首先要具有一个高度模块化的内核。
这样才可以比较容易地给它添加各种设备驱动程序,以及对各种类型的CPU芯片的支持。
支持的CPU、网卡、声卡、显卡、硬盘等各种设备越多越好。
现在安装系统几乎不需要安装专门的驱动程序,就是因为系统本身自带了大多数常用设备的驱动程序。
Linux系统可以在intel、AMD、ARM等多个公司的大多数CPU上运行,也是因为它本身就自带了对这些芯片的支持(一般在Linux内核源码的arch目录)。
其次,就是支持前面提到的那些设备和芯片,越多越好。
这个工程量是非常大的。
第三,要有一个可以编写简单脚本的命令解释器(shell),并且内置大多数常用的命令(类似Linux的bash)。
shell是操作系统的最初级的用户界面,在实现图形界面之前,或者在不需要图形界面的服务器端,可以让用户正常使用。
对于一个新的系统,可以自己写一个shell,也可以移植Linux的bash。
如果要移植别的成熟软件,那么首先就要有C库和C编译器。
第四,C库和C编译器,这是必须的。
不能支持C语言的操作系统,根本就没法移植其他的软件。
C语言编写的基础软件太多了,何况操作系统的主要代码就是用C语言写的。
但是gcc好像是C++写的。
C++是最复杂的编程语言,没有之一。
C++的编译器也是最难写的。
最好是能同时拥有C和C++编译器,这样在移植软件时就不容易遇到障碍了。
(移植的兼容问题也是很复杂的,版本冲突是很难避免的)
只有C编译器已经可以移植很多软件了,例如著名的多媒体框架ffmpeg、web服务器nginx,矢量图形库cario(Firefox浏览器的核心之一),python语言也是C写的。
第五,文本编辑器,这是创建文本文件和编写代码的必需品。
Linux上著名的vim就是,我的文章里的示例代码都是用vim写的。
文本编辑器,牵扯到字符串查找和排版,并不简单。
字符串查找的著名算法就是KMP算法,之前文章里简单写过。
第六,用户管理系统,用于管理不同用户的权限。
Linux的root用户的权限最大,这点要与文件系统配合,控制文件和目录的访问权限。
最后,也是最重要的,图形桌面系统。
这是必须的,否则能使用该系统的就只是熟悉命令行操作的专业程序员、专业运维了,其他人是没法使用的。
(程序员也不喜欢打命令浏览网页)
图形桌面系统,要能支持键盘和鼠标,最好支持触摸屏(移动端必备)。
还要与显示系统相关联,能够把用户操作实时地呈现出来。
图形桌面系统要支持OpenGL,因为基于OpenGL的图像渲染软件很多,例如各种游戏引擎、播放器、画图工具、办公软件,等等。
以上这些,在一个完整实用的操作系统的发行版里,都是必备的基本功能。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表