<optgroup id="advll"><strong id="advll"></strong></optgroup>
    1. <optgroup id="advll"><sup id="advll"></sup></optgroup>
      歡迎來到《圣博凱斯》變頻供水設備官網
      精銳于專業 / 卓然于品質 -- 20年專注于供水行業,締造至臻品質 -- 服務熱線:0731-85783205 18932453205

      馮諾依曼型計算機的工作原理是什么_馮諾依曼式計算機的基本工作原理

      文章目錄 一、馮諾依曼體系二、CPU的基本工作流程1.邏輯門2.門電路(Gate Circuit)1.非門2.與門3.或門4.異或門 3.算術邏輯單元 ALU(Arithmetic & Logic Unit)1.算術單元2.邏輯單元 三、存儲器四、操作系統(OS)1,進程2.進程管理(重點)并發式執行并行式執行 3. 進程的屬性(1) 進程的狀態(2) 進程的優先級(3) 進程的上下文(4) 進程的記賬信息 4. 虛擬地址空間 總結


      一、馮諾依曼體系

      清爽的鑰匙,可以說是計算機的祖師爺。被后人成為“現代計算機之父
      它提出了計算機制造的三個基本原則,即采用二進制邏輯、程序存儲執行以及計算機由五個部分組成(運算器、控制器、存儲器、輸入設備、輸出設備),這套理論被稱為lhdrg體系結構。

      CPU 中央處理器: 進行算術運算和邏輯判斷.存儲器: 分為外存和內存, 用于存儲數據(使用二進制方式存儲)輸入設備:用戶給計算機發號施令的設備.輸出設備: 計算機個用戶匯報結果的設備

      如果對于存儲空間
      磁盤 > 內存 > CPU
      如果對于訪問速度
      CPU > 內存 > 磁盤

      二、CPU的基本工作流程

      CPU想必都不陌生,現在的電腦CPU已經到了 11 代了,這個 2.40GHz是什么意思呢。這其實是CPU的主頻
      粗略的說:CPU的主頻就是時鐘的震蕩的每秒次數,可近似的看作每秒執行的指令數。簡單的說就是主頻決定了CPU的運算速度。

      接下來,我們用一個從無到有的過程,一步步搭建一個 CPU 出來,希望大家可以借助這個過程,理解CPU、內存等計算機主要部件的工作原理。

      1.邏輯門

      電子開關 —— 機械繼電器(Mechanical Relay)

      通過電子開關,我們可以實現 1 位(bit) 的看似無用的邏輯運算。

      2.門電路(Gate Circuit)

      接下來,我們學習如何使用電子開關構建一些有用的部件 —— 門電路??梢詫崿F 1 位(bit) 的基本邏輯運算。其實幾個門電路非常好理解,Java的邏輯運算差不多。

      1.非門

      非門非常好理解,輸入為 true 輸出 false,輸入false 則輸出 true

      2.與門

      兩個都為 true才輸出true,否則輸出false

      3.或門

      一個為 1則為1,兩個為 false 則為false

      4.異或門

      通過非門與門和或門相結合就形成了異或門,相同為 false,不相同則為 true

      這里的 true 和 false 在計算機里其實就是 1 和 0

      3.算術邏輯單元 ALU(Arithmetic & Logic Unit)

      ALU 是計算機中進行算數、邏輯運算的核心部件,是計算機的數學大腦.

      說到運算我們首先想到二進制的運算,這個想必大家都了解,逢二進一嘛。

      1.算術單元

      算數單元,負責計算機里的所有數字操作,比如四則運算,當然它能做的遠遠不止這些。

      半加器:
      半加器就是通過一個與門和異或門,來計算兩個 1位(bit)數的相加,既要考慮到和也要考慮到進位。

      全加器:
      全加器是通過兩個半加器進行 3個1位(bit)的數 進行運算,同樣要考慮計算出來的和是否要進位

      加法器

      通過1個半加器和7個全加器就能組成一個能計算 8個位 1位(bit) 的全加器。
      圖中的A和B就是輸入的兩個數的第幾個bit位,同理 S 就是輸出數的 bit 位

      算術單元支持的操作當然遠不止這些,通過繼續組合邏輯門,算數單元可以做到加減乘除甚至更多的算術運算,但一個加法器作為演示已經足夠了。
      其實計算機只能做加法運算,都是通過加法器來實現的,因為計算機里存的都是補碼,就是為了通過加法器來計算加減乘除運算,只不過更復雜,這里就不深究。

      2.邏輯單元

      邏輯單元主要用來進行邏輯操作,最基本的操作就是 與、或、非操作,但不只是一位(bit)數的比較

      三、存儲器

      存儲器分為內存外存
      內存:就是平時所說的電腦內存,也就相當于手機的運存。
      外存:磁盤、U盤等。
      內存比較而且貴,外存比較大但比較便宜。

      內存有一個特點:它可以隨機訪問內存中任意地址的數據。
      外存其實也有隨機訪問的能力,但開銷較大,所以外存更適合順序訪問。
      內存的訪問速度非???,外存的訪問速度非常慢。

      CPU上其實也能存儲,CPU上的寄存器,內存更小速度非常的快,也更加的貴!

      四、操作系統(OS)

      操作系統是一個"搞管理" 的軟件
      1.管理硬件設備
      2.管理軟件資源(文件、進程)
      所謂的”管理“一般值的是兩個方面:描述+組織

      1,進程

      進程是操作系統中非常核心的一個概念,進程其實是計算機完成工作的一個"過程"

      如圖所示:進程就是一個正在運行的程序,要想讓進程跑起來,就得給這個進程分配一定的系統硬件資源(CPU,內存,磁盤,網絡帶寬…)

      關于進程,最核心的問題就是進程在系統中是如何被管理的,
      管理 = 描述(PCB) + 組織

      PCB:進程的控制塊,這是一個C語言的結構體類似于Java中的類,一個結構體對象就對應一個進程

      組織:使用一定的數據結構來組織,常見的作法就是使用雙向鏈表

      查看進程列表,本質上就是遍歷操作系統內核中的這個鏈表,并顯示其中的屬性;

      創建一個進程:本質上就是創建一個PDB對象,加入到內核的鏈表中

      銷毀一個進程,本質上就是把這個PCB對象從內核鏈表中刪除掉

      PCB中大概有那些屬性呢?

      pid:一個進程的身份標識,一個機器同一時刻,不可能有兩個進程的 pid 相同

      內存指針:描述了這個進程使用的內存空間是哪個范圍(虛擬地址空間)

      文件描述符表:描述了這個進程都打開了那些文件

      系統中打開一個文件,其實就得到了一個"文件描述符",這個文件描述符就像一個遙控器一樣,文件數據是存放在磁盤上的,代碼中操作磁盤數據不像操作內存數據那么方便,所以往往是借助這種遙控器的方式來操作

      2.進程管理(重點)

      我們電腦上有幾百個進程在運行,但電腦只有1個CPU,而且一般都是4核或者8核的CPU,8核心相當于CPU有8個分身,那么這么多進程是怎么運行的呢?

      進程這么多,CPU就那么幾個分身。那么就涉及到進程調度了,電腦上的多任務系統其實就是基于進程調度這樣的機制來完成的。

      并發式執行

      并發式執行:1個CPU運行多個進程,
      由于CPU的運行速度極快,雖然CPU在一直進行切換,但是咱們坐在電腦前的用戶,是感知不到這個切換的過程的。

      并行式執行

      并行式執行:多個CPU,運行多個進程
      CPU1運行進程1,CPU2運行進程2.
      進程1和進程2無論是微觀還是宏觀,都是同時執行的。

      真實的計算機,真實的操作系統在進行進程調度的時候,是并發并行兩種策略綜合使用的。

      3. 進程的屬性 (1) 進程的狀態

      運行狀態:進程正在運行

      就緒狀態:進程已經做好準備,隨時準備被CPU調度執行

      阻塞狀態:進程在此狀態不能執行,只有等阻塞該進程的事件完成后才能執行,比如編程時等待我們輸入

      (2) 進程的優先級

      給進程安排不同的優先級,優先級越高的進程,更容易被CPU調度執行。

      (3) 進程的上下文

      記住進程上次運行到哪個指令了,方便下次調度的時候能夠繼續從這個位置來運行。

      進程的上下文,主要是存儲調度出CPU之前,寄存器中的信息(把寄存器信息保存到內存中)
      等到這個進程下次恢復到CPU上執行的時候,就把內存保存好的數據恢復到寄存器中。(進程本身是感知不到自己啥時候被調度出CPU的)

      (4) 進程的記賬信息

      記錄進程在CPU上執行了多久了,用來輔助決定這個進程是繼續執行,還是要調度出CPU了。

      4. 虛擬地址空間

      一個進程想要運行,就需要給它分配一些系統資源,其中內存就是一個最核心的資源。

      物理地址:真實的內存的地址

      假設:

      0x100 - 0x700 這個內存分給 進程1
      0x100 - 0x700 這個內存分給 進程2
      0x100 - 0x800 這個內存分給 進程3
      這里的地址都是操作系統抽象出來的虛擬地址
      系統會自動的把這個虛擬地址轉換成真實的物理地址


      為什么要有虛擬地址空間?而不直接訪問真實的物理地址?
      目的就是為了一定程度的減少內存訪問越界,帶來的后果

      比如:
      進程1 的內存范圍 0x100 - 0x700,如果我的代碼嘗試修改 0x701的地址的數據,這個操作就是越界訪問(錯誤的操作)

      如果這是一個真實的物理地址,這個修改就真的把 0x701給修改了,
      恰好 0x701是進程2 要使用的內存地址,此時進程2 可能就出 bug 了,就會直接奔潰

      但如果進程訪問的是虛擬地址,也嘗試修改0x701
      此時系統就要針對 0x701 來查詢頁表,找到對應的物理地址
      由于 0x701 已經是非法地址,在 頁表中查不到了,系統就會明白,是在越界訪問,于是就直接讓這個進程出現崩潰(系統就會發送一個型號,這個信號通常會導致進程奔潰),防止影響到其它線程。

      這樣做,就讓進程和進程之間相互影響的可能性變小了,隔離性增加了,進程也就更加穩定了。

      虛擬地址空間:好處就是讓進程之間獨立性提高了,不至于相互影響,整個系統更加穩定。
      缺點:兩個進程需要相互配合的時候,溝通起來就困難了(進程間通信)

      進程1 和 進程2 由于虛擬地址空間(進程的獨立性),導致很難相互進行訪問對方的內存。
      如果要想相互交流溝通,就需要使用一些特殊的手段,比如:文件,管道(是內核中提供的一個隊列),消息隊列,信號量等


      總結

      進程的幾個重要屬性:

      進程的狀態進程的優先級進程的上下文進程的記賬信息

      猜你喜歡

      • 消防泵啟動注意事項,消火栓泵幾點使用注意事項

        消火栓泵是消防系統中重要的設備之一,那么咱們知道這種設備在運用中應該留意哪些事項嗎?下面小編就為咱們總結一下消火栓泵使用過程中需要注意的幾點問題一、當購買到消火栓泵之后假設發現在長沙供水設備這種東西上面的底閥是不適宜的,有的狀況下會大

      • 智能整體預制泵站,助力城市排水,一體化預制泵站生產廠家推進環保進程

        大家好!今天給您提供一篇助力城市排水,上海一體化預制泵站生產廠家推進環保進程的文章,在上海一體化預制泵站生產廠家這塊領域中,本公司一直在努力做好,給您提供一個安全可靠的平臺。在全國城鎮化的進程中,排水一直是城市建造一項重要的關鍵問題。國家提

      18932453205
      国产欧美丝袜在线二蜜芽tv|亚洲欧洲自拍拍偷精品|欧美熟妇另类久久久久久不卡|麻豆av无码精品一区二区|国产午夜羞羞小视频在线
      <optgroup id="advll"><strong id="advll"></strong></optgroup>
      1. <optgroup id="advll"><sup id="advll"></sup></optgroup>