一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

服務(wù)器資訊|IT/互聯(lián)網(wǎng)|云計(jì)算|區(qū)塊鏈|軟件資訊|操作系統(tǒng)|手機(jī)數(shù)碼|百科知識(shí)|免費(fèi)資源|頭條新聞|

服務(wù)器之家 - 新聞資訊 - 操作系統(tǒng) - Linux的層級(jí)架構(gòu)與Rust的主要模塊crate總結(jié),值得轉(zhuǎn)發(fā)收藏

Linux的層級(jí)架構(gòu)與Rust的主要模塊crate總結(jié),值得轉(zhuǎn)發(fā)收藏

2023-12-31 17:01未知服務(wù)器之家 操作系統(tǒng)

Linux的層級(jí)架構(gòu) 每個(gè)操作系統(tǒng)都有一個(gè)內(nèi)核,內(nèi)核封裝了底層硬件設(shè)備管理、內(nèi)存管理、網(wǎng)絡(luò)數(shù)據(jù)協(xié)議轉(zhuǎn)化和收發(fā)傳輸、文件系統(tǒng)讀寫等。從這個(gè)圖可以看到,內(nèi)核將系統(tǒng)硬件與應(yīng)用程序進(jìn)程連接起來(lái),隱藏了上層下層交互的一些

Linux的層級(jí)架構(gòu)

每個(gè)操作系統(tǒng)都有一個(gè)內(nèi)核,內(nèi)核封裝了底層硬件設(shè)備管理、內(nèi)存管理、網(wǎng)絡(luò)數(shù)據(jù)協(xié)議轉(zhuǎn)化和收發(fā)傳輸、文件系統(tǒng)讀寫等。從這個(gè)圖可以看到,內(nèi)核將系統(tǒng)硬件與應(yīng)用程序進(jìn)程連接起來(lái),隱藏了上層下層交互的一些細(xì)節(jié),各司其職。

Linux的層級(jí)架構(gòu)與Rust的主要模塊crate總結(jié),值得轉(zhuǎn)發(fā)收藏

這些分層包括:

  • 用戶空間程序
  • 編譯器
  • 終端
  • 防火墻
  • 系統(tǒng)調(diào)用的跨平臺(tái)API(特定于平臺(tái)的系統(tǒng)調(diào)用包裝API)
  • Rust標(biāo)準(zhǔn)庫(kù)
  • libc(或等效的API)
  • kernel,操作系統(tǒng)的核心模塊
  • 系統(tǒng)資源
  • 內(nèi)存
  • 文件系統(tǒng)
  • 網(wǎng)絡(luò)
  • 硬件和其他設(shè)備(包括鍵盤、鼠標(biāo)、監(jiān)視器、磁盤驅(qū)動(dòng)器)

Rust的標(biāo)準(zhǔn)庫(kù)的功能劃分

而Rust標(biāo)準(zhǔn)庫(kù),很好的利用了操作系統(tǒng)內(nèi)核提供的API。

Rust標(biāo)準(zhǔn)庫(kù)是Rust程序進(jìn)入Linux操作系統(tǒng)內(nèi)核函數(shù)的主要接口,它在內(nèi)部使用libc(在Windows系統(tǒng)使用其他等效的庫(kù))來(lái)調(diào)用內(nèi)核提供的系統(tǒng)調(diào)用。

從Rust程序中發(fā)起系統(tǒng)調(diào)用,以實(shí)現(xiàn)管理和操作各種系統(tǒng)資源(如圖)。

Linux的層級(jí)架構(gòu)與Rust的主要模塊crate總結(jié),值得轉(zhuǎn)發(fā)收藏

libc(或其變體)為類UNIX操作系統(tǒng)上的系統(tǒng)調(diào)用提供了一個(gè)包裝器,如Linux內(nèi)核實(shí)現(xiàn)了POSIX標(biāo)準(zhǔn)指定的數(shù)百個(gè)POSIX API(對(duì)于Windows,系統(tǒng)調(diào)用有等效的API,也實(shí)現(xiàn)了POSIX標(biāo)準(zhǔn)[1])。

