成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

熟悉而陌生-那些個系統抽象

開發 開發工具
2021年的圖靈獎是對編程語言和編譯器抽象的認可,揭示了更高級抽象的進展, 這些高級的“系統抽象”來處理大型系統。

軟件系統中概念的抽象,是組織思維以加快設計和構建可靠計算的思維結構,是計算思維的基本原則。2021年的圖靈獎是對編程語言和編譯器抽象的認可,揭示了更高級抽象的進展, 這些高級的“系統抽象”來處理大型系統。

然而, 硬幣是兩面的,抽象的好處顯而易見,但那些抽象的緣由較少被提及,抽象的泄漏與缺失更少被人關注,或許,全面地了解系統抽象才能真正地理解整個系統。從日常中的文件開始,到進程與操作系統,再到其他的系統抽象,拋磚引玉。

文件的抽象

文件是最常見的數字對象,是一個字符串的容器,有名稱和大小。文件本身是存儲在磁盤內存中的一組固定大小的記錄抽象,它們是以索引表為根的樹形結構,而用戶看不到那些記錄、樹和索引表。

“文件管理器”是管理文件的軟件子系統,提供了六種基本操作。CREATE 創建一個新文件,DELETE 刪除一個文件。OPEN 將所有文件組件記錄的副本收集到一個主內存緩沖區中的線性文件映像中。CLOSE 將緩沖區復制回其組件記錄,并刪除緩沖區。文件的直接讀取并寫入內存結構的速度會較慢,緩沖區成為了文件管理器管理的又一種類型的對象。READ 操作將打開的緩沖區中的內容復制到從地址 s 開始的長度為 l 的調用方內存區域,可以表示為(s,l)。WRITE 操作將數據從調用方的內存區域(s,l)復制到緩沖區中,替換緩沖區中以前的內容。

在這里,類型 f 意味著文件能力和類型 b 緩沖區能力。CREATE 命令創建一個文件,該功能可用作 DELETE 和 OPEN 命令的參數。OPEN 命令創建了一個可以由 CLOSE、 READ 和 WRITE 命令使用的緩沖區功能。隱藏在文件管理器中的表用于將文件句柄(fh)映射到磁盤和緩沖區句柄(bh)映射到主內存緩沖區。

這當然是文件系統接口的簡化視圖。真正的文件系統可能有更多的操作,在磁盤上使用更復雜的樹結構,并允許增量讀寫緩沖區。

進程的抽象

也許,操作系統中最基本的抽象是“進程”,即執行中的程序,進程的抽象為了解決早期操作系統的可靠性問題而發明的。1960年至1965年間,操作系統設計者著手建造功能強大的計算機系統,可以在大型用戶網絡中廉價分配計算能力。這些系統旨在整合分時、虛擬內存、輸入輸出流、共享文件系統、目錄系統和編程接口等一系列功能。這些功能最大化信息共享,最小化開發時間,并將CPU 和內存資源分給許多用戶。

那時候,大型程序的主要抽象是“模塊和接口”,它要求將復雜的系統分解成簡單的模塊,通過它們的接口交換信息。例如,一個操作系統可以使用CPU 調度、內存管理、輸入輸出、文件、目錄和編程接口的模塊。然而,無論設計人員如何仔細地制定模塊功能和接口,當模塊被連接在一起并受制于用戶工作負載時,系統總是會崩潰,調試也極其困難。

問題是,模塊是一種控制結構,用于指導 CPU 一次執行一個任務。然而,操作系統必須為許多用戶管理許多計算。很難將許多用戶同時通過模塊及其接口的工作可視化。大系統不僅僅是擁有更多用戶的小系統,多個用戶在實現私有內存、共享文件并爭奪有限的 CPU、設備和內存資源,這會涉及到競爭條件、死鎖、繁忙等待、內存級別之間的數據循環、文件訪問、用戶通過創建新的自治服務擴展系統、預測吞吐量和響應時間。由此產生了一種新的思維方式,即并發控制。

