国产操作系统和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,一经查实,立即删除!

相关文章

js 第四课

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

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

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

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

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

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

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

WebC.BBS 项目参与新人必读

开发环境: 采用Visual Studio 2010,MVC版本采用Asp.Net MVC3,数据库采用Sql2005 2008,扩展技术包括jQuery。 SVN的相关信息: SVN-Url:svn://svn.cyqdata.com/project_bbs 账户申请:请将自己的密码发给组长,…

利用梯度下降法求解一元线性回归和多元线性回归

文章目录原理以及公式【1】一元线性回归问题【2】多元线性回归问题【3】学习率【4】流程分析(一元线性回归)【5】流程分析(多元线性回归)归一化原理以及每种归一化适用的场合一元线性回归代码以及可视化结果多元线性回归代码以及可…

Javascript之创建对象(原型模式)

我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,它的用途是包含可以有特定类型的所有实例共享的属性和方法。 prototype就是通过构造函数而创建的那个对象的原型对象。使用原型的好处就是可以让所有对象实例…

两种方法将Android NDK samples中hello-neon改成C++

一、第一种方法:1.修改helloneon.c 中代码 a.将 char* str; 改为 char str[512] {0}; b.将 asprintf(&str, "FIR Filter benchmark:\nC version : %g ms\n", time_c); 改为 sprintf(str, "FIR Filter benchmark:\nC ve…

【视觉项目】【day6】8.26关于matchTemplate()以及NCC的思考整理

NCC与matchTemplate()函数中match_method TM_CCOEFF_NORMED是否一样? 先看公式: TM_CCOEFF_NORMED NCCTM_CCOEFF_NORMED:归一化的相关性系数匹配方法 NCC:normalized cross correlation:归一化互相关系数 公式是一样的。 参考: 模板匹配的几…

HTTP 状态代码

如果向您的服务器发出了某项请求要求显示您网站上的某个网页(例如,当用户通过浏览器访问您的网页或在 Googlebot 抓取该网页时),那么,您的服务器会返回 HTTP 状态代码以响应该请求。 此状态代码提供了有关请求状态的信…

TensorFlow的可训练变量和自动求导机制

文章目录一些概念、函数、用法TensorFlow实现一元线性回归TensorFlow实现多元线性回归一些概念、函数、用法 对象Variable 创建对象Variable: tf.Variable(initial_value,dtype)利用这个方法,默认整数为int32,浮点数为float32,…

django第二个项目--使用模板做一个站点访问计数器

上一节讲述了django和第一个项目HelloWorld,这节我们讲述如何使用模板,并做一个简单的站点访问计数器。 1、建立模板 在myblog模块文件夹(即包含__init__.py的文件夹)下面新建一个文件夹templates,用于存放HTML模板,在…

c语言math乘法,JavaScript用Math.imul()方法进行整数相乘

1. 基本概念Math.imul()方法用于计算两个32位整数的乘积,它的结果也是32位的整数。JavaScript的Number类型同时包含了整数和浮点数,它没有专门的整型和浮点型。因此,Math.imul()方法能提供类似C语言的整数相乘的功能。我们将Math.imul()方法的…

梯度下降法预测波士顿房价以及简单的模型评估

目录原理代码关于归一化的思考原理 观察数据可知属性之间差距很大,为了平衡所有的属性对模型参数的影响,首先进行归一化处理。 每一行是一个记录,每一列是个属性,所以对每一列进行归一化。 二维数组归一化:1、循环方式…

Windows Phone 内容滑动切换实现

在新闻类的APP中,有一个经常使用的场景:左右滑动屏幕来切换上一条或下一条新闻。 那么通常我们该使用哪种方式去实现呢?可以参考一下Demo的实现步骤。 1,添加Windows Phone用户自定义控件。例如: 这里我为了演示的方便…

使用鸢尾花数据集实现一元逻辑回归、多分类问题

目录鸢尾花数据集逻辑回归原理【1】从线性回归到广义线性回归【2】逻辑回归【3】损失函数【4】总结TensorFlow实现一元逻辑回归多分类问题原理独热编码多分类的模型参数损失函数CCETensorFlow实现多分类问题独热编码计算准确率计算交叉熵损失函数使用花瓣长度、花瓣宽度将三种鸢…

【神经网络计算】——神经网络实现鸢尾花分类

本blog为观看MOOC视频与网易云课堂所做的笔记 课堂链接: 人工智能实践:TensorFlow笔记 吴恩达机器学习 疑问与思考 为什么按照batch喂入数据 之前看的视频里面处理数据都是一次性将所有数据喂入,现在看的这个视频对数据进行了分组投入。这是为何&#…

c# xaml语言教程,c#学习之30分钟学会XAML

1.狂妄的WPF相对传统的Windows图形编程,需要做很多复杂的工作,引用许多不同的API。例如:WinForm(带控件表单)、GDI(2D图形)、DirectXAPI(3D图形)以及流媒体和流文档等,都需要不同的API来构建应用程序。WPF就是看着上面的操作复杂和…

.NET 小结之内存模型

.NET 小结之内存模型 为什么要解.NET 的内存模型 在.NET下的内存管理、垃圾回收其实大部分不需要我们操心,因为大部分.NET已经帮我们做了,通常情况下也不需要考虑这些。但是如果想要了解一些.NET一些稍微“底层”的原理,如:“装箱…

【电设控制与图像训练题】【激光打靶】【openmv测试代码以及效果】

9.4加入串口通讯,送出靶心坐标、激光坐标、激光所在环数、方位;加入防误判操作 博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问。 目录 规则坐标系代码总结相关openmv使用文…