国产操作系统和linux 之间的关系,为何国产系统大多基于开源Linux?操作系统从0做起到底有多难?...

今年貌似是国产操作系统的“爆发”之年,除了老牌的银河麒麟、中标麒麟、深度之外,中兴近日发布了自己的“新支点”,华为也公开了自研的操作系统“鸿蒙”。纵观这些国产操作系统,大多基于开源的Linux。那么为什么我们不可以从0开始打造一款不同于windows、Linux和macOS的桌面系统,这样做到底有多难?

62d3eb5b0f0c31b58cc28ff685771bcf.png

要想真真正正的从0开始设计一款操作系统,至少要解决几大问题:

技术问题:处理器的管理——进程的操作和处理器调度

操作系统的核心功能之一是分配和管理CPU的计算资源,决定由哪些核心执行哪些程序的代码。比如我们在使用个人4核CPU的电脑的时候,可以一边用chrome浏览器上网、一边用网易云听着音乐、一边用迅雷下载着文件、一边用视频编辑软件渲染自己编辑好的小视频,另外后台里还跑着上百个系统相关的服务程序。

7c8481c143a5adbf9309a83820b73e49.png

然而每个CPU的核心在某一时刻只能执行1个进程的代码,之所以4个核心能同时做这些事情,就是操作系统的调度算法在进行进程的操作和处理器调度。操作系统可以非常迅速的在这些任务之间来回切换,以达到最优化使用CPU计算资源,最大化并发执行程序代码。调度算法与操作系统的使用场景紧密联系,具体的设计可以千变万化,是决定操作系统工作效率的核心技术。

ec2d4f0fc0597e1d2788ee609a007555.png

技术问题:存储器的管理——协调管理多种不同速度的存储器

操作系统的核心功能之二是如何配合程序执行,使数据和程序代码以最高的效率在CPU寄存器、内存、磁盘之间传输。寄存器、内存、磁盘都叫存储器,它们的容量差别很大、速度差别也很大。操作系统要协调这些速度不同的存储器尽可能的高效率工作,不让速度快的“闲死”、“撑死”,不让速度慢的“忙死”、“饿死”,所以要综合运用分区、段式、页式等各种存储管理技术以及缓存技术来解决这些问题。

b3bc38b22870593a7fb05d55e43eb70c.png

技术问题:文件管理、系统安全性、设备管理……

除了上面两个核心的功能,操作系统还要解决文件以什么方式存放在硬盘上、如何管理、如何实现高速检索、如何实现海量文件存储等等;操作系统的安全方面要考虑如何控制用户权限、账户管理策略、密码管理策略、漏洞风险控制等等;设备管理方面要考虑如何更好的支持常用设备,提高兼容性……

5a67549000d6d41fd820ba47ad8b3fcd.png

非技术问题:生态

一款新操作系统,如果没有应用程序支持,那就只能是个操作系统,不会有人去用。所以操作系统在技术上“诞生”之后,面临的更大的问题是生态问题,培养一个良好的生态并不是2-3年就可以做到的。反观Android,从诞生到现在也不敢说生态成熟完整。建设一个生态的难度要大于所有的技术上遇到的问题。

bb32b26ea4c1465ca20c48661bd6535c.png

总之,一个操作系统的诞生,并非我们想象中那样写写代码、搞搞开发就能轻松完成的。它是许许多多计算机科学家的心血和智慧的结晶,借鉴现有成熟的技术,是满足我们现实中对国产自主操作系统迫切需求的一个非常好的路子。从0开始做操作系统不是没有可能,而是没有必要。

举报/反馈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/378379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

away3d创建基础view世界(基础 一)