作為標(biāo)準(zhǔn)庫(kù),Rust標(biāo)準(zhǔn)庫(kù)是跨平臺(tái)的,Rust標(biāo)準(zhǔn)庫(kù)的系統(tǒng)調(diào)用的細(xì)節(jié)是從Rust開發(fā)人員那里抽象出來(lái)的。Rust也支持不依賴于標(biāo)準(zhǔn)庫(kù)的運(yùn)行方式(no_std 方式),Rust直接操控底層硬件(如應(yīng)用在嵌入式系統(tǒng)開發(fā)場(chǎng)景),此時(shí)Rust就做了操作系統(tǒng)本身的工作。

對(duì)于大部分軟件開發(fā)工程師而言,他們用Rust主要開發(fā)應(yīng)用層軟件,也就是運(yùn)行在用戶空間的程序。它們基于標(biāo)準(zhǔn)庫(kù)編寫,實(shí)現(xiàn)各種業(yè)務(wù)功能。應(yīng)用層的軟件并非所有模塊和函數(shù)都涉及到系統(tǒng)調(diào)用(例如一些用于操作字符串和處理錯(cuò)誤的函數(shù),就無(wú)需調(diào)用系統(tǒng)調(diào)用)。

Rust標(biāo)準(zhǔn)庫(kù)包括幾大領(lǐng)域的模塊,包括四大類:

第一類,Rust語(yǔ)言原語(yǔ)

即Rust Language Primitives:Rust 語(yǔ)言的基本元素或基本類型(如下圖)。

如有符號(hào)整數(shù)、布爾值、浮點(diǎn)數(shù)、字符、字符串、數(shù)組、元組、切片。這些由Rust編譯器負(fù)責(zé)實(shí)現(xiàn)。

Linux的層級(jí)架構(gòu)與Rust的主要模塊crate總結(jié),值得轉(zhuǎn)發(fā)收藏

Rust標(biāo)準(zhǔn)包括原語(yǔ),并在它們之上構(gòu)建。

第二類,alloc crate

與堆分配值的內(nèi)存分配相關(guān)的類型、函數(shù)和特征。

包括集合(Vec、String等集合)、智能指針類型(Box<T>)、引用計(jì)數(shù)指針(Rc<T>)和原子引用計(jì)數(shù)指針(Arc<T>))。

第三類,core crate

作為Rust標(biāo)準(zhǔn)庫(kù)的基礎(chǔ)。充當(dāng)Rust語(yǔ)言與標(biāo)準(zhǔn)庫(kù)之間的鏈接,提供在Rust原語(yǔ)之上實(shí)現(xiàn)的類型、特征、常量和函數(shù),并為所有Rust代碼提供基礎(chǔ)構(gòu)建塊,它是跨平臺(tái)的,沒有任何指向操作系統(tǒng)或其他外部依賴的鏈接。由于較少直接用到core crate,所以本文不做過(guò)多介紹。

第四類,模塊(標(biāo)準(zhǔn)庫(kù)的其他crate)

是標(biāo)準(zhǔn)庫(kù)的一部分,模塊crate包括針對(duì)并發(fā)、I/O,文件系統(tǒng)、網(wǎng)絡(luò)、異步I/O、錯(cuò)誤處理等功能,以及與特定操作系統(tǒng)相關(guān)的函數(shù),Rust的官網(wǎng)對(duì)std有專門的文檔[2]。例如

  • 為用戶程序在多個(gè)線程上并發(fā)運(yùn)行的功能在std::thread模塊中;
  • 用于處理同步I/O的功能在std::io模塊中提供;
  • 針對(duì)特定os的模塊,主要在std::os模塊中實(shí)現(xiàn)。

下圖展示了Rust標(biāo)準(zhǔn)庫(kù)各個(gè)領(lǐng)域功能涉及到的具體std模塊(如std::io、std::os等)

Linux的層級(jí)架構(gòu)與Rust的主要模塊crate總結(jié),值得轉(zhuǎn)發(fā)收藏

