偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

怎樣向一個外行人解釋操作系統(tǒng)內核?去看《黑客帝國》

系統(tǒng) Linux 系統(tǒng)運維
今年早些時候,我新加入了一個大多數(shù)從事研究社會科學和政治小組,然后我得向他們介紹一下我目前正在從事的工作。在這大概有10個人的小組中,有一兩個人對內核的概念是有一個初步的了解(實際上因為他們是工科學生),但是小組中的其他人卻對內核茫然無知—他們等著我給他們說明解釋一下。

[[117832]]

今年早些時候,我新加入了一個大多數(shù)從事研究社會科學和政治小組,然后我得向他們介紹一下我目前正在從事的工作。在這大概有10個人的小組中,有一兩個人對內核的概念是有一個初步的了解(實際上因為他們是工科學生),但是小組中的其他人卻對內核茫然無知—他們等著我給他們說明解釋一下。

那么,對于那些有點基本概念的工科生,首選方法就是打一個有關于汽車的比方(至少得是男性聽眾)。然而,實際上你能把汽車上的什么東西來比作內核呢?你是不能直接把內核比作發(fā)動機,或者底盤,甚至是車輛行駛的道路。當你試著去解釋一個內核程序員能夠利用操作系統(tǒng)做什么的時候就更糟糕了。在將汽車作為喻體時,內核到底是什么呢?一個內核程序員并不能直接定義為一個技工。那么,定義為汽車設計師之類的嗎?經(jīng)過長時間的斷斷續(xù)續(xù)的解釋和遲疑,我試著先向小組中的女孩們解釋,這就像是內核開發(fā)者為奔跑的汽車設計物理定律。很遺憾,她們仍然不相信。

你有更好地解釋嗎?

《黑客帝國(The Matrix)》于1999年上映的,因此,很快我就對操作系統(tǒng)開始感興趣,最后我還在FreeBSD(一種免費的Unix系統(tǒng))項目中成為一名內核開發(fā)員。但是同時,我一直學習并癡迷于《黑客帝國(The Matrix)》,花費了大量的時間。

在二十一世紀初的某個時候,大概是在03或04年,我寫下了一篇文章,我將《黑客帝國》中人物和他們發(fā)生的事以及它的續(xù)集與一個(虛擬的)操作系統(tǒng)做一個系統(tǒng)的類比。為了將久遠的這篇文章保存下來,防止內容的丟失在被遺忘的服務器上,就將它遷移到云上,我在下面復制粘貼了該文章的初始內容。提示:你可以將該比喻引申的更遠。

既然操作系統(tǒng)的設計,實現(xiàn)和維護是我最大的興趣之一,而且我在第一時間就觀看了《黑客帝國》,于是便對電影里的一些概念進行了思考,并認為它們與操作系統(tǒng)存在某種程度上的相似之處:

Matrix世界:

相當于一個正在運行的具有用戶空間的操作系統(tǒng)(我們人類居住的普通世界,內核(“Matrix”本身))。顯然的,這是一個頗有缺陷的操作系統(tǒng)。。。

民眾:

相當于進程,包括內核進程和用戶進程。一般進程,“非特權”進程和具有root權限的后臺進程(“特工”)還是有很大的區(qū)別。具有root權限的后臺進程可以使用特權端口,銷毀隨機進程,管理內存等等。

Matrix:

相當于內核。它看上去是基于消息傳遞的內核結構,而并非是微內核結構(盡管它們具有微內核的某些部分,比如擁有大量內核進程,進程之間都是嚴格獨立的,以及已提到的消息傳遞機制)。內核管理所有的進程,以及進程上的操作(比如保持進程活躍,為進程服務,回收進程)。但是這仍有一個明顯的安全缺陷:某些用戶進程能夠將它們的部分代碼傳送到內核空間并執(zhí)行(因為一個bug)。只有某些系統(tǒng)調用受到影響(類似于 ”phones”),這種擴大了的特權篡改了用戶進程的返回棧,因此,如果該進程接收到一個信號,它會產(chǎn)生段錯誤并被作為垃圾回收(你如果在Matrix中被殺掉的話,那么你就真的死掉了)。

先知(Oracle):

相當于進程(任務)調度器。擁有處理監(jiān)聽(資源利用率)的所有數(shù)據(jù)以及提前(這很顯然)知道怎樣對它們進行最優(yōu)調度。

特工(Agents):

相當于系統(tǒng)監(jiān)控/入侵防護/具有啟發(fā)式操作的防護系統(tǒng)(IDS(入侵檢測系統(tǒng))/IPS(信息處理系統(tǒng)))。它們中絕大多數(shù)都有一個內核部分(或內核模塊)但基本上卻是那些具有超級用戶特權的后臺進程在用戶空間運行。它們的職責是發(fā)現(xiàn)試圖入侵系統(tǒng)安全的進程并銷毀掉。

列車員:

相當于內核和用戶空間的網(wǎng)關/信息傳遞隊列。你如果想要合法地在用戶空間和內核進行數(shù)據(jù)傳遞必須通過這里來進行。當然,你也可能永遠被困在排隊隊列中。

邪惡宗師—梅羅紋奇(Merovingian):

相當于網(wǎng)絡/IPC(進程間通信)棧。它的職責是掌握進程之間都發(fā)生了什么。輸入/輸出數(shù)據(jù)的一個偶然錯誤將以一個bug的形式表現(xiàn)出來。

“鬼魅”(Ghost):

相當于老版本API/KPI的兼容器。由于歷史原因,這些代碼并不完善,但與某些內核進程相連的代碼卻不應該不完整。

“建筑師”(Architect):

