國產操作系統和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.pswp.cn/news/378379.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/378379.shtml
英文地址,請注明出處:http://en.pswp.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 …