1. 程式人生 > >計算機基礎知識 計算機基礎知識

計算機基礎知識 計算機基礎知識

計算機基礎知識

   

一、為何要學習計算機基礎?

           好多人覺得自己有點基礎就都想著直接敲程式碼,覺得基礎知識很容易,很簡單,就不怎麼用心去學。然而,我覺得基礎知識很重要。就像蓋一棟樓房一樣,你先要打好地基,再去蓋房。    

   Python是一門程式語言,即通俗一點說就是語言。

   我們都知道世界上有很多種語言,比如:漢語,英語,阿拉伯語等等眾多的語言。要想用這些語言去和人溝通,如果你想和英國人說話,你必須得會英語吧。而我們的計算機也有它自己的語言,你要想讓計算機幫助我們做事情,你就需要和它溝通吧。那你就得懂得計算機語言吧,也就是程式設計。當然計算機也有很多語言,比如:C,Java,PHP,Python,C#等。所以我們就先從學習基礎知識開始。也有人說學習基礎理論知識很枯燥,但是,那還是得學。你要把它當成自己的興趣,一點一點的去投入它,相信你會是很棒的。

    程式用程式語言來寫程式,最終開發的結果就是一個軟體。就像大家都知道的QQ,騰訊視訊,酷狗音樂等一系列軟體。這些軟體要想執行必須得有系統控制它吧。當然,有人會問:為什麼要用作業系統呢?當然,很久以前的那些程式設計師確實是在沒有操作環境下,程式語言是操作硬體來編寫的。你可能覺得沒問題,但是其實問題很嚴重。如果一直像以前那樣會嚴重影響效率的。作業系統是出現在硬體之上的,是用來控制硬體的。所以,我們開發時只需要呼叫作業系統為我們提供的簡單的介面就可以了。

  

   如上圖所示,我把計算機的系統分為了上面三大塊。硬體,作業系統,應用程式。要想學習軟體知識,我想那些硬體的知識或多或少還是得了解點的,現在我們就來談談硬體一類的知識。

二、計算機硬體介紹

    1. 硬體的目的:為了執行軟體給它的一些指令。我們可以優先從硬體中提取出這三個主要的東西,分別是: CPU,記憶體,硬碟

       2. 在現實生活中,人腦是用來計算的,在計算機中,用來計算的是什麼呢?當然是CPU了。多數CPU都有兩種模式,即核心態與使用者態。這裡的即核心態與使用者態將會在下面的內容中講到。

       3.如果我們把計算機理解為人的大腦,我們可以總結為幾句話:

               CPU是人的大腦,負責運算

        記憶體是人的記憶,負責臨時儲存

        硬碟是人的筆記本,負責永久儲存

        輸入裝置是人的耳朵或眼睛,負責接受外部的資訊傳給CPU

        以上所有的裝置都通過匯流排連線,匯流排相當於人的神經

                                                                                            匯流排示意圖

三、處理器(暫存器及核心態與使用者態切換)

   1.計算機的大腦是CPU,它從記憶體中取指令-▶解碼-▶執行,然後在取指令,解碼,執行,周而復始,直至整個程式被執行完成。

   2. 暫存器是一個儲存裝置,最快的一種儲存裝置就是暫存器。

      3.暫存器的分類

      ①通用暫存器:用來儲存變數和臨時結果的。

      ②程式計數器:它儲存了將要取出的下一條指令的記憶體地址。在指令取出後,程式計算器就被更新以便執行後期的指令

      ③堆疊指標:它指向記憶體中當前棧的頂端。該棧包含已經進入但是還沒有退出的每個過程中的一個框架。在一個過程的堆疊框架中儲存了有關的輸入引數、區域性變數以及那些沒有儲存在暫存器中的臨時變數

      ④程式狀態字暫存器(Program Status Word,簡稱PSW):這個暫存器包含了條碼位(由比較指令設定)、CPU優先順序、模式(使用者態或核心態),以及各種其他控制位。使用者通常讀入整個PSW,但是隻對其中少量的欄位寫入。在系統呼叫和I/O中,PSW非常重要。

    4.核心態與使用者態

       多數CPU都有兩種模式,即核心態與使用者態。        

    ①當cpu處於核心狀態時,執行的是作業系統,能控制硬體(可以獲取所有cpu的指令集)     

    ②當cpu處於使用者太狀態時,執行的是使用者軟體,不能控制硬體(可以獲取所有cpu的指令集中的一個子集,該子集不包括操作硬體的指令集)

   這裡有些人可能會含糊什麼是核心態,什麼是使用者態?下面我來解釋一下:

    核心態:當cpu在核心態執行時,cpu可以執行指令集中所有的指令,很明顯,所有的指令中包含了使用硬體的所有功能,(作業系統在核心態下執行,從而可以訪問整個硬體)所以,歸根結底通俗一點的話也就是上面①解釋的那樣

    使用者態:使用者程式在使用者態下執行,僅僅只能執行cpu整個指令集的一個子集,該子集中不包含操作硬體功能的部分,因此,一般情況下,在使用者態中有關I/O和記憶體保護(作業系統佔用的記憶體是受保護的,不能被別的程式佔用),當然,在使用者態下,將PSW中的模式設定成核心態也是禁止的。

  5.核心態與使用者態切換

      使用者態下工作的軟體是不能之間操作硬體的,但是像我們的一些軟體,比如暴風音影啊一類的軟體,我們要想從磁碟中讀取一個電影檔案,那就得從使用者態切換成核心態,為此,使用者程式必須使用系統呼叫(system call),系統呼叫陷入核心並呼叫作業系統,TRAP指令把使用者態切換成核心態,並啟用作業系統從而獲得服務。

