日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務,提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

操作系統(tǒng)底層核心講解

現(xiàn)代計算機模型是基于-馮諾依曼計算機模型

計算機在運行時,先從內(nèi)存中取出第一條指令,通過控制器的譯碼,按指令的要求,從存儲器中取出數(shù)據(jù)進行指定的運算和邏輯操作等加工,然后再按地址把結(jié)果送到內(nèi)存中去。接下來,再取出第二條指令,在控制器的指揮下完成規(guī)定操作。依此進行下去。直至遇到停止指令。

程序與數(shù)據(jù)一樣存貯,按程序編排的順序,一步一步地取出指令,自動地完成指令規(guī)定的操作是計算機最基本的工作模型。這一原理最初是由美籍匈牙利數(shù)學家馮.諾依曼于1945年提出來的,故稱為馮.諾依曼計算機模型。

計算機五大核心組成部分

 

1. 控制器(Control):是整個計算機的中樞神經(jīng),其功能是對程序規(guī)定的控制信息進行解釋,根據(jù)其要求進行控制,調(diào)度程序、數(shù)據(jù)、地址,協(xié)調(diào)計算機各部分工作及內(nèi)存與外設的訪問等。

2. 運算器(Datapath):運算器的功能是對數(shù)據(jù)進行各種算術運算和邏輯運算,即對數(shù)據(jù)進行加工處理。

3. 存儲器(Memory):存儲器的功能是存儲程序、數(shù)據(jù)和各種信號、命令等信息,并在需要時提供這些信息。

4. 輸入(Input system):輸入設備是計算機的重要組成部分,輸入設備與輸出設備合你為外部設備,簡稱外設,輸入設備的作用是將程序、原始數(shù)據(jù)、文字、字符、控制命令或現(xiàn)場采集的數(shù)據(jù)等信息輸入到計算機。常見的輸入設備有鍵盤、鼠標器、光電輸入機、磁帶機、磁盤機、光盤機等。

5. 輸出(Output system):輸出設備與輸入設備同樣是計算機的重要組成部分,它把外算機的中間結(jié)果或最后結(jié)果、機內(nèi)的各種數(shù)據(jù)符號及文字或各種控制信號等信息輸出出來。微機常用的輸出設備有顯示終端CRT、打印機、激光印字機、繪圖儀及磁帶、光盤機等。

 

現(xiàn)代計算機當中的硬件結(jié)構(gòu)設計:

操作系統(tǒng)底層核心講解

 

CPU指令結(jié)構(gòu)

CPU內(nèi)部結(jié)構(gòu)

  • 控制單元
  • 運算單元
  • 數(shù)據(jù)單元
操作系統(tǒng)底層核心講解

 

 

控制單元

控制單元是整個CPU的指揮控制中心,由指令寄存器IR(Instruction Register)、指令譯碼器ID(Instruction Decoder)和 操作控制器OC(Operation Controller) 等組成,對協(xié)調(diào)整個電腦有序工作極為重要。它根據(jù)用戶預先編好的程序,依次從存儲器中取出各條指令,放在指令寄存器IR中,通過指令譯碼(分析)確定應該進行什么操作,然后通過操作控制器OC,按確定的時序,向相應的部件發(fā)出微操作控制信號。操作控制器OC中主要包括:節(jié)拍脈沖發(fā)生器、控制矩陣、時鐘脈沖發(fā)生器、復位電路和啟停電路等控制邏輯。

運算單元

運算單元是運算器的核心??梢詧?zhí)行算術運算(包括加減乘數(shù)等基本運算及其附加運算)和邏輯運算(包括移位、邏輯測試或兩個值比較)。相對控制單元而言,運算器接受控制單元的命令而進行動作,即運算單元所進行的全部操作都是由控制單元發(fā)出的控制信號來指揮的,所以它是執(zhí)行部件。

存儲單元

存儲單元包括 CPU 片內(nèi)緩存Cache和寄存器組,是 CPU 中暫時存放數(shù)據(jù)的地方,里面保存著那些等待處理的數(shù)據(jù),或已經(jīng)處理過的數(shù)據(jù),CPU 訪問寄存器所用的時間要比訪問內(nèi)存的時間短。 寄存器是CPU內(nèi)部的元件,寄存器擁有非常高的讀寫速度,所以在寄存器之間的數(shù)據(jù)傳送非常快。采用寄存器,可以減少 CPU 訪問內(nèi)存的次數(shù),從而提高了 CPU的工作速度。寄存器組可分為專用寄存器和通用寄存器。專用寄存器的作用是固定的,分別寄存相應的數(shù)據(jù);而通用寄存器用途廣泛并可由程序員規(guī)定其用途。

 

CPU緩存結(jié)構(gòu)