以下著重對(duì)第四類的主要 crate 做一介紹,并附上文檔地址。

Rust的并發(fā)控制相關(guān)模塊 conurrency:

模塊名

說(shuō)明

std::env 模塊[3]

包含與環(huán)境變量交互的功能,包括讀取、設(shè)置和刪除環(huán)境變量。

std::sync 模塊[4]

提供了用于實(shí)現(xiàn)線程安全共享狀態(tài)的同步原語(yǔ),如互斥鎖(Mutex)、原子操作(Atomic)和條件變量(Condvar)。

std::thread 模塊[5]

提供了創(chuàng)建和管理線程的功能,包括線程的創(chuàng)建、 join、spawn 和同步。

std::process 模塊[6]

提供了與操作系統(tǒng)進(jìn)程交互的功能,包括運(yùn)行外部命令、啟動(dòng)新進(jìn)程以及與進(jìn)程進(jìn)行通信。

Rust的內(nèi)存管理相關(guān)模塊 memory management:

模塊名

說(shuō)明

std::alloc 模塊[7]

提供了內(nèi)存分配器的功能,包括分配和釋放動(dòng)態(tài)內(nèi)存。

std::convert 模塊[8]

提供了用于不同類型之間轉(zhuǎn)換的工具函數(shù)。

std::ptr 模塊[9]

提供了對(duì)指針的操作和轉(zhuǎn)換功能,包括對(duì)裸指針的操作。

std::borrow 模塊[10]

提供了用于管理借用的功能,包括&&mut借用運(yùn)算符的實(shí)現(xiàn)。

std::default 模塊[11]

提供了默認(rèn) trait 實(shí)現(xiàn)的功能,用于為不提供具體實(shí)現(xiàn)的類型提供默認(rèn)行為。

std::rc 模塊[12]

提供了引用計(jì)數(shù)(Reference Counting)的功能,用于實(shí)現(xiàn)線程安全的共享內(nèi)存。

std::cell 模塊[13]

提供了可變性的 Cell 和 RefCell 類型,用于在多線程環(huán)境下安全地共享可變狀態(tài)。

std::mem 模塊[14]

提供了與內(nèi)存相關(guān)的功能,包括內(nèi)存布局、內(nèi)存對(duì)齊和內(nèi)存操作。

std::clone 模塊[15]

提供了用于實(shí)現(xiàn)克隆(Clone) trait 的功能,用于復(fù)制和克隆復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。

std::pin 模塊[16]

提供了 Pin 類型,用于固定借用的生命周期,以避免懸垂指針和數(shù)據(jù)競(jìng)爭(zhēng)問(wèn)題。

Rust的文件系統(tǒng)操作相關(guān)模塊 File system:

模塊名

說(shuō)明

std::fs 模塊[17]

提供了與文件系統(tǒng)操作相關(guān)的功能,包括文件和目錄的創(chuàng)建、讀取、寫入和刪除等操作。

std::path 模塊[18]

提供了與文件路徑相關(guān)的功能,包括路徑的解析、構(gòu)造和操作。

Rust的數(shù)據(jù)處理相關(guān)模塊 data processing:

模塊名

說(shuō)明

std::ascii 模塊[19]

提供了與 ASCII 碼相關(guān)的功能,包括對(duì) ASCII 字符的操作和轉(zhuǎn)換。

std::fmt 模塊[20]

提供了格式化輸出的功能,包括對(duì)各種數(shù)據(jù)類型的格式化和打印。

std::num 模塊[21]

提供了對(duì)數(shù)字類型的抽象和操作,包括整數(shù)、浮點(diǎn)數(shù)和復(fù)數(shù)等。

std::cmp 模塊[22]

提供了用于比較和排序值的工具,包括比較運(yùn)算符的實(shí)現(xiàn)和排序函數(shù)。

std::hash 模塊[23]

提供了用于計(jì)算哈希值的功能,包括對(duì)各種數(shù)據(jù)類型的哈希函數(shù)實(shí)現(xiàn)。