四、儲存器系列,L1快取,L2快取,記憶體(RAM),EEPROM和快閃記憶體,CMOSBIOS電池

       1.  計算機中第二重要的就是儲存了,所有人都意淫著儲存:速度快(這樣cpu的等待儲存器的延遲就降低了)+容量大+價錢便宜。然後同時兼備三者是不可能的,所以有了如下的不同的處理方式

由上圖可以很清楚的看見暫存器儲存是速度非常快的,但是它的容量卻很少。下來就是快取記憶體了。我就不一一介紹了,我相信大家應該可以看得懂這個圖。

 2.暫存器即L1快取:用與cpu相同材質製造,與cpu一樣快,因而cpu訪問它無時延,典型容量是:在32位cpu中為32*32,在64位cpu中為64*64,在兩種情況下容量均<1KB。

   3.快取記憶體即L2快取:主要由硬體控制快取記憶體的存取,記憶體中有快取記憶體行按照0~64位元組為行0,64~127為行1。。。最常用的快取記憶體行放置在cpu內部或者非常接近cpu的快取記憶體中。當某個程式需要讀一個儲存字時,快取記憶體硬體檢查所需要的快取記憶體行是否在快取記憶體中。

   4.記憶體:主存通常稱為隨機訪問儲存RAM,就是我們通常所說的記憶體,容量一直在不斷攀升,所有不能再快取記憶體中找到的,都會到主存中找,主存是易失性儲存,斷電後資料全部消失

   5.EEPROM(Electrically Erasable PROM,電可擦除可程式設計ROM)和快閃記憶體(flash memory)也是非易失性的。還有一類儲存器就是CMOS,它是易失性的,許多計算機利用CMOS儲存器來保持當前時間和日期。CMOS儲存器和遞增時間的電路由一小塊電池驅動,所以,即使計算機沒有加電,時間也仍然可以正確地更新,除此之外CMOS還可以儲存配置的引數,比如,哪一個是啟動磁碟等,之所以採用CMOS是因為它耗電非常少,一塊工廠原裝電池往往能使用若干年,但是當電池失效時,相關的配置和時間等都將丟失。

五、磁碟

1.磁碟由磁頭,磁軌,扇區組成的。

2.磁軌:每個磁頭可以讀取一段換新區域。把一個戈丁手臂位置上所以的磁軌合起來,組成一個柱面

3.每個磁軌劃成若干扇區,扇區典型的值是512位元組。

4.資料都存放於一段一段的扇區,即磁軌這個圓圈的一小段圓圈,從磁碟讀取一段資料需要經歷尋道時間和延遲時間,那麼什麼是尋道時間和延遲時間呢?

    平均尋道時間:機械手臂從一個柱面隨機移動到相鄰的柱面的時間成為尋到時間,找到了磁軌就以為著招到了資料所在的那個圈圈,但是還不知道資料具體這個圓圈的具體位置

    平均延遲時間:機械臂到達正確的磁軌之後還必須等待旋轉到資料所在的扇區下,這段時間成為延遲時間

 

 

六、磁帶

