日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

Redox随笔(2)-用Rust语言编写的类UNIX操作系统

發(fā)布時間:2025/3/12 windows 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redox随笔(2)-用Rust语言编写的类UNIX操作系统 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

與其他操作系統(tǒng)相比,Redox如何
我們與其他操作系統(tǒng)有很多共同之處。
由于
Redox syscall接口是Unix-y。例如,我們有open, pipe, pipe2, lseek, read, write, brk, execv等等。目前,我們支持31個最常見的Linux系統(tǒng)。
與Linux相比,我們的syscall接口要小得多。這并不是因為開發(fā)階段,而是因為極簡設(shè)計。
“一切都是URL”
這是“一切都是文件”的概括,主要是受到了計劃9的啟發(fā)。在Redox中,“resources”(TODO: link)既可以是類似于套接字的,也可以是類似于文件的,這使得它們可以快速地用于幾乎所有的事情。
這樣,我們就得到了一個更加統(tǒng)一的系統(tǒng)API。稍后,我們將在url、模式和資源中對此進(jìn)行解釋。
內(nèi)核
Redox的核是一個微核。該設(shè)計的靈感主要來自MINIX。
與Linux或BSD相比,Redox只有16000行內(nèi)核代碼,這個數(shù)字還在不斷減少。大多數(shù)服務(wù)都是在用戶空間中提供的。
在內(nèi)核中使用更少的代碼可以更有效地查找和修復(fù)bug /安全問題。Andrew Tanenbaum (MINIX的作者)指出,每1000行正確編寫的代碼中就有一個bug。這意味著對于一個包含近25,000,000行代碼的單片內(nèi)核來說,可能有近25,000個bug。一個只有16000行代碼的微內(nèi)核意味著大約有16個bug。
應(yīng)該注意的是,額外的行只是基于內(nèi)核空間之外,這使它們不那么危險,而不一定是更小的數(shù)字。
其主要思想是讓組件和驅(qū)動程序存在于用戶空間中,并且遵循最小權(quán)限原則(POLA)。這是每一個單獨的組成部分:
完全隔離在內(nèi)存中,并作為一個獨立的用戶進(jìn)程
一個組件的失敗不會使其他組件崩潰
外部和不受信任的代碼不會公開整個系統(tǒng)
錯誤和惡意軟件不能傳播到其他組件
是否限制了與其他組件的通信
沒有管理/超級用戶權(quán)限
bug被轉(zhuǎn)移到用戶空間,降低了它們的能力
所有這些都大大提高了系統(tǒng)的可靠性。這對于任務(wù)關(guān)鍵型應(yīng)用程序和希望減少計算機(jī)系統(tǒng)問題的用戶非常有用。