進程的抽象成為了一個的優雅解決方案。進程不僅僅是執行中的程序,而是一個根據請求為其他進程執行服務的自治代理。進程是需要 CPU 時間和內存空間的實體,與其他進程同步,創建和訪問文件,搜索目錄,響應事件,并與其他進程結合以形成動態所謂計算結構。

進程的抽象結果產生了另一個重要的抽象概念ーー非終止計算,服務流程被設計成無盡循環(while true)。在完成請求之后,服務流程將返回到“原點”,并等待下一個傳入請求。隱藏在后臺的守護進程執行有益的管理功能,例如回收內存或將修改后的內存內容寫回磁盤。從連續運行計算系統的角度來設計,操作系統被視為一個協作的社會,大多是非終止的進程,而不是堆積如山的模塊。

相比之下,目前大多數編程類的應用成為了獨立啟動和終止的程序, 是從輸入開始,到輸出結束的程序。在這種情況下,非終止程序的進程看起來像一個 無限循環的bug。

操作系統的抽象

操作系統可以描述為一個“抽象機器”,其指令集是在接口中提供的操作,隱藏了內部數據結構跟蹤所有對象。文件管理器就是一個例子。在操作系統或網絡中,可以將功能抽象成一系列的層次。每個層次都可以由在較低層次上定義的抽象組成,但不能使用任何在較高層次上的抽象信息。

第一個操作系統的分層實例是 Edsger Dijkstra 大約在1965年設計的,抽象為以下邏輯層次:

  • Interrupts and stacks:中斷和堆棧
  • Processes and semaphores:進程和信號量
  • Virtual memory:虛擬內存
  • Message exchange:信息交換
  • Internet naming:網絡命名
  • I/o 流:文件、管道、設備
  • Directories :目錄
  • Virtual machines :虛擬機
  • user interface :Shell (用戶界面)
  • Services:服務

1-5是微內核,程序以內核模式運行,可以訪問所有內存。級別6-10是用戶內核,程序在用戶模式下運行,并且只能訪問自己進程的私有內存。每個級別都是一個抽象機器,用于管理該級別的對象類。第10層是內核外部用戶服務的集合,例如內核圖形用戶界面、應用程序和性能分析工具。每個用戶服務都有自己的系統抽象。

對象和操作由較低級別的對象和操作組成。實際上,一個層次的抽象機器被嵌套起來,以便上一級別使用。抽象機器的用戶界面由所有嵌套機器的聯合組成。這種嵌套隱藏了較低級別的細節,令很多人茫然不解。

在這個抽象分層中,程序必須設計成只調用下面的層次,而不向上調用,免了循環等待和自引用代碼的循環,并使系統能夠在一個分層上被證明和測試。例如,假設文件管理器將文件用作目錄的容器,這似乎需要從文件管理器(Level 6)向上調用目錄管理器(Level 7) ,請求創建文件管理器可以填充的目錄。為了避免向上調用,我們將創建目錄并用文件填充它的職責移到 shell (Level 9)。Shell 可以調用 Level 7創建目錄,然后調用 Level 6將文件加載到目錄中。這種思維方向的重新定位簡化了代碼,并消除了循環性帶來的任何問題。

分層的系統抽象異常的強大,并沒有因為簡單化和過度約束使得功能缺失,但這些約束確實引入了更多的復雜性。毫無疑問,分層的系統會產生更小的內核。較小的內核更快,更容易測試和驗證。如今,唯一可證明安全的操作系統是通過抽象分層構造的。

系統抽象

系統的抽象對于構建具有大量進程、用戶、設備和網絡連接的大型復雜系統是必不可少的。每個主要的計算系統領域都有自己的特征抽象。例如,互聯網有 IP 協議用于尋址主機,TCP 協議用于克服嘈雜的傳輸,域名,url,網頁,標記語言等等。

云服務中具有通用的無限名稱空間、存儲文件的不可偽造的指針、數據中心、防止數據丟失的冗余等等。數據庫系統具有記錄、字段、表、投影、連接、查詢、原子事務、持久存儲、文件對存儲的永久承諾等等,不勝枚舉。

