计算机工作原理(简述)
文章目錄
- 1.馮諾依曼體系(Von Neumann Architecture)
- 2.CPU基本工作流程
- 2.1邏輯門
- 2.2門電路
 
- 3.算術邏輯單元 ALU(Arithmetic & Logic Unit)
- 3.1 算術單元(Arithmetic Unit)
- 3.2邏輯單元(Logic Unit)
 
- 4 寄存器(Register) 和內存(RAM)
- 5.控制單元CU(Control Unit)
- 5.1指令(Instruction)
 
- 6.編程語言
- 6.1 程序(Program)
- 6.2編程語言的發展
 
- 7.操作系統(Operating System)
- 8 什么是進程/任務(Process/Task)
- 8.1進程
- 8.2進程控制塊抽象(PCB Process Control Block)
- 8.3CPU 分配 —— 進程調度(Process Scheduling)
- 8.4內存分配 —— 內存管理(Memory Manage)
- 8.5進程間通信(Inter Process Communication)
 
 
1.馮諾依曼體系(Von Neumann Architecture)
約翰·馮·諾依曼(John von Neumann,1903年12月28日-1957年2月8日),美籍匈牙利數學家、計算機科學家、物理學家,是20世紀最重要的數學家之一。 馮·諾依曼是羅蘭大學數學博士,是現代計算機、博弈論、核武器和生化武器等領域內的科學全才之一,被后人稱為“現代計算機之父”、“博弈論之父”。
 馮·諾依曼先后執教于柏林大學和漢堡大學,1930年前往美國,后入美國籍。 歷任普林斯頓大學教授、普林斯頓高等研究院教授,入選美國原子能委員會會員、美國國家科學院院士。 早期以算子理論、共振論、量子理論、集合論等方面的研究聞名,開創了馮·諾依曼代數。 馮·諾依曼第二次世界大戰期間曾參與曼哈頓計劃,為第一顆原子彈的研制作出了貢獻。
 馮·諾依曼1944年與奧斯卡·摩根斯特恩合著《博弈論與經濟行為》,是博弈論學科的奠基性著作。 晚年,馮·諾依曼轉向研究自動機理論,著有對人腦和計算機系統進行精確分析的著作《計算機與人腦》(1958年),為研制電子數字計算機提供了基礎性的方案。 其余主要著作有《量子力學的數學基礎》(1926)、《經典力學的算子方法》、《連續幾何》(1960)等。
 
 1、CPU 中央處理器: 進行算術運算和邏輯判斷.
 2、存儲器: 分為外存和內存, 用于存儲數據(使用二進制方式存儲)
 3、輸入設備: 用戶給計算機發號施令的設備.
 4、輸出設備: 計算機個用戶匯報結果的設備
 針對存儲空間:
 硬盤 > 內存 >> CPU
 針對數據訪問速度:
 CPU >> 內存 > 硬盤
2.CPU基本工作流程
2.1邏輯門
邏輯門(Logic Gates)是在集成電路(Integrated Circuit)上的基本組件。簡單的邏輯門可由晶體管組成。這些晶體管的組合可以使代表兩種信號的高低電平在通過它們之后產生高電平或者低電平的信號。高、低電平可以分別代表邏輯上的“真”與“假”或二進制當中的1和0,從而實現邏輯運算。
2.2門電路
用以實現基本邏輯運算和復合邏輯運算的單元電路稱為門電路。常用的門電路在邏輯功能上有與門、或門、非門、與非門、或非門、與或非門、異或門等幾種。
 
 
3.算術邏輯單元 ALU(Arithmetic & Logic Unit)
ALU 是計算機中進行算數、邏輯運算的核心部件,是計算機的數學大腦。
3.1 算術單元(Arithmetic Unit)
算數單元,負責計算機里的所有數字操作,比如四則運算。
 半加器電路是指對兩個輸入數據位相加,輸出一個結果位和進位,沒有進位輸入的加法器電路。 是實現兩個一位二進制數的加法運算電路。
 
 全加器英語名稱為full-adder,是用門電路實現兩個二進制數相加并求出和的組合線路,稱為一位全加器。一位全加器可以處理低位進位,并輸出本位加法進位。多個一位全加器進行級聯可以得到多位全加器。常用二進制四位全加器74LS283。
