久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

小白入門之一:計算機基礎

計算機系統(tǒng)

計算機系統(tǒng)由硬件(Hardware)系統(tǒng)和軟件(Software)系統(tǒng)兩大部分組成。

小白入門之一:計算機基礎

計算機硬件

計算機(Computer):俗稱電腦,是一種能接收和存儲信息,并按照存儲在其內部的程序對海量數(shù)據(jù)進行自動、高速地處理,然后把處理結果輸出的現(xiàn)代化智能電子設備。 發(fā)展歷史: * 第一代計算機(1946-1957) 電子管時代 * 第二代計算機(1958-1964) 晶體管時代 * 第三代計算機(1965-1970) 集成電路時代 * 第四代計算機(1971以后) 大規(guī)模集成電路時代

1946年,世界上第一臺計算機ENIAC(electronic numerical integrator and calculator)在美國賓州大學誕生,是美國奧伯丁武器試驗場為了滿足計算彈道需要而研成的。使用了17468只電子管,占地170平方米,重達30噸,耗電174千瓦,耗資40多萬美元。每秒可進行5000次加法或減法運算。

計算機的體系結構

程序是由指令和數(shù)據(jù)組成的,而程序只有載入內存才能被計算機執(zhí)行,那么計算機開機之后怎么知道CPU、內存等硬件是否良好,怎么知道自身有幾塊硬盤以及啟動次序呢?也就是如何實現(xiàn)“加電自檢”?這就需要計算機要有能夠實現(xiàn)自舉的能力將自身的元件激活,然后加載操作系統(tǒng),讓操作系統(tǒng)去實現(xiàn)自舉程序無法實現(xiàn)的功能。那么我們所說的自舉程序是什么呢?計算機有是如何實現(xiàn)自舉的呢?我們先來了解計算機的體系結構!

計算機的體系結構包括運算器、控制器、存儲器和輸入輸出設備五大部件組成,這是由美籍匈牙利科學家馮.諾唯曼于 1946 年提出的。運算器實現(xiàn)運算,控制器控制運算器到內存的什么位置取數(shù)據(jù)又將數(shù)據(jù)存在什么位置,存儲器在這里我們指的是內存,鍵盤鼠標是我們的常見的輸入設備,屏幕是我們常見的輸出設備,而硬盤既是輸入設備又是輸出設備。

我們以加法器來說一下運算器,其實運算器是由許多個加法器組成的,即使是做減法運算也是將減法換算成加法來進行運算。例如要做二進制“1+0”的加法運算,輸入 A 的開關就閉合的,輸入 B 的開關就是斷開的,然后輸出端的就有了電壓。但是,運算的過程中有可能會產生進位,因此還有有進位輸出。計算機只能進行二進制的運算,為什么呢?如果運算器可以進行十進制“3+5”的運算, 我們是否可以將輸入 A 加一個 3V 的電壓, 輸入 B 加 5V 電壓,最后輸出一個 8V 的電壓。但是線路是有電阻的,在電的傳輸過程中就會產生壓降,整數(shù)的運算尚可以接受,那么小數(shù)呢?“0.03+0.05”該如何運算?顯然十進制不可以的!

其實這種推論很荒唐,但是不管怎么說運算器是進行二進制的運算。運算器是基于電學和邏輯學實現(xiàn)計算的一種電子設備,是電子設備就要符合電路的基本原理,要實現(xiàn)計算就要通過運算器中大規(guī)模邏輯門電路來實現(xiàn)邏輯運算。

內存是平面編址設備,所謂平面編址就是將內存的基本單位從一排到最后。與之相反的一種編址方式是三維編址,例如我們把一個國家分成 34 個省直轄市特別行政區(qū),然后一個省又分成若干個市,市又分成若干個縣。所以,到這里大家應該就能明白什么叫平面編址了吧!內存在計算機中起到一個什么作用呢?其實內存存儲的是磁信號,而電磁是是可以相互轉換的。運算器讀內存中的數(shù)據(jù)時,內存中的磁信號轉換成 CPU 針腳上的電信號;反過來,運算器寫數(shù)據(jù)時是通過針腳上有無電壓轉換到內存中磁信號。

說到內存,我們不得不提一提計算機的位,常見的有 32 位和 64 位。有人常說 32 位的操作系統(tǒng)內存最大可以使用 4G 的內存。這里的位相對于寄存器的位數(shù)而言的,現(xiàn)在計算機的寄存器,物理地址總線寬度是相同的,因此在保護模式下 32 位的 CPU 的尋址能力 2^32,也就是 4G;而 64 位的 CPU 的尋址能力為 2^64,也就是 4G 個 4G,當然不是 16G 啊!一般而言,64 位的 CPU 比 32 位的 CPU 運算速度快,但是要想讓一個軟件有 64 位的速度,前提是 CPU、操作系統(tǒng)和軟件都是 64 位!

由于內存是易失性存儲設備,我們就期望有一種設備能將運算的結果長久的保存,這就用到了硬盤。輸入輸出設備其實就是我們與計算機之間交互的一種中間設備,那么當我們敲鍵盤或點鼠標這種信息是如何被計算機捕捉到呢?在 CPU 內部有一種叫可編程中斷控制器用于捕捉我們這種動作信息,然后交由運算器進行處理。