計算系統的一個主要復雜性來源是大量的數字對象。系統抽象通過兩種方式簡化了這種復雜性。首先,將所有相同類型的對象組合到一個類中,并為所有這些對象設計一個管理器。管理器為允許進程在這些對象上執行的操作提供了一個接口。其次,類管理器為對象分配唯一的名稱,并驗證每個訪問權限,必須保護包含這些名稱和訪問代碼的指針不被更改。

在操作系統和云存儲中,通過一種稱為“capability”的較低級別的抽象,由類型、訪問、句柄等字段組成,Type 字段指示指向的對象類型,訪問字段是一個多位代碼,它指定可以在該對象上執行類操作的哪個子集,句柄字段是對象的唯一代碼,它將對象與同類型的所有其他對象區分開來。只要“capability”保持在內核空間中,它們就是受保護的,因為沒有任何用戶進程能夠改變內核空間中的任何內容。當它們被傳遞到外部時,它們被加密校驗和所增強,使收件人能夠確認它們自創建以來沒有被更改。事實上,“capability”已經成為了實現面向對象編程語言的原則。

小結

系統抽象是用來設計和研究大規模、復雜的信息系統的工具之一。軟件的驚人進步一般都是通過系統抽象實現的,然而,很少有大型程序抽象的解析說明,也缺少系統抽象的緣由介紹。如果沒有這些高級的抽象概念,不了解這些抽象的得失,很可能是一種缺憾。

責任編輯:武曉燕 來源: 半吊子全棧工匠
相關推薦

2022-02-09 07:40:42

JavaScript前端面試題

2021-07-26 06:57:58

系統CSS Content

2024-03-15 08:18:25

volatileAtomic關鍵字

2016-07-21 17:26:52

存儲,災備

2021-03-02 22:08:47

JavaScript

2017-10-25 13:23:36

互聯網產品推薦系統技術演進

2009-06-24 16:27:09

路由器定義集成服務路由

2019-07-19 15:21:00

SQL編程語言NOSQL

2018-03-07 09:42:07

2020-01-18 18:44:39

網絡硬盤百度固態硬盤

2009-04-29 23:21:07

2016-01-12 09:49:35

AndroidiOSWindows Pho

2013-12-26 14:23:03

定位系統GPS監測

2023-03-13 14:08:00

系統抽象操作系統大型系統

2012-11-02 17:03:45

2011-04-29 12:54:05

筆記本屏幕

2017-01-09 17:09:41

CES科技產品

2018-03-22 09:51:48

CAN網絡協議

2013-08-20 16:03:51

ERPERP系統ERP重構

2010-06-10 15:03:13

協議轉換器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品视频一区二区 | 久久亚洲欧美日韩精品专区 | 亚洲综合无码一区二区 | 亚洲一区二区三区四区在线观看 | 高清视频一区二区三区 | 欧美日韩综合视频 | 成人精品在线观看 | 国产精品视频一区二区三区不卡 | 免费午夜电影 | 中文成人无字幕乱码精品 | 99免费看 | 亚洲国产成人在线视频 | 久久精品中文字幕 | 91精品麻豆日日躁夜夜躁 | 99爱国产 | 97av视频 | 欧美精品一区在线发布 | 亚洲欧洲激情 | 久久专区 | 91人人澡人人爽 | 国产高清一区二区三区 | 亚洲va国产日韩欧美精品色婷婷 | 国产欧美一区二区三区日本久久久 | 黑人巨大精品欧美一区二区免费 | 久久久久久成人 | 国产精品波多野结衣 | 国产精品久久久久久久久久免费看 | 欧美一区二区三区精品 | 国产精品一区久久久 | 国产在线视频一区二区 | 狠狠色综合久久婷婷 | 成人av免费| 国产精品久久久久久影视 | 一区二区精品视频 | 激情欧美一区二区三区中文字幕 | 国产精品日韩欧美一区二区三区 | 91国产在线播放 | 99精品国产一区二区青青牛奶 | 亚洲精品高清视频在线观看 | 日本福利视频免费观看 | 国产视频1区 |