3.2邏輯單元(Logic Unit)
邏輯單元主要用來進行邏輯操作,最基本的操作就是與、或、非操作,但不只是一位(bit)數的比較。
 ALU 符號
 ALU 是第一次將人類歷史上的數學和邏輯學學科有機地結合起來,可以視為人類智慧發展的現代巔峰。
4 寄存器(Register) 和內存(RAM)
光有 ALU 還是遠遠不夠的,我們無法為 ALU 提供存儲的部件。這些存儲都是要求必須保持通電狀態的,也就是這些存儲都是易失的(volatile)。
 內存的構建要要復雜一點,但基本原理一致。如此構建的內存被稱為 RAM(Random Access Memory),可以支持 O(1) 時間復雜度訪問任意位置的數據,這也就是我們數組下標訪問操作是 O(1) 的硬件支持。
5.控制單元CU(Control Unit)
我們現在有 ALU、存儲了,但這還是不足以讓我們的計算機工作起來,我們需要有一個部件來指揮 ALU 進行何種的運算,而這個部件就是控制單元(CU)。
5.1指令(Instruction)
所謂指令,即指導 CPU 進行工作的命令,主要有操作碼 + 被操作數組成。其中操作碼用來表示要做什么動作,被操作數是本條指令要操作的數據,可能是內存地址,也可能是寄存器編號等。指令本身也是一個數字,用二進制形式保存在內存的某個區域中。
指令表
| LOAD_A | 從 RAM 的指定地址,將數據加載到 A 寄存器 | 0010 | 4 位 RAM 地址 | 
| LOAD_B | 從 RAM 的指定地址,將數據加載到 B 寄存器 | 0010 | 4 位 RAM 地址 | 
| STORE_A | 將數據從 A 寄存器寫入RAM 的指定地址 | 0010 | 4 位 RAM 地址 | 
| ADD | 計算兩個指定寄存器的數據的和,并將結果放入第二個寄存器 | 1000 | 2 位的寄存器 ID2 位的寄存器 ID | 
指令周期:
 
 電子計算機中的 CPU 可不像我們剛才那樣,靠自己來驅動這個周期的運轉,而是靠背后一個時鐘來進行周期驅動的。
 時鐘頻率的概念:
 
 ALU + CU + 寄存器 + 時鐘就組成了我們平時經常看到的一個詞匯:中央處理器(Center Process Unit)簡稱 CPU。
6.編程語言
6.1 程序(Program)
所謂程序,一組指令和這組指令要處理的數據的結合。狹義上來說,程序對我們來說,通常表現為一組文件。
 程序 = 指令 + 指令要處理的數據。
6.2編程語言的發展
 注意:高級語言的一條語句(Statement)往往對應很多條指令(Instruction)才能完成。
7.操作系統(Operating System)
操作系統是一組做計算機資源管理的軟件的統稱。目前常見的操作系統有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鴻蒙等。
 CPU本質上通過一些基礎的門電路構成:電子開關=》基礎門電路=》半加器=》全加器=》加法器=》進行加減乘除
操作系統的定位:
 
 操作系統由兩個基本功能:
 對上給各個軟件提供穩定的運行環境,對下管理好各種硬件設備。
 1) 防止硬件被時空的應用程序濫用;
 2) 向應用程序提供簡單一致的機制來控制復雜而又通常大相徑庭的低級硬件設備。
8 什么是進程/任務(Process/Task)
8.1進程
是操作系統對一個正在運行的程序的一種抽象,換言之,可以把進程看做程序的一次運行過程;同時,在操作系統內部,進程又是操作系統進行資源分配的基本單位。
操作系統是如何管理進程的?
 1、先描述一個進程(明確出一個進程上面的一些相關屬性),操作系統主要是通過C/C++實現的,這里的描述其實就是用C語言中的“結構體”、Java的類差不多;進程這個結構體稱為“PCB”(process control block)進程快。
 2、在組織若干個進程。(使用一些數據結構,把很多描述進程的信息給放到一起去,方便進行增刪查改)(上面都是以Linux討論的)
 創建進程:先創建出PCB,然后把PCB加載到雙向鏈表中
 銷毀進程:找到鏈表的PCB,并且從鏈表上刪除
 查看任務管理器:就是遍歷鏈表