1.有些人會想磁帶是用來幹什麼的呢?當然,它也是記憶體之一,是用來儲存東西的,它的儲存量是相當大的,而且價錢也便宜。當遇上火災等緊急情況時,可以用磁帶來儲存我們的重要檔案。常常用來做備份(常見於大型資料庫系統中)。但是,它也有缺點,就是執行速度特別慢,效率低。

2.cpu和儲存器並不是作業系統唯一需要管理的資源,I/O裝置也是非常重要的一環。I/O裝置一般包括兩個部分:裝置控制器和裝置本身

控制器的功能:通常情況下對裝置的控制是非常複雜和具體的,控制器的任務就是為作業系統遮蔽這些複雜而具體的工作,提供給作業系統一個簡單而清晰的介面

裝置本身:有相對簡單的介面且標準的,這樣大家都可以為其編寫驅動程式了。要想呼叫裝置,必須根據該介面編寫複雜而具體的程式,於是有了控制器提供裝置驅動介面給作業系統。必須把裝置驅動程式安裝到作業系統中。

七、匯流排

    北橋即PCI橋:連線高速裝置

     南橋即ISA橋:連線慢速裝置

 

八、作業系統的啟動流程

  1.計算機加電

  2.BIOS開始執行,檢測硬體:cpu、記憶體、硬碟等

  3.BIOS讀取CMOS儲存器中的引數,選擇啟動裝置

  4.從啟動裝置上讀取第一個扇區的內容(MBR主引導記錄512位元組,前446為引導資訊,後64為分割槽資訊,最後兩個為標誌位)

  5.根據分割槽資訊讀入bootloader啟動裝載模組,啟動作業系統

  6.然後作業系統詢問BIOS,以獲得配置資訊。對於每種裝置,系統會檢查其裝置驅動程式是否存在,如果沒有,系統則會要求使用者按照裝置驅動程式。一旦有了全部的裝置驅動程式,作業系統就將它們調入核心。然後初始有關的表格(如程序表),穿件需要的程序,並在每個終端上啟動登入程式或GUI

九、應用程式的啟動流程

  1.雙擊快捷方式

  2.告訴作業系統一個檔案路徑

  3.作業系統從硬碟讀取檔案到記憶體中

  4.cpu從記憶體中讀取資料執行

   

一、為何要學習計算機基礎?

           好多人覺得自己有點基礎就都想著直接敲程式碼,覺得基礎知識很容易,很簡單,就不怎麼用心去學。然而,我覺得基礎知識很重要。就像蓋一棟樓房一樣,你先要打好地基,再去蓋房。    

   Python是一門程式語言,即通俗一點說就是語言。

   我們都知道世界上有很多種語言,比如:漢語,英語,阿拉伯語等等眾多的語言。要想用這些語言去和人溝通,如果你想和英國人說話,你必須得會英語吧。而我們的計算機也有它自己的語言,你要想讓計算機幫助我們做事情,你就需要和它溝通吧。那你就得懂得計算機語言吧,也就是程式設計。當然計算機也有很多語言,比如:C,Java,PHP,Python,C#等。所以我們就先從學習基礎知識開始。也有人說學習基礎理論知識很枯燥,但是,那還是得學。你要把它當成自己的興趣,一點一點的去投入它,相信你會是很棒的。

    程式用程式語言來寫程式,最終開發的結果就是一個軟體。就像大家都知道的QQ,騰訊視訊,酷狗音樂等一系列軟體。這些軟體要想執行必須得有系統控制它吧。當然,有人會問:為什麼要用作業系統呢?當然,很久以前的那些程式設計師確實是在沒有操作環境下,程式語言是操作硬體來編寫的。你可能覺得沒問題,但是其實問題很嚴重。如果一直像以前那樣會嚴重影響效率的。作業系統是出現在硬體之上的,是用來控制硬體的。所以,我們開發時只需要呼叫作業系統為我們提供的簡單的介面就可以了。

  

   如上圖所示,我把計算機的系統分為了上面三大塊。硬體,作業系統,應用程式。要想學習軟體知識,我想那些硬體的知識或多或少還是得了解點的,現在我們就來談談硬體一類的知識。