在計算機中運算器的運算速度要比內存快的的多的多,為了提高計算機的運算速度,CPU 內部集成了緩存,緩存的速度比運算器的速度慢但是比內存的速度快。因此,相同主頻的 CPU 未必運算速度就一樣。緩存要想工作,就要遵循程序的局部性原理,所謂程序的局部性原理包括時間上的局部性和空間上的局部性。時間上的局部性是指上一次訪問的數(shù)據(jù)很有可能再次訪問就放到二級緩存再放到一級緩存,空間上的局部性是指現(xiàn)在訪問的數(shù)據(jù)的周圍的數(shù)據(jù)將可能被訪問到就載入緩存。

最后,我們回過頭來說計算機的自舉。ROM 是只讀存儲器,內部存儲了 BIOS(Basic Input Output System)程序,這段程序由計算機的硬件邏輯完成的。計算一開機的時候,ROM 芯片中的 BIOS 程序(也就我們之前所說的自舉程序)會被映射到內存最開始的地方,然后由這段程序來完成加電自檢。我們?yōu)槭裁匆〞r間來講計算機的體系結構呢?因為,我們后期的系統(tǒng)調優(yōu)要用到這些理論性的東西。

計算機的主板上有北橋控制器和南橋控制器,北橋控制器是高速總線控制器,一般用于連接內存等需要速度快且數(shù)據(jù)量大的設備,然后連接到 CPU;而南橋是低速總線控制器,用于連接速度較慢的鍵盤鼠標網卡等,然后匯總交由北橋,最后傳輸?shù)?CPU。而現(xiàn)在,為了提速,內存有可能不在通過北橋連接到 CPU,而是直接連到 CPU;硬盤是機械設備,有的服務器直接采用固態(tài)硬盤,然后將固態(tài)硬盤接入北橋控制器。這就是硬件調優(yōu)!

操作系統(tǒng)

試想一下,我們寫一個程序在 Intel CPU 上能運行,在 Motorola CPU 上能運行嗎?不能!因為這兩種 CPU 的運行機制是不同的。CPU 只能識別二進制,如果我們用二進制來編程那就太困難了,因此 CPU 自帶微碼,也就是匯編語言,匯編語言是人類容易識別的語言,但是匯編語言跟硬件的結合成都很高,在 Intel CPU 上寫的程序依然無法在 Motorola CPU 上運行。 因此就有人將底層的功能抽象出來提供統(tǒng)一的 API 接口, 程序員只需要根據(jù)接口編程,不用管底層硬件的不同。這種程序所用的語言就是高級語言。

早期的計算機,輸入設備穿孔紙帶,輸出設備發(fā)光二極管,然后由記錄員記錄計算機的執(zhí)行結果。再后來就出現(xiàn)了磁帶機,磁帶機的速度比穿孔紙帶的速度快了許多。這個時期出現(xiàn)了批處理系統(tǒng),所謂批處理系統(tǒng)就是將一批作業(yè)提交給操作系統(tǒng)之后就不再干預,由操作系統(tǒng)控制他們自動運行。各個任務之間會有間隔符號,當一個任務結束后,監(jiān)督程序會識別到任務結束,然后將控制權交由下一個任務。雖然批處理系統(tǒng)能讓程序連續(xù)運行,減少任務與任務之間空閑時間所消耗的成本,但是計算機計算的速度很快而輸入很慢。

于是,在 1964 年,由 AT&T 的 bell 實驗室、MIT(麻省理工學院)和 GE(美國通用電氣公司)共同研發(fā)名為multics 的分時操作系統(tǒng),也由此開啟了現(xiàn)代操作系統(tǒng)的新紀元。現(xiàn)代操作系統(tǒng)與以往不同之處在于可以實現(xiàn)多任務,使得計算機的計算能力被充分利用。但是計算機只有一顆 CPU 和一段內存,那么該如何實現(xiàn)多任務呢?CPU 的計算能力是根據(jù)時間的流逝而完成, 因此將 CPU 的運算資源劃分成一個一個時間片(slice)。 假設每個時間片 1ms、有兩個程序,那么第一個程序運行 1ms,然后第二個程序再運行 1ms,這樣交替執(zhí)行。內存呢?將內存分段,這里就有了虛擬地址空間的概念,也就是說,32 位操作系統(tǒng)下的程序假設自身有 4G 內存!

小白入門之一:計算機基礎

 CPU 和內存計算機最核心的硬件設備,是計算機得以運行的基礎,因此我們將 CPU 和抽象成計算機的硬件;硬件之上就是操作系統(tǒng)的內核,內核將 CPU 的計算功能抽象成系統(tǒng)調用,由于系統(tǒng)調用太過底層(所謂底層就是如果 word 和 excel 都需要一個打印的功能,那么依據(jù)系統(tǒng)調用編程 word 和 excel 必須都要開發(fā)一個打印模塊,而依據(jù)庫調用只要開發(fā)一個打印模塊),因此將系統(tǒng)調用封裝成庫向外提供 API 接口供程序員編程時調用。庫也是一種程序,但是不能獨立執(zhí)行,只有被調用的時候才會執(zhí)行。當然,程序員也可以直接使用系統(tǒng)調用來編程!計算機的頂端就是程序,其中最重要最基本的程序就是 shell,shell 是人機接口界面。