8.2進程控制塊抽象(PCB Process Control Block)
進程基礎屬性
 🍖pid(進程id)進程的身份標識
 🍖內存指針:指明了這個進程要執行的代碼/指令在內存的哪里。以及這個進程中依賴的數據在哪里。當運行一個exe,此時操作系統就會把這個exe加載到內存中,變成進程,進程要執行二進制指令時,要通過編譯器生成。
 🍖文件描述表:程序運行過程中,(文件是在硬盤上)進程每次打開一個文件,就會在文件描述表上多增加一項(這個文件描述附表可以視為一個數組,里面的每一個元素又是一個結構體,就對應一個文件相關信息)。
 🍖一個進程只要啟動,不管你代碼是否寫了打開/操作文件的代碼,都會默認的打開三個文件(系統自動打開的)標準輸入(System.in),標準輸出(System.out),標準錯誤(System.err)。
8.3CPU 分配 —— 進程調度(Process Scheduling)
操作系統對CPU資源的分配,采用的是時間模式 —— 不同的進程在不同的時間段
 實現進程調度的屬性:
 🍖狀態:描述當前這個進程接下應該怎么調度,就緒狀態:隨時可以去CPU上執行。阻塞狀態/睡眠狀態:暫時不可以去CPU上執行
 🍖優先級:先給誰分配時間,后給誰分配時間;誰分的多,誰分的少
 🍖記賬信息:統計了每個進程都分別執行了多久,分別都執行了那些指令,分別都排隊等了多久,給進程調度提供指導依據。
 🍖上下文:表示了上次進程被調度出CPU的時候,當前程序執行狀態;進程被調度出CPU之前,要先把CPU的所有的寄存器中的數據都會給保存到內存中(PCB的上下文字段中)相當于存檔。下次進程被調度上CPU的時候,就可以從剛才的內存中恢復這些數據到寄存器中,相當于讀檔。
 存檔+讀檔 存檔儲存的游戲信息就稱為"上下文"
 🍖:調度:“時間管理大師”、“海王”。
并發和并行:
 并行和并發只有在微觀上有區分,宏觀上我們是區分不了的,微觀上這里區分都是操作系統自行調度的結果。我們在寫代碼的時候通常用并發這個詞,代指并行+并發。只是在研究操作系統進程調度上稍做區分,其它場景都用并發代替。
8.4內存分配 —— 內存管理(Memory Manage)
操作系統對內存資源的分配,采用的是空間模式 —— 不同進程使用內存中的不同區域,互相之間不會干擾。
 內存的分配依賴虛擬地址空間,由于操作系統上同時運行著很多個進程,如果某個進程崩潰了,是不會影響到其它進程的,因為進程有進程的獨立性,獨立性有依賴于虛擬地址空間。進程之間通過虛擬地址空間,已經各自隔離開了。但是在實際工作中,進程之間又是互相交互的,所以操作系統提供了公共空間。
 例如快遞,商家會把包裹放在菜鳥驛站,我們再從菜鳥驛站拿去。菜鳥驛站就相當于公共空間,商家和我們就相當于進程。
8.5進程間通信(Inter Process Communication)
進程是操作系統進行資源分配的最小單位,這意味著各個進程互相之間是無法感受到對方存在的,這就是操作系統抽象出進程這一概念的初衷,這樣便帶來了進程之間互相具備”隔離性(Isolation)“。
 但現代的應用,要完成一個復雜的業務需求,往往無法通過一個進程獨立完成,總是需要進程和進程進行配合地達到應用的目的,如此,進程之間就需要有進行“信息交換“的需求。進程間通信的需求就應運而生。
 目前,主流操作系統提供的進程通信機制有如下:
 文件操作
 網絡操作(socket)
 其中,網絡是一種相對特殊的 IPC 機制,它除了支持同主機兩個進程間通信,還支持同一網絡內部非同一主機上的進程間進行通信。
 操作系統中,提供的公共空間有很多種,并且各有特點,有的存儲空間大,有的小,有的慢,有的快。
總結
以上是生活随笔為你收集整理的计算机工作原理(简述)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: cp -r为啥会有提示linux,处cp
- 下一篇: 【2020HBU天梯赛训练】7-11 打
