亚洲熟女综合色一区二区三区,亚洲精品中文字幕无码蜜桃,亚洲va欧美va日韩va成人网,亚洲av无码国产一区二区三区,亚洲精品无码久久久久久久

小白入門之一:計(jì)算機(jī)基礎(chǔ)

計(jì)算機(jī)系統(tǒng)

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

小白入門之一:計(jì)算機(jī)基礎(chǔ)

計(jì)算機(jī)硬件

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

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

計(jì)算機(jī)的體系結(jié)構(gòu)

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

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

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

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

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

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

由于內(nèi)存是易失性存儲(chǔ)設(shè)備,我們就期望有一種設(shè)備能將運(yùn)算的結(jié)果長(zhǎng)久的保存,這就用到了硬盤。輸入輸出設(shè)備其實(shí)就是我們與計(jì)算機(jī)之間交互的一種中間設(shè)備,那么當(dāng)我們敲鍵盤或點(diǎn)鼠標(biāo)這種信息是如何被計(jì)算機(jī)捕捉到呢?在 CPU 內(nèi)部有一種叫可編程中斷控制器用于捕捉我們這種動(dòng)作信息,然后交由運(yùn)算器進(jìn)行處理。

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

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

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

操作系統(tǒng)

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

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

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

小白入門之一:計(jì)算機(jī)基礎(chǔ)

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

操作系統(tǒng)也是軟件, 只不過(guò)它是一種通用軟件, 不實(shí)現(xiàn)具體的功能而是協(xié)調(diào)各個(gè)程序以完成具體的功能。當(dāng)然,操作系統(tǒng)要想運(yùn)行起來(lái)就必須要載入內(nèi)存,但是內(nèi)存中也有其他進(jìn)程,我們?cè)鯓硬拍鼙WC其他進(jìn)程無(wú)法破壞操作系統(tǒng)的進(jìn)程呢?CPU 有四個(gè)環(huán),操作系統(tǒng)運(yùn)行在第 0 環(huán),應(yīng)用程序運(yùn)行在最外面一環(huán),中間兩環(huán)保留。第 0 環(huán)直接映射到內(nèi)核空間,保證操作系統(tǒng)的安全。

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

小白入門之一:計(jì)算機(jī)基礎(chǔ)

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

linux操作系統(tǒng)

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

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

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

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

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

文章來(lái)源于網(wǎng)絡(luò),侵刪!

文章來(lái)源于網(wǎng)絡(luò),侵刪!

 

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國(guó)內(nèi)好評(píng)如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機(jī)構(gòu)!