std::ops 模塊[24]

提供了一些基本的運(yùn)算符和操作符的實(shí)現(xiàn),包括數(shù)學(xué)運(yùn)算符、比較運(yùn)算符和邏輯運(yùn)算符等。

std::iter 模塊[25]

提供了迭代器(Iterator)的功能,包括創(chuàng)建和操作迭代器的方法,以及一些常見的迭代器類型。

Rust的錯(cuò)誤處理相關(guān)模塊 Error handling:

模塊名

說(shuō)明

std::error 模塊[26]

提供了錯(cuò)誤處理的功能,包括定義錯(cuò)誤類型和處理錯(cuò)誤的方法。

std::panic 模塊[27]

提供了恐慌(Panic)機(jī)制,用于處理不可恢復(fù)的錯(cuò)誤情況。

std::option 模塊[28]

提供了 Option 類型,用于表示可能存在或不存在的值,用于處理可能出現(xiàn)空值的情況。

std::result 模塊[29]

提供了 Result 類型,用于表示成功或失敗的情況,通常用于處理可能出現(xiàn)錯(cuò)誤的函數(shù)返回值。

Rust的編譯處理相關(guān)模塊 compiler:

模塊名

說(shuō)明

std::hint 模塊[30]

提供了一些用于編譯器提示的宏,用于影響編譯器的優(yōu)化行為。

std::primitive 模塊[31]

提供了一些基本的類型和函數(shù),用于處理數(shù)字、字符和布爾值等基本數(shù)據(jù)類型。

std::prelude 模塊[32]

包含了一些基本的函數(shù)和宏,這些函數(shù)和宏在 Rust 標(biāo)準(zhǔn)庫(kù)中被廣泛使用,并且在每個(gè) Rust 程序中自動(dòng)導(dǎo)入。

Rust的跨語(yǔ)言調(diào)用相關(guān)模塊:FFI

模塊名

說(shuō)明

std::ffi 模塊[33]

提供了與外部函數(shù)接口(Foreign Function Interface,F(xiàn)FI)相關(guān)的功能,用于與其他語(yǔ)言或庫(kù)進(jìn)行交互。

Rust的網(wǎng)絡(luò)處理功能模塊 Networking:

模塊名

說(shuō)明

std::net 模塊[34]

提供了與網(wǎng)絡(luò)編程相關(guān)的功能,包括網(wǎng)絡(luò)協(xié)議、套接字(Socket)和網(wǎng)絡(luò)地址等。

Rust的IO處理模塊:

模塊名

說(shuō)明

std::io 模塊[35]

提供了與輸入輸出相關(guān)的功能,包括文件操作、緩沖、讀寫數(shù)據(jù)等。

Rust的OS特定的功能模塊:

模塊名

說(shuō)明

std::os 模塊[36]

提供了與操作系統(tǒng)相關(guān)的功能,包括文件系統(tǒng)操作、進(jìn)程管理和系統(tǒng)信息等。

Rust的時(shí)間處理模塊:

模塊名

說(shuō)明

std::time 模塊[37]

提供了與時(shí)間和日期相關(guān)的功能,包括時(shí)間的表示、解析、轉(zhuǎn)換和計(jì)算等。

