IT系統運維:用戶態和內核態的理解與區別
2020-03-29 20:44 作者:艾銻無限 瀏覽量:
企業上云為什么是數字化轉型升級的第一步
3月17日我們分享了一篇文章,”無企業,不上云”,被各大平臺轉載分享,這讓我們看到了互聯網的熱情,也看到了企業對上云的渴望,艾銻無限作為阿里云的戰略合作伙伴,我們更樂意幫助企業上云,讓更多的企業邁向數字化時代.
我們相信每一家企業都是IT企業,每一家企業都是互聯網企業,每一家企業都是數字化企業,這一切的基礎都是基于云,云將會成為企業最重要的基礎設施,就像水、媒、電一樣的重要.
那為什么云對于企業來說如此重要呢,主要有以下五個方面:
1、應變力
云端快速部署、自由擴展的優勢,使網站、APP等應用上線、迭代更加靈活,提高了信息系統的運營效率。云以突出的應變能力,適應多變的企業信息化進程,降低試錯成本,加快研發進度,增強企業創新的信心。
2、穩定性
云環境為企業業務創造了一個穩定、可靠的空間,使用戶體驗更好,客戶滿意度顯著提升。互聯網產品獲得流量和用戶粘性的核心是用戶體驗,在線用戶流暢訪問,便捷操作,才會有較高的市場占有率。
3、性價比
云計算優異的性價比,為企業信息化大幅降低了成本。使企業可以把更多的資金,投入到業務創新中。傳統企業轉型升級存在著大量的不確定性,低成本的云計算幫助企業消除了資金上的顧慮。
4、安全性
轉型中的傳統企業,因對網絡環境不熟悉,擔心網絡攻擊、數據泄露等安全問題。云計算服務商有專業的技術和高效的服務體系,幫助企業保護數據安全、規避安全風險和提供海量數據查詢,企業可以專注于網站和應用程序,而不是基礎設施。
5、擴展性
在企業信息化的成本結構中,購買硬件軟件成本占比很高,而實際用于開發的支出就相應很低,并且耗費時間較長。如果完全基于云開架設IT系統,幾個小時就可完成基本框架。如果業務增加,就是直接購買服務器,邊際效益很低,采用云后,由于云計算的高擴展性,通過邊際效益可實現成本下降。
綜上所述,未來云就像我們用的水、電、媒一樣成為企業的必須品,也會是最重要的基礎設施一個部分,所以數字化轉型的企業,首先要上云,再考慮如何整合和重構企業內部的數據,從而讓計算起到主導作用,最終實現企業數字化轉型終極目標.
1、linux進程有4GB地址空間,如圖所示:
3G-4G大部分是共享的,是內核態的地址空間。這里存放整個內核的代碼和所有的內核模塊以及內核所維護的數據。
2、特權級的概念:
對于任何操作系統來說,創建一個進程是核心功能。創建進程要做很多工作,會消耗很多物理資源。比如分配物理內存,父子進程拷貝信息,拷貝設置頁目錄頁表等等,這些工作得由特定的進程去做,所以就有了特權級別的概念。最關鍵的工作必須交給特權級最高的進程去執行,這樣可以做到集中管理,減少有限資源的訪問和使用沖突。inter x86架構的cpu一共有四個級別,0-3級,0級特權級最高,3級特權級最低。
3、用戶態和內核態的概念:
當一個進程在執行用戶自己的代碼時處于用戶運行態(用戶態),此時特權級最低,為3級,是普通的用戶進程運行的特權級,大部分用戶直接面對的程序都是運行在用戶態。Ring3狀態不能訪問Ring0的地址空間,包括代碼和數據;當一個進程因為系統調用陷入內核代碼中執行時處于內核運行態(內核態),此時特權級最高,為0級。執行的內核代碼會使用當前進程的內核棧,每個進程都有自己的內核棧。用戶運行一個程序,該程序創建的進程開始時運行自己的代碼,處于用戶態。如果要執行文件操作、網絡數據發送等操作必須通過write、send等系統調用,這些系統調用會調用內核的代碼。進程會切換到Ring0,然后進入3G-4G中的內核地址空間去執行內核代碼來完成相應的操作。內核態的進程執行完后又會切換到Ring3,回到用戶態。這樣,用戶態的程序就不能隨意操作內核地址空間,具有一定的安全保護作用。這說的保護模式是指通過內存頁表操作等機制,保證進程間的地址空間不會互相沖突,一個進程的操作不會修改另一個進程地址空間中的數據。
4、用戶態和內核態的切換
當在系統中執行一個程序時,大部分時間是運行在用戶態下的,在其需要操作系統幫助完成一些用戶態自己沒有特權和能力完成的操作時就會切換到內核態。
用戶態切換到內核態的3種方式
(1)系統調用
這是用戶態進程主動要求切換到內核態的一種方式。用戶態進程通過系統調用申請使用操作系統提供的服務程序完成工作。例如fork()就是執行了一個創建新進程的系統調用。系統調用的機制和新是使用了操作系統為用戶特別開放的一個中斷來實現,如Linux的int 80h中斷。
(2)異常
當cpu在執行運行在用戶態下的程序時,發生了一些沒有預知的異常,這時會觸發由當前運行進程切換到處理此異常的內核相關進程中,也就是切換到了內核態,如缺頁異常。
(3)外圍設備的中斷
當外圍設備完成用戶請求的操作后,會向CPU發出相應的中斷信號,這時CPU會暫停執行下一條即將要執行的指令而轉到與中斷信號對應的處理程序去執行,如果前面執行的指令時用戶態下的程序,那么轉換的過程自然就會是 由用戶態到內核態的切換。如硬盤讀寫操作完成,系統會切換到硬盤讀寫的中斷處理程序中執行后邊的操作等。
這三種方式是系統在運行時由用戶態切換到內核態的最主要方式,其中系統調用可以認為是用戶進程主動發起的,異常和外圍設備中斷則是被動的。從觸發方式上看,切換方式都不一樣,但從最終實際完成由用戶態到內核態的切換操作來看,步驟有事一樣的,都相當于執行了一個中斷響應的過程。系統調用實際上最終是中斷機制實現的,而異常和中斷的處理機制基本一致。
5、用戶態到內核態具體的切換步驟:
(1)從當前進程的描述符中提取其內核棧的ss0及esp0信息。
(2)使用ss0和esp0指向的內核棧將當前進程的cs,eip,eflags,ss,esp信息保存起來,這個過程也完成了由用戶棧到內核棧的切換過程,同時保存了被暫停執行的程序的下一條指令。
(3)將先前由中斷向量檢索得到的中斷處理程序的cs,eip信息裝入相應的寄存器,開始執行中斷處理程序,這時就轉到了內核態的程序執行了。