操作系統(tǒng)也是軟件, 只不過它是一種通用軟件, 不實現(xiàn)具體的功能而是協(xié)調各個程序以完成具體的功能。當然,操作系統(tǒng)要想運行起來就必須要載入內存,但是內存中也有其他進程,我們怎樣才能保證其他進程無法破壞操作系統(tǒng)的進程呢?CPU 有四個環(huán),操作系統(tǒng)運行在第 0 環(huán),應用程序運行在最外面一環(huán),中間兩環(huán)保留。第 0 環(huán)直接映射到內核空間,保證操作系統(tǒng)的安全。

Kernel 的存在使得應用程序無法直接與硬件設備打交道,所有的操作都要經過內核來處理。當我們敲擊 delete鍵的時候,這個中斷信息會被 CPU 內部的可編程中斷控制器捕捉到;然后,CPU 將這個信息提交給內核來處理,那么內核怎么知道是這個信息是作用于哪個程序的,前面我們說過操作系統(tǒng)協(xié)調各個程序的運行,所以操作系統(tǒng)當然知道了。于是內核將“delete”這個信息交由焦點進程來處理。當然內核功能不僅包括進程管理,還包括內存管理、文件系統(tǒng)、網絡功能、硬件驅動和安全機制等。

小白入門之一:計算機基礎

最后,我們來總結一下操作系統(tǒng),一方面,操作系統(tǒng)使得應用程序無法直接與硬件打交道必須經由操作系統(tǒng)的內核,協(xié)調多個程序運行避免惡意程序破壞其他進程獨占資源,保證了多任務平穩(wěn)的運行;另一方面,操作系統(tǒng)向外提供系統(tǒng)調用,然后系統(tǒng)調用被封裝成庫向外提供庫調用,程序員只需要根據(jù)庫的 API 接口進行編程,不用關心底層硬件的不同,便于程序的移植。

linux操作系統(tǒng)

首先,講一下 Linux 的基本原則:

  1. 由目的單一的小程序組成;組合小程序完成復雜任務
  2. 一切皆文件
  3. 盡量避免捕獲用戶接口
  4. 配置文件保存為純文本格式

其次,講一下 Linux 的 shell,shell 有殼的意思,是人機接口。Linux 的 shell 包括 GUI 和 CLI 兩種類型。GUI (Graphical User Interface)圖型用戶接口,比較常見的有 gnome、KDE 和 xface 等,其中 gnome 和 xface 用 C 語 言開發(fā)的,KDE 是用 C++開發(fā)的。CLI(Command Line Interface)是命令行接口,比較常見的有 bash、csh、zsh、 ksh 和 tcsh 等,我們用 bash。

最后,講一下用戶的登錄和命令的執(zhí)行過程。用戶名是 Linux 系統(tǒng)的訪問認證標識,但是用戶名不能作為用戶 是否可以訪問資源的限定標識;因此需要認證(Authentication),認證就是為了確定某個人確實是他所聲稱的那個用 戶;認證之后系統(tǒng)要對用戶進行授權(Authorization);任何行為都都需要監(jiān)督,因此,審計(Audition),審計是通 過日志來完成的。

登錄之后會出現(xiàn)命令提示符(Prompt)等待我們輸入命令,既然是命令(即程序),那么無論是二進制的可執(zhí)行文件還是腳本程序都必須有可執(zhí)行入口。所謂的可執(zhí)行入口就是在程序開始的地方有一段用于標識文件特殊性的字符,我們成為 magic number 或 shebang。當我們輸入命令的時候,shell 會將我們的命令提交給內核,內核會找到這個命令并根據(jù) magic number 判斷此命令是否是可以執(zhí)行的程序。由于 magic number 的不同,也決定了他們所能理解的二進制格式不一樣的,因此在 Windows 上編譯的程序在 Linux 上未必能運行,即使他們的庫完全一樣。

文章來源于網絡,侵刪!

文章來源于網絡,侵刪!

 

相關新聞

歷經多年發(fā)展,已成為國內好評如潮的Linux云計算運維、SRE、Devops、網絡安全、云原生、Go、Python開發(fā)專業(yè)人才培訓機構!

    1. 主站蜘蛛池模板: 花垣县| 仲巴县| 全南县| 牡丹江市| 延津县| 保山市| 蓝田县| 石屏县| 忻城县| 岳阳市| 嫩江县| 普兰县| 桦南县| 苍溪县| 黑龙江省| 云安县| 岫岩| 高州市| 贵州省| 同德县| 嘉兴市| 峡江县| 叙永县| 南充市| 罗山县| 阜南县| 滨州市| 扬中市| 阿拉善右旗| 平安县| 凤冈县| 高青县| 仪征市| 定日县| 彭泽县| 巴青县| 且末县| 呼和浩特市| 龙门县| 双江| 嘉荫县|