二、計算機硬體介紹

    1. 硬體的目的:為了執行軟體給它的一些指令。我們可以優先從硬體中提取出這三個主要的東西,分別是: CPU,記憶體,硬碟

       2. 在現實生活中,人腦是用來計算的,在計算機中,用來計算的是什麼呢?當然是CPU了。多數CPU都有兩種模式,即核心態與使用者態。這裡的即核心態與使用者態將會在下面的內容中講到。

       3.如果我們把計算機理解為人的大腦,我們可以總結為幾句話:

               CPU是人的大腦,負責運算

        記憶體是人的記憶,負責臨時儲存

        硬碟是人的筆記本,負責永久儲存

        輸入裝置是人的耳朵或眼睛,負責接受外部的資訊傳給CPU

        以上所有的裝置都通過匯流排連線,匯流排相當於人的神經

                                                                                            匯流排示意圖

三、處理器(暫存器及核心態與使用者態切換)

   1.計算機的大腦是CPU,它從記憶體中取指令-▶解碼-▶執行,然後在取指令,解碼,執行,周而復始,直至整個程式被執行完成。

   2. 暫存器是一個儲存裝置,最快的一種儲存裝置就是暫存器。

      3.暫存器的分類

      ①通用暫存器:用來儲存變數和臨時結果的。

      ②程式計數器:它儲存了將要取出的下一條指令的記憶體地址。在指令取出後,程式計算器就被更新以便執行後期的指令

      ③堆疊指標:它指向記憶體中當前棧的頂端。該棧包含已經進入但是還沒有退出的每個過程中的一個框架。在一個過程的堆疊框架中儲存了有關的輸入引數、區域性變數以及那些沒有儲存在暫存器中的臨時變數

      ④程式狀態字暫存器(Program Status Word,簡稱PSW):這個暫存器包含了條碼位(由比較指令設定)、CPU優先順序、模式(使用者態或核心態),以及各種其他控制位。使用者通常讀入整個PSW,但是隻對其中少量的欄位寫入。在系統呼叫和I/O中,PSW非常重要。

    4.核心態與使用者態

       多數CPU都有兩種模式,即核心態與使用者態。        

    ①當cpu處於核心狀態時,執行的是作業系統,能控制硬體(可以獲取所有cpu的指令集)     

    ②當cpu處於使用者太狀態時,執行的是使用者軟體,不能控制硬體(可以獲取所有cpu的指令集中的一個子集,該子集不包括操作硬體的指令集)

   這裡有些人可能會含糊什麼是核心態,什麼是使用者態?下面我來解釋一下:

    核心態:當cpu在核心態執行時,cpu可以執行指令集中所有的指令,很明顯,所有的指令中包含了使用硬體的所有功能,(作業系統在核心態下執行,從而可以訪問整個硬體)所以,歸根結底通俗一點的話也就是上面①解釋的那樣

    使用者態:使用者程式在使用者態下執行,僅僅只能執行cpu整個指令集的一個子集,該子集中不包含操作硬體功能的部分,因此,一般情況下,在使用者態中有關I/O和記憶體保護(作業系統佔用的記憶體是受保護的,不能被別的程式佔用),當然,在使用者態下,將PSW中的模式設定成核心態也是禁止的。

  5.核心態與使用者態切換

      使用者態下工作的軟體是不能之間操作硬體的,但是像我們的一些軟體,比如暴風音影啊一類的軟體,我們要想從磁碟中讀取一個電影檔案,那就得從使用者態切換成核心態,為此,使用者程式必須使用系統呼叫(system call),系統呼叫陷入核心並呼叫作業系統,TRAP指令把使用者態切換成核心態,並啟用作業系統從而獲得服務。

四、儲存器系列,L1快取,L2快取,記憶體(RAM),EEPROM和快閃記憶體,CMOSBIOS電池

       1.  計算機中第二重要的就是儲存了,所有人都意淫著儲存:速度快(這樣cpu的等待儲存器的延遲就降低了)+容量大+價錢便宜。然後同時兼備三者是不可能的,所以有了如下的不同的處理方式

