標籤:電腦基礎 學習電腦 賓夕法尼亞 電腦硬體 整合電路
一、學習電腦基礎的目的
再進階的程式設計語言都是運行在作業系統之上的,而作業系統又是運行在硬體基礎之上。所以在開始學習編程之前需要深刻的瞭解並熟知電腦的基礎知識。包括硬體基礎及作業系統基礎。
二、電腦硬體發展史
電腦的定義:是現代用於高速計算的一種電子電腦器,可以進行數值計算,又可以進行邏輯計算,還具有儲存記憶功能。
發展史:
原型或者說靈感起源於中國
1946年2月14日情人節這天,世界上第一台電子電腦“電子數字積分電腦ENIAC”在美國賓夕法尼亞大學問世。
電子管時代---晶體管時代---整合電路時代---大規模超大規模整合電路
三、電腦的組成
硬體系統的組成:運算器,控制器,儲存空間,輸入裝置,輸出裝置
硬體系統---作業系統---應用軟體
作業系統其實也是一個系統軟體,用來控制和協調電腦及外部裝置,應用軟體就是例如QQ、魔獸世界等此類軟體。
四、電腦硬體介紹
CPU、儲存空間、視頻監視器、鍵盤控制器、Usb控制器、硬碟控制器、及顯示器、鍵盤、滑鼠、、硬碟、音效卡、顯卡等等都屬於電腦硬體。
1.CPU
CPU負責計算,記憶體及硬碟負責儲存資訊,滑鼠鍵盤用來給電腦輸入指令,顯示器用於輸出運算資訊。
CPU從記憶體中取指令--》解碼--》執行,然後再迴圈往複執行此操作,每個CPU都有自己的一套指令集,不同架構的CPU運行不了不支援此指令集的程式。
關於寄存器的概念:
寄存器分類:通用寄存器(用於儲存變數和臨時結果)、程式計數器(記錄程式執行的位置)、堆棧指標(先進後出,和隊列正好相反)、程式狀態字寄存器(很重要的一個寄存器,包含了CPU優先順序、CPU模式、還有其他控制位)
CPU有兩種模式:使用者態和核心態,當核心態時,cpu可以執行所有指令,也就意味著它可以調度硬體,但是在使用者態下只能執行部分指令集,也就是說不能夠調度硬體。使用者態和核心態之前的切換通過“系統調用”來實現。
多線程和多核晶片:CPU中有L1、L2、L3各種緩衝,緩衝的製作材質與CPU的材質相同,所以cpu訪問緩衝時沒有延遲。為了增強CPU的效能,intel公司提出了多線程的概念,進程是資源單位而線程才是CPU的執行單位。
2.儲存空間
理想的儲存空間當然是速度快容量大價格便宜,但目前的技術發展的水平來看是不可能的。
儲存空間大概有以下幾種:寄存器、快取、記憶體、硬碟、磁帶,從前到後基本上是速度越來越慢,容量越來越大,體積也越來越大。L1緩衝即寄存器在32位系統中大小為32*32,在64位系統中為64*64,與CPU的速度一樣快。快取就是L2,當某個程式需要讀一個儲存字時,快取硬體檢查所需要的快取行是否在快取中,如果是,則稱為快取命中,否則稱為快取未命中,這時候就要去記憶體中讀取資料。
主存:即記憶體,是RAM,斷電丟失。ROM是非易失性隨機訪問儲存,EEPROM是電可擦除ROM是非易失性的。CMOS:易失性,可儲存時間及日期,其他一些硬體的配置參數,啟動磁碟等資訊,通常有一塊電池供電,位於主板上。
硬碟:判斷硬碟的兩個指標,一個是轉速,一個是容量。8個bit=1Bytes,1024Bytes=1KB,1024K=1MB,1024MB=1GB,所以我們平時所說的磁碟容量最終指的就是磁碟能寫多少個2進位位。硬碟是由許多碟片堆疊而成的,中間有盤柱,還有機械手臂,每個碟片都有一個磁頭。一個扇區的值為512個位元組,在Linux系統中,資料以Block塊進行儲存。八個扇區形成了一個塊,即4KB。資料都存放於一段一段的扇區,即磁軌這個圓圈的一小段圓圈,從磁碟讀取一段資料需要經曆尋道時間和延遲時間 ,尋道時間就是機械手臂找到資料所在的磁軌的時間,延遲時間就是磁頭在磁軌上找到所需資料的平均時間。
虛擬記憶體:根據現實情況,電腦的記憶體在某些時候很顯然是不能滿足大程式的啟動並執行要求的,比如實體記憶體大小是2G,而這時有一個8G的程式需要運行,那麼電腦這時候就需要通過儲存空間嵌入式管理單元MMU找到硬碟中對應的一塊地方並將其劃分為虛擬記憶體。Linux系統下的swap分區其實就是虛擬記憶體
環境切換:從一個程式切換到另一個程式上去運行,可以提升系統的效能。
磁帶:容量大,常用於大型資料庫系統備份
I/O裝置:包括裝置控制器和裝置自身,每一個插硬體的地方都有一個裝置控制器。
匯流排:650) this.width=650;" src="https://s2.51cto.com/wyfs02/M02/8E/83/wKiom1jCcoiABnFjAAIHHgd2Qvk684.png-wh_500x0-wm_3-wmp_4-s_1580744704.png" title="匯流排.png" alt="wKiom1jCcoiABnFjAAIHHgd2Qvk684.png-wh_50" />
北橋串連的都是諸如:快取、CPU、記憶體等高速裝置
南橋串連的都是諸如:硬碟、顯卡、USB裝置、音效卡等低速裝置
五、電腦啟動過程
第一步:通電
第二步:運行BIOS,檢測CPU、記憶體、硬碟等
第三步:讀取CMOS中的資訊,包括硬體設定資訊及系統啟動盤選擇
第四步:讀取啟動盤的第0磁軌的第一個扇區,也就是MBR(主引導記錄),共512個位元組,前446個 位元組為引導資訊,中間64個位元組為分區資訊,後2個位元組為標誌位
第五步:根據MBR讀入相應的啟動模組從而啟動作業系統
第六步:這時候作業系統再詢問BIOS,擷取配置資訊和硬體資訊,並檢測其驅動程式的存在,如果 沒有會提示安裝,如果都有驅動程式,作業系統便將它們調入記憶體運行,然後建立相應進 程,運行圖形化使用者介面。至此,電腦啟動完成。
附:linux啟動過程
第一步--載入BIOS
當你開啟電腦電源,電腦會首先載入BIOS資訊,BIOS資訊是如此的重要,以至於電腦必須在最開始就找到它。這是因為BIOS中包含了CPU的相關資訊、裝置啟動順序資訊、硬碟資訊、記憶體資訊、時鐘資訊、PnP特性等等。在此之後,電腦心裡就有譜了,知道應該去讀取哪個硬體裝置了。
第二步--讀取MBR
眾所周知,硬碟上第0磁軌第一個扇區被稱為MBR,也就是Master Boot Record,即主引導記錄,它的大小是512位元組,別看地方不大,可裡面卻存放了開機前資訊、分區表資訊。
系統找到BIOS所指定的硬碟的MBR後,就會將其複製到0x7c00地址所在的實體記憶體中。其實被複製到實體記憶體的內容就是Boot Loader,而具體到你的電腦,那就是lilo或者grub了。
第三步--Boot Loader / Grup
Boot Loader 就是在作業系統核心運行之前啟動並執行一段小程式。通過這段小程式,我們可以初始化硬體裝置、建立記憶體空間的映射圖,從而將系統的軟硬體環境帶到一個合適的狀態,以便為最終叫用作業系統核心做好一切準備。
Boot Loader有若干種,其中Grub、Lilo和spfdisk是常見的Loader。
我們以Grub為例來講解吧,畢竟用lilo和spfdisk的人並不多。
系統讀取記憶體中的grub配置資訊(一般為menu.lst或grub.lst),並依照此配置資訊來啟動不同的 作業系統。
第四步--載入核心
根據grub設定的核心映像所在路徑,系統讀取記憶體映像,並進行解壓縮操作。此時,螢幕一般會輸出“Uncompressing Linux”的提示。當解壓縮核心完成後,螢幕輸出“OK,booting the kernel”。
系統將解壓後的核心放置在記憶體之中,並調用start_kernel()函數來啟動一系列的初始化函數並初始化各種裝置,完成Linux核心環境的建立。至此,Linux核心已經建立起來了,基於Linux的程式應該可以正常運行了。
第五步--使用者層init依據inittab檔案來設定運行等級
核心被載入後,第一個啟動並執行程式便是/sbin/init,該檔案會讀取/etc/inittab檔案,並依據此檔案來進行初始化工作。
其實/etc/inittab檔案最主要的作用就是設定Linux的運行等級,其設定形式是“:id:5:initdefault:”,這就表明Linux需要運行在等級5上。Linux的運行等級設定如下:
0:關機
1:單一使用者模式
2:無網路支援的多使用者模式
3:有網路支援的多使用者模式
4:保留,未使用
5:有網路支援有X-Window支援的多使用者模式
6:重新引導系統,即重啟
關於/etc/inittab檔案的學問,其實還有很多。
第六步--init進程執行rc.sysinit
在設定了運行等級後,Linux系統執行的第一個使用者層檔案就是/etc/rc.d/rc.sysinit指令碼程式,它做的工作非常多,包括設定PATH、設定網路設定(/etc/sysconfig/network)、啟動swap分區、設定/proc等等。如果你有興趣,可以到/etc/rc.d中查看一下rc.sysinit檔案,裡面的指令碼夠你看幾天的。
啟動第七步--啟動核心模組
具體是依據/etc/modules.conf檔案或/etc/modules.d目錄下的檔案來裝載核心模組。
啟動第八步--執行不同運行層級的指令碼程式(/etc/rc.d/rc $RUNLEVEL #$RUNLEVEL為預設的運行模式 )
根據運行層級的不同,系統會運行rc0.d到rc6.d中的相應的指令碼程式,來完成相應的初始化工作和啟動相應的服務。
第九步--執行/etc/rc.d/rc.local
你如果開啟了此檔案,裡面有一句話,讀過之後,你就會對此命令的作用一目瞭然:
# This script will beexecuted *after* all the other init scripts.
# You can put your own initialization stuff in here if you don’t
# want to do the full Sys V style init stuff.
rc.local就是在一切初始化工作後,Linux留給使用者進行個人化的地方。你可以把你想設定和啟動的東西放到這裡。
第十步--執行/bin/login程式,進入登入狀態
此時,系統已經進入到了等待使用者輸入username和password的時候了,你已經可以用自己的帳號登入系統了。
Python學習第一天----電腦基礎