參考資料:

  • [1]POSIX標(biāo)準(zhǔn):https://www.baike.com/wiki/%E5%8F%AF%E7%A7%BB%E6%A4%8D%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E6%8E%A5%E5%8F%A3/1647475
  • [2]std有專門的文檔:https://doc.rust-lang.org/std/index.html
  • [3]std::env 模塊:https://doc.rust-lang.org/std/env/index.html
  • [4]std::sync 模塊:https://doc.rust-lang.org/std/sync/index.html
  • [5]std::thread 模塊:https://doc.rust-lang.org/std/thread/index.html
  • [6]std::process 模塊:https://doc.rust-lang.org/std/process/index.html
  • [7]std::alloc 模塊:https://doc.rust-lang.org/std/alloc/index.html
  • [8]std::convert 模塊:https://doc.rust-lang.org/std/convert/index.html
  • [9]std::ptr 模塊:https://doc.rust-lang.org/std/ptr/index.html
  • [10]std::borrow 模塊:https://doc.rust-lang.org/std/borrow/index.html
  • [11]std::default 模塊:https://doc.rust-lang.org/std/default/index.html
  • [12]std::rc 模塊:https://doc.rust-lang.org/std/rc/index.html
  • [13]std::cell 模塊:https://doc.rust-lang.org/std/cell/index.html
  • [14]std::mem 模塊:https://doc.rust-lang.org/std/mem/index.html
  • [15]std::clone 模塊:https://doc.rust-lang.org/std/clone/index.html
  • [16]std::pin 模塊:https://doc.rust-lang.org/std/pin/index.html
  • [17]std::fs 模塊:https://doc.rust-lang.org/std/fs/index.html
  • [18]std::path 模塊:https://doc.rust-lang.org/std/path/index.html
  • [19]std::ascii 模塊:https://doc.rust-lang.org/std/ascii/index.html
  • [20]std::fmt 模塊:https://doc.rust-lang.org/std/fmt/index.html
  • [21]std::num 模塊:https://doc.rust-lang.org/std/num/index.html
  • [22]std::cmp 模塊:https://doc.rust-lang.org/std/cmp/index.html
  • [23]std::hash 模塊:https://doc.rust-lang.org/std/hash/index.html
  • [24]std::ops 模塊:https://doc.rust-lang.org/std/ops/index.html
  • [25]std::iter 模塊:https://doc.rust-lang.org/std/iter/index.html
  • [26]std::error 模塊:https://doc.rust-lang.org/std/error/index.html
  • [27]std::panic 模塊:https://doc.rust-lang.org/std/panic/index.html
  • [28]std::option 模塊:https://doc.rust-lang.org/std/option/index.html
  • [29]std::result 模塊:https://doc.rust-lang.org/std/result/index.html
  • [30]std::hint 模塊:https://doc.rust-lang.org/std/hint/index.html
  • [31]std::primitive 模塊:https://doc.rust-lang.org/std/primitive/index.html
  • [32]std::prelude 模塊:https://doc.rust-lang.org/std/prelude/index.html
  • [33]std::ffi 模塊:https://doc.rust-lang.org/std/ffi/index.html
  • [34]std::net 模塊:https://doc.rust-lang.org/std/net/index.html
  • [35]std::io 模塊:https://doc.rust-lang.org/std/io/index.html
  • [36]std::os 模塊:https://doc.rust-lang.org/std/os/index.html
  • [37]std::time 模塊:https://doc.rust-lang.org/std/time/index.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色综合亚洲天天综合网站 | 国产一区二区三区免费在线视频 | 范冰冰好紧好滑好湿 | 欧美最猛性xxxxx男男 | 久久久久久免费高清电影 | 久久亚洲精品AV成人无 | 午夜小视频免费观看 | 午夜影院0606 | katsumi精品hd| 99爱在线观看精品视频 | 538精品视频 | 99精彩视频在线观看 | 图片专区小说专区卡通动漫 | 国产成人精品在线 | 亚洲成色www久久网站 | 星空无限传媒xk8129 | 99av涩导航 | 国产综合成色在线视频 | a黄毛片 | 2021最新国产成人精品视频 | 四虎永久在线精品免费影视 | 四虎传媒| 我要看靠逼片 | 88av免费观看 | 狠狠色| 91制片厂制作传媒网站破解 | 精品国产品香蕉在线观看75 | 青青青久热国产精品视频 | 亚洲成人网在线 | 俄罗斯图书馆无打码久久 | 男生和女生艹逼 | porno日本大学生高清 | 我把校花黑色蕾丝胸罩脱了 | 精品精品久久宅男的天堂 | 成年美女黄网色大观看全 | 美女扒开屁股让我桶免费 | 99视频一区 | a级免费观看 | 免费超级乱淫播放手机版 | 男男调教打屁股 | 日本一在线中文字幕天堂 |