对于away3d可能很多人有畏惧心里,其实away3d没有想象中的那么难,现在我就教大家创建一个简单的view世界。 package{import away3d.containers.View3D;import flash.display.Sprite;public class Main extends Sprite{private var view:View3D;//兴建一个…

operator.eq_Python operator.eq()函数与示例

operator.eqoperator.eq()函数 (operator.eq() Function) operator.eq() function is a library function of operator module, it is used to perform "equal to operation" on two values and returns True if the first value is equal to the second value, Fals…

智能车复工日记【7】:关于会车的图像问题

目录 系列文章更换扫线方式获取车的轮廓车屁股所在行数确定白色球台导致的问题5.21思考1、 关于会车地点确定如何判断会车状态博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问。…

详解Spring 3.0 基于Annotation 的依赖注入实现

简介: Spring 的依赖配置方式与 Spring 框架的内核自身是松耦合设计的。然而,直到 Spring 3.0 以前,使用 XML 进行依赖配置几乎是唯一的选择。Spring 3.0 的出现改变了这一状况,它提供了一系列的针对依赖注入的注解,这…

linux如何停用xdmcp服务,如何禁用XDMCP服务

看你用到是什么linux版本,例如下面:For kdm (which comes with the KDE desktop), it is a replacement of xdm and configures the same way, except its files are in /etc/X11/kdm in Caldera/SCO, /etc/kde/kdm in Red Hat (and Fedora Core) and /u…

第一章 基础知识

这篇博文是本人在学习《Python基础教程 (第3版)》的时候所记录下来的关键要点,书中的核心知识点也都在本篇博客中所涉及,需要耐心每天坚持点点滴滴学习进步 第一章 基础知识 数和表达式 1,执行整除运算// 4//3 —&…

Python operator.le()函数与示例

operator.le()函数 (operator.le() Function) operator.le() function is a library function of operator module, it is used to perform "less than or equal to operation" on two values and returns True if the first value is less than or equal to the sec…

jQuery.validator

$(document).ready(function(){ /* 设置默认属性 */$.validator.setDefaults({ submitHandler: function(form) { form.submit(); } }); // 中文字两个字节 jQuery.validator.addMethod("byteRangeLength", function(value, element, param) { var length value.le…

js 第四课

正则表达式:RegExp对象 正则表达式描述一个字符模式的对象,或者说用某种模式去匹配一类字符串的一个公式。 1.创建 可以用RegExp构造函数和直接量两种方式。正则表达式直接量被包含在一对"/"中. 1 var partern1 RegExp(\\d*); 2 …

第二章 列表和元组

第二章 列表和元组 在Python中,最基本的数据结构为序列(包括列表、元组、字符串等)(sequence) 列表是可以修改的,而元组不可以 Python支持一种数据结构的基本概念,名为容器(contain…

linux下mac风格菜单栏,ubuntu 8.04 安装mac风格菜单

ubuntu 8.04 安装mac风格菜单发布时间:2008-07-13 00:22:22来源:红联作者:bindex这只是一份草案文档,它可能会导致一些计算机故障。引言这份指南假定你没有在电脑上编译过其他程序,并且,假定你使用的是Ubuntu Gusty。1.使用deb包安装 32位系统…

解析法实现一元线性回归、多元线性回归以及数据模型可视化操作

目录【1】解析法实现一元线性回归python列表实现利用Numpy实现利用TensorFlow实现数据和模型可视化【2】解析法实现多元线性回归利用Numpy实现需要用到的NumPy数组运算函数数据和模型可视化绘制空间点集:绘制空间平面图:绘制线框图并且与散点图对比&…

带有示例的Python File readlines()方法

文件readlines()方法 (File readlines() Method) readlines() method is an inbuilt method in Python, it is used to get all lines from the file, the method is called with this object (current file stream/IO object) and returns all available lines in the file, w…

32位系统win2008+mssql2008 6G内存折腾纪实

十年没搞硬件了,现在计算机发展到大硬盘大内存的时代了。一直都少搞服务器配置、运营,以前弄服务器都是普通的PC来当服务器。公司原来的一个业务系统用的是mssql2000好几年了,由于业务数据越积压越多最大的一张表已经有7000多万条记录了&…

case使用 上下篇

上篇 Case具有两种格式。简单Case函数和Case搜索函数。 --简单Case函数 CASE sexWHEN 1 THEN 男WHEN 2 THEN 女 ELSE 其他 END --Case搜索函数 CASE WHEN sex 1 THEN 男WHEN sex 2 THEN 女 ELSE 其他 END这两种方式,可以实现相同的功能。简单Case函数的写法相对比…

第三章 字符串

第三章 字符串% 字符串是不可变的,所有的元素赋值和切片赋值都是非法的 Python提供了多种字符串格式设置方法 yanyu "hello, %s I like %s age is %s" beyond ("beyond","band",23) yanyu % beyond#结果为:hello, bey…

【视觉项目】【day5】8.25号实验记录(修完BUG,28张测试图,13个样本,四张测试图误判,这比之前效果好很多了)

目录修改完BUG后的程序以及效果优化思路,增强正确识别率(待验证)修改完BUG后的程序以及效果 修改代码后的测试结果:(利用连通域面积将明显比本张测试图的瓶子要小的模板提前去除,减少误判) 这样下来,28张测…

linux kernel and user space通信机制,Linux内核空间与用户空间通信机制地研究.doc

实用文案标准文档Linux内核空间与用户空间通信机制的研究Linux kernel space and user space communication mechanism摘 要Linux 是一个源码开放的操作系统,无论是普通用户还是企业用户都可以编写自己的内核代码,再加上对标准内核的裁剪从而制作出适合自…

前台用js、jquery出现错误很多是由于IE缓存

例如:当你用jquery进行异步请求数据时,如果浏览器发现请求的地址不变,或者参数也不改变的情况下 IE默认是取原来的缓存中的数据,而不进行重新请求数 解决的方法是是在地址栏的后面加上一个随机参数值,IE发现地址改变&a…

python 示例_带有示例的Python date timetuple()方法

python 示例Python date.timetuple()方法 (Python date.timetuple() Method) date.timetuple() method is used to manipulate objects of date class of module datetime. date.timetuple()方法用于操作模块datetime的日期类的对象。 It is an instance method which means …