你知道嗎?在你電腦的 cpu 裡,還藏著一台「小電腦」,不僅檔案系統、驅動、聯網功能一應俱全,還能……能做的實在太多了。最可怕的是:你沒法關掉它……
問你兩個問題:
首先,你的電腦執行什麼作業系統?
無非是 windows 10、macos,或者成百上千種 linux 發行版的其中乙個吧……
第二個問題:你的伺服器,執行什麼作業系統?
基本都是 linux 吧……
但如果矽星人告訴你:你的電腦和伺服器裡,其實還藏著一台你根本不知道的神秘「小電腦」,執行著乙個你根本不知道的神秘作業系統呢?來,搬好小板凳,開講。
隱藏在 cpu 裡的神秘「os」
再問乙個問題:你的電腦或者伺服器用的什麼處理器?
只要是 mac/windows pc/chromebook,而且是最近幾年購買的——肯定用的是英特爾的處理器,沒有懸念。
而我們今天的主角,這台神秘的電腦和作業系統,就藏在英特爾處理器裡。從 2006 年往後所有的英特爾處理器裡,都植入了乙個名叫 amt 的技術。它的全稱是:active management technology(主動管理技術,也叫 me, management engine)
這麼一大段字,矽星人幫你長求總一下:
首先,amt 能夠讓英特爾遠端維護公升級處理器韌體,以保護計算機不在處理器這個環節被攻破。那麼,amt 又是怎麼實現的呢?其次,如果你被解雇了,公司 it 可以在處理器的層級遠端控制你的電腦,該鎖定鎖定該重置重置,確保公司資料不外洩。
這是因為,處理器裡本來就執行著乙個名叫 minix (mini-unix) 的作業系統。它的體量非常小,通常只有 5mb 左右,在處理器出廠之前就已經寫了進去。
也就是說:minix 是世界上最流行的作業系統——比 linux 還流行……
有了 amt 和 minix,你的 cpu,其實不是你的 cpu 了。amt 就像寄生在你電腦裡的一台「小電腦」一樣。
它不但不受宿主的控制,反而會控制宿主!就像科幻電影《黑衣人》(mib) 的這一幕:
可是,amt 怎麼就控制了我們的電腦呢?
大家都知道 google 雲計算很厲害。作為雲計算行業的巨頭之一,google 都的資料中心 不是每一台都執行 tpu 啦……還是要採購非常多的英特爾處理器。
但 google 的工程師們發現:在我們的 linux 作業系統和處理器硬體之間,還藏著至少 2½ 個核心;這些核心不但對 google 完全不開放,而且還很容易遭受黑客攻擊,攻擊還有能力重寫核心本身,google 無法修復。
在下圖中,google 的工程師描述了這 2½ 到底都包括了些什麼
你會看到 ring 這個東西。它代表的是許可權層級,數字越低離使用者越遠、許可權越高。ring 3 是使用者在作業系統上能接觸的內容,比如軟體或者檔案;ring 2 到 1則是驅動,ring 0 是作業系統核心,也是使用者,而且是非常有經驗的使用者,比如專業的 it 人士所能觸碰和修改的最低層級。
但 ring 0 並不是重點……再往下還有 ring -1、-2 和 -3。一般人並不知道有負數層的存在,在大部分 ring 示意圖離都根本看不到負數層,因為它們並不是開放的。
負數層都在處理器核心上。如果你刷過 android 手機第三方核心,可能知道 cpu 核心資源是可以調整的,這個能力通常在 ring -2 上。至於 ring -3,許可權已經非常之高了……別說你或者 it 小哥,連電腦公司(戴爾、惠普、蘋果)都觸碰不到。
而 minix 就執行在 ring -3 上。這裡,是屬於晶元廠商的「絕對領域」。
麻雀雖小,五臟俱全
這個作業系統裡都裝了些什麼呢?google 的工程師繼續研究,發現裡面東西還真不少……
VC6正在被拋棄?
我還在用的vc6本來早就該公升級了,畢竟vc已經從vc6經歷7.0 7.1 8.0,現在已經到了vc9 vc2008 了。只是我比較戀舊,想想我的機器也受不了ms頻繁的公升級,現在的機器也就免強能跑跑vc6。但是現在c 標準公升級了,gcc也公升級了,vc6 真的已經是必須丟棄的雞骨頭了。vc6自帶...
跳槽慣性思維正在被打破
隨著時間的變化和市場的發展,以及新事物的不斷湧現,以往那些關於跳槽的慣性思維正在被不斷打破。從 避免轉行 到 跨界吃香 現在,跨界成為乙個頗為時髦的詞語。市場的多元化 細分化,使得擁有 複雜 背景的人越來越受歡迎。想轉行?不如帶著你的背景和經驗,來一次跨界吧。我的朋友小a,多年前從海外歸來,順利入職...
C 判斷檔案是否正在被使用
生成檔案的時候,如果該資料夾下的同名檔案被開啟 或者被使用 如果這時再生成乙個同名檔案,則會提示檔案正在被占用。解決方法有兩個,乙個是儲存的檔名改成該資料夾下不存在的 隨機數之類的xxoo都行,只要不存在就可以了 當然這裡指的是該同名檔案是被使用,如果該同名檔案不開啟,生成檔案的時候就直接將其覆蓋了...