為什么Rust呢?
為什么要在Rust中編寫操作系統(tǒng)?為什么還要用Rust?
Rust擁有巨大的優(yōu)勢,因為對于操作系統(tǒng)來說,安全性非常重要。實際上,很多。
由于操作系統(tǒng)是計算的一個集成部分,所以它們是一個非常重要的安全組件。
由于缺乏內(nèi)存和類型安全,Linux、BSD、Glibc、Bash、X等系統(tǒng)一直存在大量bug和漏洞。Rust通過靜態(tài)地加強(qiáng)內(nèi)存安全性,做到了這一點。
設(shè)計很重要,實現(xiàn)也很重要。Rust試圖避免這些意外的內(nèi)存不安全情況(這是安全性關(guān)鍵bug的主要來源)。設(shè)計是一個非常透明的問題來源。你知道發(fā)生了什么,你知道什么是計劃好的,什么不是。
在這一點上,內(nèi)核/用戶空間分離的基本設(shè)計與類unix系統(tǒng)非常相似。其思想大致相同:通過內(nèi)核的嚴(yán)格執(zhí)行,將內(nèi)核和用戶空間分離,內(nèi)核負(fù)責(zé)管理內(nèi)存和其他關(guān)鍵資源。
然而,我們有一個優(yōu)勢:強(qiáng)制的內(nèi)存和類型安全。這是Rust的強(qiáng)大之處——在編譯時消除了大量“未預(yù)料到的bug”(例如,未定義的行為)。
Linux和BSD的設(shè)計是安全的。執(zhí)行情況不是:
Linux內(nèi)核漏洞
Glibc漏洞
Bash的漏洞
X漏洞
點擊上面的鏈接。您可能會注意到,許多bug都是在不安全的條件下產(chǎn)生的(這些條件可以有效地消除銹蝕),比如緩沖區(qū)溢出,而不是整體設(shè)計。
我們希望使用Rust最終能夠生成更安全的操作系統(tǒng)。
不安全的
不安全是告訴Rust“我知道我在做什么!”的一種方式,這在編寫低級代碼、提供安全的抽象時通常是必要的。如果沒有unsafes,就不能編寫內(nèi)核。
在這種情況下,內(nèi)核不可能是100%安全的,但是不安全的部分必須標(biāo)記為不安全的部分,這將不安全的部分與安全代碼隔離開來。我們盡量消除不安全的地方,當(dāng)我們使用不安全的時候,我們是非常小心的。
快速的grep給出了一些統(tǒng)計數(shù)據(jù):在大約16000行代碼中,內(nèi)核大約有300次不安全調(diào)用。每一個都經(jīng)過仔細(xì)審核以確保正確性。
這與用C語言編寫的內(nèi)核形成了對比,C語言如果沒有代價高昂的正式分析,就不能保證安全性。
你可以在Rust書的相關(guān)章節(jié)找到更多關(guān)于如何不安全的工作。

Redox是一個完整的Rust操作系統(tǒng)。除了內(nèi)核,我們還在開發(fā)幾個小項目,包括:
TFS:受ZFS啟發(fā)的文件系統(tǒng)。
Ion: Redox shell。
Orbital: Redox 顯示服務(wù)器。
OrbTK:小部件工具包。
pkgutils: Redox的包管理庫及其命令行前端。
Sodium:類似于vi的編輯器。
ralloc: 一個內(nèi)存分配器。
libextra: libstd的補(bǔ)充,在整個Redox代碼庫中使用。
games-for-redox: Redox (類似于bsd游戲)的迷你游戲集。
以及其他一些令人興奮的項目。
我們還有三個實用程序發(fā)行版,它們是一些小的、有用的命令行程序的集合:
Coreutils:一個可用系統(tǒng)所必需的最小實用程序集。
Extrautils: 如提醒、日歷、拼寫檢查等。
Binutils:處理二進(jìn)制文件的實用程序。
我們也積極參與第三方項目,這些項目在Redox中被大量使用。
uutils/coreutils: GNU coreutils的跨平臺銹蝕重寫。
m-labs/smoltcp: Redox使用的網(wǎng)絡(luò)堆棧。
什么工具適合Redox?
將來,這些工具中的一些將被移出默認(rèn)的發(fā)行版,放到單獨的可選包中。例如,Orbital, OrbTK, Sodium等等。
列出的工具可分為三類:
關(guān)鍵的,這是一個完整的功能和可用的系統(tǒng)所需要的。
生態(tài)友好型,是為了在生態(tài)系統(tǒng)中建立一致性。
樂趣,這是“美好的”,并天生簡單。
第一類是顯而易見的:沒有某些核心工具的操作系統(tǒng)是無用的操作系統(tǒng)。第二類包含了將來可能不會違約的工具,但由于其魅力,現(xiàn)在仍然是官方發(fā)布的。第三類是為了方便:即確保Redox基礎(chǔ)結(jié)構(gòu)是一致和集成的(例如,pkgutils、OrbTK和libextra)。

總結(jié)

以上是生活随笔為你收集整理的Redox随笔(2)-用Rust语言编写的类UNIX操作系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。