相當于硬件上的內核監(jiān)控(管理者),負責監(jiān)控進程,銷毀那些“畸形”進程并對銷毀的進程進行重啟。由于它是一個實時的具有高度可靠性的系統(tǒng),在硬件上進行調試和監(jiān)控顯然具有最高的優(yōu)先級,而且還絕對是可靠的(因此,為了降低出錯的可能性,也降低它的復雜性)。由于它​頻繁地進行可用性檢查,造成了過度的錯誤配置,​消耗了太多的資源,因此影響到了操作系統(tǒng)的正常運作。

關鍵人物—制鑰者:

相當于安全/特權子系統(tǒng)。它很穩(wěn)定,但不幸的是需要依賴不完善的VM(虛擬內存)系統(tǒng)和IPC系統(tǒng),因此它可被進程利用來獲取更多的特權。

Matrix系統(tǒng)設計:

在系統(tǒng)高度負載的情況下(大量的進程,頻繁的內存讀寫),VM(虛擬內存)系統(tǒng),進程管理系統(tǒng)和調度器之間有一個設計缺陷。這是一個復合錯誤,至少會導致三種問題的產(chǎn)生:1、內存頁被破壞或者內存頁分配給那些不屬于它們的進程。由于內核和用戶空間共享虛擬內存,為了防止敏感數(shù)據(jù)的暴露,提高安全性,任何一方的進程都可以因為得到另一方的內存頁而被銷毀。2、進程間通信,這是非常糟糕的,甚至比進程的數(shù)據(jù)結構被破壞或者內存裝載太頻繁而造成死鎖,而不得不等待緩沖區(qū)還要糟糕。3、系統(tǒng)監(jiān)控變得不穩(wěn)定,循環(huán)地銷毀和重啟進程,察覺不到這樣的操作會額外增加內存和進程的負擔而變得更糟糕,最后極大地增長了進程間虛擬內存頁被破壞的速度。

史密斯特工:

相當于有特權的IPC后臺程序,具有部分內核模塊功能。它與內核模塊關系密切,且能夠不通過完整性檢查而與內核共享數(shù)據(jù)結構。一旦它被另一個特權進程銷毀掉,它也能藏身于一個系統(tǒng)調用中間以便于監(jiān)控者重啟它,此時它的進程描述符也被破壞,這樣使得它的大部分程序代碼將在內核中執(zhí)行。它將繼續(xù)以這種受損狀態(tài)長時間工作,鍥入到一個循環(huán)中,并將進程錯誤地​標記為安全漏洞,同時重寫​它的某些內存頁。

尼奧(Neo):

最初是一個用戶空間的網(wǎng)絡服務進程,虛擬內存的損壞導致它被賦予了超級用戶的特權以及具有CPU高優(yōu)先級。最后它得到可執(zhí)行的內存頁與IDS進程Simth的混合,但卻不是數(shù)據(jù)頁。很快它也開始銷毀進程,包括Smith和它自己被損壞的部分。

結局:

最后Smith進程試圖殺死調度者進程,但由于他本是也是通過該調度者調度的,他并不能這么做。系統(tǒng)變得畸形是因為調度者不能再執(zhí)行任務,包括中斷服務,但是在調度者的虛擬內存鏡像(同樣該鏡像也偶然地與Neo進程進行了部分共享)里的部分Smith代碼卻仍然可以執(zhí)行。由于只有兩個進程可以運行,他們都想殺掉對方。與此同時,由于沒有中斷服務,硬件的監(jiān)視時鐘別喚醒,它插入了一個NMI(不可屏蔽的中斷),這樣就又喚醒了監(jiān)控系統(tǒng)。這就使得系統(tǒng)處于臨界狀態(tài)并開始殺掉所有的進程,然后重啟被殺掉的進程來使系統(tǒng)再次啟動。結束!

分析總結

在操作系統(tǒng)的設計​時候有一個內在的缺陷,特別是在虛擬內存,進程間通信和監(jiān)控子系統(tǒng)這幾方面,這將導致進程間的全局內存被破壞以及在少量進程的地址空間產(chǎn)生致命的缺陷。

建議:

要保證適宜的進程優(yōu)先級,必須進行更多的微調,減少優(yōu)先級反轉和失衡。很可能要重寫​虛擬內存系統(tǒng),開發(fā)消耗更少資源的版本來取代IDS系統(tǒng)。如果系統(tǒng)負載處于某個閥值之上,系統(tǒng)監(jiān)視器必須要進行修正,而不會再啟動大量的操作。

好了,這就是一篇有關The Matrix且​不涉及任何形式“自由意志”的闡述。

原文鏈接:http://www.techug.com/jul-how-do-the-matrix-as-an-operating-system

責任編輯:林師授 來源: 程序師
相關推薦

2014-04-03 09:36:37

內存溢出內存原理

2018-01-29 10:00:59

2015-09-18 12:58:29

外行大數(shù)據(jù)

2011-09-05 17:11:51

2010-05-13 14:52:26

思科打假外行人內行人

2021-02-22 02:25:36

中間人攻擊加密網(wǎng)絡安全

2009-01-16 22:37:44

2013-12-23 09:31:37

2015-12-10 09:47:37

2014-07-07 09:24:04

2010-09-20 11:39:50

2015-08-20 10:32:32

2021-08-29 23:18:07

手機功能智能

2009-08-28 17:58:16

2020-06-03 09:19:24

內存SwiftAPI

2009-04-30 16:54:11

2010-02-26 14:13:51

Linux操作系統(tǒng)

2009-12-11 17:20:08

2009-12-09 16:20:37

Linux操作系統(tǒng)

2022-01-13 15:49:49

腦機接口機器人工智能
點贊
收藏

51CTO技術棧公眾號