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

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Linux|Centos|Ubuntu|系統進程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務器之家 - 服務器系統 - Linux - Linux的層級架構與Rust的主要模塊crate總結,值得轉發收藏

Linux的層級架構與Rust的主要模塊crate總結,值得轉發收藏

2023-12-31 17:02未知服務器之家 Linux

Linux的層級架構 每個操作系統都有一個內核,內核封裝了底層硬件設備管理、內存管理、網絡數據協議轉化和收發傳輸、文件系統讀寫等。從這個圖可以看到,內核將系統硬件與應用程序進程連接起來,隱藏了上層下層交互的一些

Linux的層級架構

每個操作系統都有一個內核,內核封裝了底層硬件設備管理、內存管理、網絡數據協議轉化和收發傳輸、文件系統讀寫等。從這個圖可以看到,內核將系統硬件與應用程序進程連接起來,隱藏了上層下層交互的一些細節,各司其職。

Linux的層級架構與Rust的主要模塊crate總結,值得轉發收藏

這些分層包括:

  • 用戶空間程序
  • 編譯器
  • 終端
  • 防火墻
  • 系統調用的跨平臺API(特定于平臺的系統調用包裝API)
  • Rust標準庫
  • libc(或等效的API)
  • kernel,操作系統的核心模塊
  • 系統資源
  • 內存
  • 文件系統
  • 網絡
  • 硬件和其他設備(包括鍵盤、鼠標、監視器、磁盤驅動器)

Rust的標準庫的功能劃分

而Rust標準庫,很好的利用了操作系統內核提供的API。

Rust標準庫是Rust程序進入Linux操作系統內核函數的主要接口,它在內部使用libc(在Windows系統使用其他等效的庫)來調用內核提供的系統調用。

從Rust程序中發起系統調用,以實現管理和操作各種系統資源(如圖)。

Linux的層級架構與Rust的主要模塊crate總結,值得轉發收藏

libc(或其變體)為類UNIX操作系統上的系統調用提供了一個包裝器,如Linux內核實現了POSIX標準指定的數百個POSIX API(對于Windows,系統調用有等效的API,也實現了POSIX標準[1])。

作為標準庫,Rust標準庫是跨平臺的,Rust標準庫的系統調用的細節是從Rust開發人員那里抽象出來的。Rust也支持不依賴于標準庫的運行方式(no_std 方式),Rust直接操控底層硬件(如應用在嵌入式系統開發場景),此時Rust就做了操作系統本身的工作。

對于大部分軟件開發工程師而言,他們用Rust主要開發應用層軟件,也就是運行在用戶空間的程序。它們基于標準庫編寫,實現各種業務功能。應用層的軟件并非所有模塊和函數都涉及到系統調用(例如一些用于操作字符串和處理錯誤的函數,就無需調用系統調用)。

Rust標準庫包括幾大領域的模塊,包括四大類:

第一類,Rust語言原語

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

如有符號整數、布爾值、浮點數、字符、字符串、數組、元組、切片。這些由Rust編譯器負責實現。

Linux的層級架構與Rust的主要模塊crate總結,值得轉發收藏

Rust標準包括原語,并在它們之上構建。

第二類,alloc crate

與堆分配值的內存分配相關的類型、函數和特征。

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

第三類,core crate

作為Rust標準庫的基礎。充當Rust語言與標準庫之間的鏈接,提供在Rust原語之上實現的類型、特征、常量和函數,并為所有Rust代碼提供基礎構建塊,它是跨平臺的,沒有任何指向操作系統或其他外部依賴的鏈接。由于較少直接用到core crate,所以本文不做過多介紹。

第四類,模塊(標準庫的其他crate)

是標準庫的一部分,模塊crate包括針對并發、I/O,文件系統、網絡、異步I/O、錯誤處理等功能,以及與特定操作系統相關的函數,Rust的官網對std有專門的文檔[2]。例如

  • 為用戶程序在多個線程上并發運行的功能在std::thread模塊中;
  • 用于處理同步I/O的功能在std::io模塊中提供;
  • 針對特定os的模塊,主要在std::os模塊中實現。

下圖展示了Rust標準庫各個領域功能涉及到的具體std模塊(如std::io、std::os等)

Linux的層級架構與Rust的主要模塊crate總結,值得轉發收藏

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

Rust的并發控制相關模塊 conurrency:

模塊名

說明

std::env 模塊[3]

包含與環境變量交互的功能,包括讀取、設置和刪除環境變量。

std::sync 模塊[4]

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

std::thread 模塊[5]

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

std::process 模塊[6]

提供了與操作系統進程交互的功能,包括運行外部命令、啟動新進程以及與進程進行通信。

Rust的內存管理相關模塊 memory management:

模塊名

說明

std::alloc 模塊[7]

提供了內存分配器的功能,包括分配和釋放動態內存。

std::convert 模塊[8]

提供了用于不同類型之間轉換的工具函數。

std::ptr 模塊[9]

提供了對指針的操作和轉換功能,包括對裸指針的操作。

std::borrow 模塊[10]