由上圖可以很清楚的看見暫存器儲存是速度非常快的,但是它的容量卻很少。下來就是快取記憶體了。我就不一一介紹了,我相信大家應該可以看得懂這個圖。

 2.暫存器即L1快取:用與cpu相同材質製造,與cpu一樣快,因而cpu訪問它無時延,典型容量是:在32位cpu中為32*32,在64位cpu中為64*64,在兩種情況下容量均<1KB。

   3.快取記憶體即L2快取:主要由硬體控制快取記憶體的存取,記憶體中有快取記憶體行按照0~64位元組為行0,64~127為行1。。。最常用的快取記憶體行放置在cpu內部或者非常接近cpu的快取記憶體中。當某個程式需要讀一個儲存字時,快取記憶體硬體檢查所需要的快取記憶體行是否在快取記憶體中。

   4.記憶體:主存通常稱為隨機訪問儲存RAM,就是我們通常所說的記憶體,容量一直在不斷攀升,所有不能再快取記憶體中找到的,都會到主存中找,主存是易失性儲存,斷電後資料全部消失

   5.EEPROM(Electrically Erasable PROM,電可擦除可程式設計ROM)和快閃記憶體(flash memory)也是非易失性的。還有一類儲存器就是CMOS,它是易失性的,許多計算機利用CMOS儲存器來保持當前時間和日期。CMOS儲存器和遞增時間的電路由一小塊電池驅動,所以,即使計算機沒有加電,時間也仍然可以正確地更新,除此之外CMOS還可以儲存配置的引數,比如,哪一個是啟動磁碟等,之所以採用CMOS是因為它耗電非常少,一塊工廠原裝電池往往能使用若干年,但是當電池失效時,相關的配置和時間等都將丟失。

五、磁碟

1.磁碟由磁頭,磁軌,扇區組成的。

2.磁軌:每個磁頭可以讀取一段換新區域。把一個戈丁手臂位置上所以的磁軌合起來,組成一個柱面

3.每個磁軌劃成若干扇區,扇區典型的值是512位元組。

4.資料都存放於一段一段的扇區,即磁軌這個圓圈的一小段圓圈,從磁碟讀取一段資料需要經歷尋道時間和延遲時間,那麼什麼是尋道時間和延遲時間呢?

    平均尋道時間:機械手臂從一個柱面隨機移動到相鄰的柱面的時間成為尋到時間,找到了磁軌就以為著招到了資料所在的那個圈圈,但是還不知道資料具體這個圓圈的具體位置

    平均延遲時間:機械臂到達正確的磁軌之後還必須等待旋轉到資料所在的扇區下,這段時間成為延遲時間

 

 

六、磁帶

1.有些人會想磁帶是用來幹什麼的呢?當然,它也是記憶體之一,是用來儲存東西的,它的儲存量是相當大的,而且價錢也便宜。當遇上火災等緊急情況時,可以用磁帶來儲存我們的重要檔案。常常用來做備份(常見於大型資料庫系統中)。但是,它也有缺點,就是執行速度特別慢,效率低。

2.cpu和儲存器並不是作業系統唯一需要管理的資源,I/O裝置也是非常重要的一環。I/O裝置一般包括兩個部分:裝置控制器和裝置本身

控制器的功能:通常情況下對裝置的控制是非常複雜和具體的,控制器的任務就是為作業系統遮蔽這些複雜而具體的工作,提供給作業系統一個簡單而清晰的介面

裝置本身:有相對簡單的介面且標準的,這樣大家都可以為其編寫驅動程式了。要想呼叫裝置,必須根據該介面編寫複雜而具體的程式,於是有了控制器提供裝置驅動介面給作業系統。必須把裝置驅動程式安裝到作業系統中。

七、匯流排

    北橋即PCI橋:連線高速裝置

     南橋即ISA橋:連線慢速裝置

 

八、作業系統的啟動流程

  1.計算機加電

  2.BIOS開始執行,檢測硬體:cpu、記憶體、硬碟等

  3.BIOS讀取CMOS儲存器中的引數,選擇啟動裝置

  4.從啟動裝置上讀取第一個扇區的內容(MBR主引導記錄512位元組,前446為引導資訊,後64為分割槽資訊,最後兩個為標誌位)

  5.根據分割槽資訊讀入bootloader啟動裝載模組,啟動作業系統

  6.然後作業系統詢問BIOS,以獲得配置資訊。對於每種裝置,系統會檢查其裝置驅動程式是否存在,如果沒有,系統則會要求使用者按照裝置驅動程式。一旦有了全部的裝置驅動程式,作業系統就將它們調入核心。然後初始有關的表格(如程序表),穿件需要的程序,並在每個終端上啟動登入程式或GUI

九、應用程式的啟動流程

  1.雙擊快捷方式

  2.告訴作業系統一個檔案路徑

  3.作業系統從硬碟讀取檔案到記憶體中

  4.cpu從記憶體中讀取資料執行