現(xiàn)代CPU為了提升執(zhí)行效率,減少CPU與內(nèi)存的交互(交互影響CPU效率),一般在CPU上集成了多級緩存架構(gòu),常見的為三級緩存結(jié)構(gòu)

 

  • L1 Cache,分為數(shù)據(jù)緩存和指令緩存,邏輯核獨占
  • L2 Cache,物理核獨占,邏輯核共享
  • L3 Cache,所有物理核共享
操作系統(tǒng)底層核心講解

 

存儲器存儲空間大?。簝?nèi)存>L3>L2>L1>寄存器;

存儲器速度快慢排序:寄存器>L1>L2>L3>內(nèi)存;

還有一點值得注意的是:緩存是由最小的存儲區(qū)塊-緩存行(cacheline)組成,緩存行大小通常為64byte。

緩存行是什么意思呢?

比如你的L1緩存大小是512kb,而cacheline = 64byte,那么就是L1里有512 * 1024/64個cacheline

 

CPU讀取存儲器數(shù)據(jù)過程

1、CPU要取寄存器X的值,只需要一步:直接讀取。

2、CPU要取L1 cache的某個值,需要1-3步(或者更多):把cache行鎖住,把某個數(shù)據(jù)拿來,解鎖,如果沒鎖住就慢了。

3、CPU要取L2 cache的某個值,先要到L1 cache里取,L1當中不存在,在L2里,L2開始加鎖,加鎖以后,把L2里的數(shù)據(jù)復制到L1,再執(zhí)行讀L1的過程,上面的3步,再解鎖。

4、CPU取L3 cache的也是一樣,只不過先由L3復制到L2,從L2復制到L1,從L1到CPU。

5、CPU取內(nèi)存則最復雜:通知內(nèi)存控制器占用總線帶寬,通知內(nèi)存加鎖,發(fā)起內(nèi)存讀請求,等待

回應,回應數(shù)據(jù)保存到L3(如果沒有就到L2),再從L3/2到L1,再從L1到CPU,之后解除總線鎖

定。

CPU為何要有高速緩存

CPU在摩爾定律的指導下以每18個月翻一番的速度在發(fā)展,然而內(nèi)存和硬盤的發(fā)展速度遠遠不及CPU。這就造成了高性能能的內(nèi)存和硬盤價格及其昂貴。然而CPU的高度運算需要高速的數(shù)據(jù)。為了解決這個問題,CPU廠商在CPU中內(nèi)置了少量的高速緩存以解決IO速度和CPU運算速度之間的不匹配問題。在CPU訪問存儲設備時,無論是存取數(shù)據(jù)抑或存取指令,都趨于聚集在一片連續(xù)的區(qū)域中,這就被稱為局部性原理。

 

  • 時間局部性(Temporal Locality):如果一個信息項正在被訪問,那么在近期它很可能還會被再次訪問。比如循環(huán)、遞歸、方法的反復調(diào)用等。
  • 空間局部性(Spatial Locality):如果一個存儲器的位置被引用,那么將來他附近的位置也會被引用。比如順序執(zhí)行的代碼、連續(xù)創(chuàng)建的兩個對象、數(shù)組等。

帶有高速緩存的CPU執(zhí)行計算的流程

1. 程序以及數(shù)據(jù)被加載到主內(nèi)存

2. 指令和數(shù)據(jù)被加載到CPU的高速緩存

3. CPU執(zhí)行指令,把結(jié)果寫到高速緩存

4. 高速緩存中的數(shù)據(jù)寫回主內(nèi)存

CPU運行安全等級

 

CPU有4個運行級別,分別為:

  • ring0
  • ring1
  • ring2
  • ring3

linux與windows只用到了2個級別:ring0、ring3,操作系統(tǒng)內(nèi)部內(nèi)部程序指令通常運行在ring0級別,操作系統(tǒng)以外的第三方程序運行在ring3級別,第三方程序如果要調(diào)用操作系統(tǒng)內(nèi)部函數(shù)功能,由于運行安全級別不夠,必須切換CPU運行狀態(tài),從ring3切換到ring0,然后執(zhí)行系統(tǒng)函數(shù),說到這里相信同學們明白為什么JVM創(chuàng)建線程,線程阻塞喚醒是重型操作了,因為CPU要切換運行狀態(tài)。

 

JVM創(chuàng)建線程CPU的工作過程

  • step1:CPU從ring3切換ring0創(chuàng)建線程
  • step2:創(chuàng)建完畢,CPU從ring0切換回ring3
  • step3:線程執(zhí)行JVM程序
  • step4:線程執(zhí)行完畢,銷毀還得切會ring0

 

操作系統(tǒng)內(nèi)存管理

 

執(zhí)行空間保護

操作系統(tǒng)有用戶空間與內(nèi)核空間兩個概念,目的也是為了做到程序運行安全隔離與穩(wěn)定,以

32位操作系統(tǒng)4G大小的內(nèi)存空間為例