提供了用于管理借用的功能,包括&&mut借用運算符的實現。

std::default 模塊[11]

提供了默認 trait 實現的功能,用于為不提供具體實現的類型提供默認行為。

std::rc 模塊[12]

提供了引用計數(Reference Counting)的功能,用于實現線程安全的共享內存。

std::cell 模塊[13]

提供了可變性的 Cell 和 RefCell 類型,用于在多線程環境下安全地共享可變狀態。

std::mem 模塊[14]

提供了與內存相關的功能,包括內存布局、內存對齊和內存操作。

std::clone 模塊[15]

提供了用于實現克隆(Clone) trait 的功能,用于復制和克隆復雜的數據結構。

std::pin 模塊[16]

提供了 Pin 類型,用于固定借用的生命周期,以避免懸垂指針和數據競爭問題。

Rust的文件系統操作相關模塊 File system:

模塊名

說明

std::fs 模塊[17]

提供了與文件系統操作相關的功能,包括文件和目錄的創建、讀取、寫入和刪除等操作。

std::path 模塊[18]

提供了與文件路徑相關的功能,包括路徑的解析、構造和操作。

Rust的數據處理相關模塊 data processing:

模塊名

說明

std::ascii 模塊[19]

提供了與 ASCII 碼相關的功能,包括對 ASCII 字符的操作和轉換。

std::fmt 模塊[20]

提供了格式化輸出的功能,包括對各種數據類型的格式化和打印。

std::num 模塊[21]

提供了對數字類型的抽象和操作,包括整數、浮點數和復數等。

std::cmp 模塊[22]

提供了用于比較和排序值的工具,包括比較運算符的實現和排序函數。

std::hash 模塊[23]

提供了用于計算哈希值的功能,包括對各種數據類型的哈希函數實現。

std::ops 模塊[24]

提供了一些基本的運算符和操作符的實現,包括數學運算符、比較運算符和邏輯運算符等。

std::iter 模塊[25]

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

Rust的錯誤處理相關模塊 Error handling:

模塊名

說明

std::error 模塊[26]

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

std::panic 模塊[27]

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

std::option 模塊[28]

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

std::result 模塊[29]

提供了 Result 類型,用于表示成功或失敗的情況,通常用于處理可能出現錯誤的函數返回值。

Rust的編譯處理相關模塊 compiler:

模塊名

說明

std::hint 模塊[30]

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

std::primitive 模塊[31]

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

std::prelude 模塊[32]

包含了一些基本的函數和宏,這些函數和宏在 Rust 標準庫中被廣泛使用,并且在每個 Rust 程序中自動導入。

Rust的跨語言調用相關模塊:FFI

模塊名

說明

std::ffi 模塊[33]

提供了與外部函數接口(Foreign Function Interface,FFI)相關的功能,用于與其他語言或庫進行交互。

Rust的網絡處理功能模塊 Networking:

模塊名

說明

std::net 模塊[34]

提供了與網絡編程相關的功能,包括網絡協議、套接字(Socket)和網絡地址等。

Rust的IO處理模塊:

模塊名

說明

std::io 模塊[35]

提供了與輸入輸出相關的功能,包括文件操作、緩沖、讀寫數據等。

Rust的OS特定的功能模塊:

模塊名

說明

std::os 模塊[36]

提供了與操作系統相關的功能,包括文件系統操作、進程管理和系統信息等。

Rust的時間處理模塊:

模塊名

說明

std::time 模塊[37]

提供了與時間和日期相關的功能,包括時間的表示、解析、轉換和計算等。

參考資料:

  • [1]POSIX標準: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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91精品天美精东蜜桃传媒免费 | 国产成人欧美视频在线 | 性吟网| 国产传媒天美果冻 | 日韩欧美国产在线 | 1717she精品视频在线观看 | 免费观看大片毛片 | 激情偷拍网 | 4虎影视国产在线观看精品 4s4s4s4s色大众影视 | 亚洲乱亚洲23p女 | 国产精品原创永久在线观看 | 男人和女人全黄一级毛片 | 德国高清freexxxx性 | 日本福利网 | 校园纯肉H教室第一次 | 精品国产国产综合精品 | 视频久久精品 | 双子母性本能在线 | 龟甲情感超市全文阅读 小说 | 我的好妈妈7中字在线观看韩国 | 初尝黑人巨大h文 | 色成人综合网 | 日韩在线 中文字幕 | 日产精品卡一卡2卡三卡乱码工厂 | 欧美成人在线影院 | 奶茶视频有容乃大 | 夫妇野外交换激情 | 暖暖日本在线观看免费 | 憋尿调教绝望之岛 | 含羞草国产亚洲精品岁国产精品 | 精品午夜久久网成年网 | 欧美人禽杂交av片 | 精品一区二区免费视频蜜桃网 | 秋霞黄色 | 亚洲国产日韩欧美一区二区三区 | 国内自拍网红在综合图区 | 国产福利一区二区在线精品 | zozzozozozo大| 国产精品久久久久一区二区三区 | 奇米色7777 | 女人特黄大aaaaaa大片 |