操作系統(tǒng)底層核心講解

 

 

Linux為內(nèi)核代碼和數(shù)據(jù)結(jié)構(gòu)預留了幾個頁框,這些頁永遠不會被轉(zhuǎn)出到磁盤上。從0x00000000 到 0xc0000000(PAGE_OFFSET) 的線性地址可由用戶代碼 和 內(nèi)核代碼進行引用(即用戶空間)。從0xc0000000(PAGE_OFFSET)到 0xFFFFFFFFF的線性地址只能由內(nèi)核代碼進行訪問(即內(nèi)核空間)。內(nèi)核代碼及其數(shù)據(jù)結(jié)構(gòu)都必須位于這 1 GB的地址空間中,但是對于此地址空間而言,更大的消費者是物理地址的虛擬映射。

這意味著在 4 GB 的內(nèi)存空間中,只有 3 GB 可以用于用戶應用程序。進程與線程只能運行在用戶方式(usermode)或內(nèi)核方式(kernelmode)下。用戶程序運行在用戶方式下,而系統(tǒng)調(diào)用運行在內(nèi)核方式下。在這兩種方式下所用的堆棧不一樣:用戶方式下用的是一般的堆棧(用戶空間的堆棧),而內(nèi)核方式下用的是固定大小的堆棧(內(nèi)核空間的對戰(zhàn),一般為一個內(nèi)存頁的大小),即每個進程與線程其實有兩個堆棧,分別運行與用戶態(tài)與內(nèi)核態(tài)。

 

由空間劃分我們再引深一下,CPU調(diào)度的基本單位線程,也劃分為:

1、內(nèi)核線程模型(KLT)

2、用戶線程模型(ULT)

內(nèi)核線程模型

操作系統(tǒng)底層核心講解

 

 

內(nèi)核線程(KLT):系統(tǒng)內(nèi)核管理線程(KLT),內(nèi)核保存線程的狀態(tài)和上下文信息,線程阻塞不會引起進程阻塞。在多處理器系統(tǒng)上,多線程在多處理器上并行運行。線程的創(chuàng)建、調(diào)度和管理由內(nèi)核完成,效率比ULT要慢,比進程操作快。

用戶線程模型

操作系統(tǒng)底層核心講解

 

 

用戶線程(ULT):用戶程序?qū)崿F(xiàn),不依賴操作系統(tǒng)核心,應用提供創(chuàng)建、同步、調(diào)度和管理線程的函數(shù)來控制用戶線程。不需要用戶態(tài)/內(nèi)核態(tài)切換,速度快。內(nèi)核對ULT無感知,線程阻塞則進程(包括它的所有線程)阻塞。

進程與線程

 

什么是進程?

現(xiàn)代操作系統(tǒng)在運行一個程序時,會為其創(chuàng)建一個進程;例如,啟動一個JAVA程序,操作系統(tǒng)就會創(chuàng)建一個Java進程。進程是OS(操作系統(tǒng))資源分配的最小單位。

什么是線程?

線程是OS(操作系統(tǒng))調(diào)度CPU的最小單元,也叫輕量級進程(Light Weight Process),在一個進程里可以創(chuàng)建多個線程,這些線程都擁有各自的計數(shù)器、堆棧和局部變量等屬性,并且能夠訪問共享的內(nèi)存變量。CPU在這些線程上高速切換,讓使用者感覺到這些線程在同時執(zhí)行,即并發(fā)的概念,相似的概念還有并行!線程上下文切換過程:

操作系統(tǒng)底層核心講解

 

 

虛擬機指令集架構(gòu)

 

虛擬機指令集架構(gòu)主要分兩種:

1、棧指令集架構(gòu)

2、寄存器指令集架構(gòu)

 

棧指令集架構(gòu)

1. 設計和實現(xiàn)更簡單,適用于資源受限的系統(tǒng);

2. 避開了寄存器的分配難題:使用零地址指令方式分配;

3. 指令流中的指令大部分是零地址指令,其執(zhí)行過程依賴與操作棧,指令集更小,編譯器容易實現(xiàn);

4. 不需要硬件支持,可移植性更好,更好實現(xiàn)跨平臺。

寄存器指令集架構(gòu)

1. 典型的應用是x86的二進制指令集:比如傳統(tǒng)的PC以及Android的Davlik虛擬機。

2. 指令集架構(gòu)則完全依賴硬件,可移植性差。

3. 性能優(yōu)秀和執(zhí)行更高效。

4. 花費更少的指令去完成一項操作。

5. 在大部分情況下,基于寄存器架構(gòu)的指令集往往都以一地址指令、二地址指令和三地址指令為主,而基于棧式架構(gòu)的指令集卻是以零地址指令為主。Java符合典型的棧指令集架構(gòu)特征,Python、Go都屬于這種架構(gòu)。

分享到:
標簽:操作系統(tǒng)
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定