计算机系统 学习笔记(0)南京大学(一)第一周
課程:計(jì)算機(jī)系統(tǒng)基礎(chǔ)
核心理念:人類(lèi)世界與計(jì)算機(jī)世界的異同
- 人類(lèi)世界
- 直觀感受
- 數(shù)學(xué)
- 計(jì)算機(jī)世界
- 與數(shù)學(xué)不同,存儲(chǔ)首先,各層次與現(xiàn)實(shí)世界不同
我們關(guān)注點(diǎn)是差異點(diǎn)!
一樣的你就不用關(guān)心了,關(guān)心差異!差異在哪里呢?
- 計(jì)算機(jī)存儲(chǔ)是首先了
- 編譯器規(guī)則
- 編碼轉(zhuǎn)換規(guī)則
- ……
計(jì)算機(jī)這個(gè)工具,最重要的就是將人類(lèi)思維產(chǎn)物,使用計(jì)算機(jī)實(shí)現(xiàn)。
因此說(shuō),有很多地方,是直接可以直觀地去實(shí)現(xiàn)邏輯思維過(guò)程的(語(yǔ)義上就能理解),但是也有計(jì)算機(jī)的一些特點(diǎn),需要我們專(zhuān)門(mén)去把握(從計(jì)算機(jī)本身處理方式和規(guī)則去理解)!
面向機(jī)器描述,機(jī)器級(jí)語(yǔ)言:機(jī)器語(yǔ)言和匯編語(yǔ)言
二者都是面向機(jī)器結(jié)構(gòu)的語(yǔ)言,與機(jī)器有關(guān),不同機(jī)器(不同的系統(tǒng)結(jié)構(gòu))就不一樣了,移植性不好。
面向算法描述:高級(jí)語(yǔ)言
根據(jù)人的邏輯思維方式,產(chǎn)生的產(chǎn)物來(lái)編程,越來(lái)越接近人類(lèi)思考方式。機(jī)器無(wú)關(guān)!因?yàn)閮?nèi)些部分交給編譯器處理了,編譯器來(lái)完成機(jī)器相關(guān)性的處理,這也是一種封裝。
執(zhí)行hello world程序
這里值得注意的關(guān)鍵點(diǎn)是緩存技術(shù),我們將存儲(chǔ)器進(jìn)行分層設(shè)計(jì),從而 平衡了存儲(chǔ)的容量、速度和價(jià)格等多方面因素:
- 緩存1:磁盤(pán)存儲(chǔ)可執(zhí)行程序的二進(jìn)制信息,速度慢容量大價(jià)格低
- 緩存2:執(zhí)行程序的時(shí)候調(diào)入內(nèi)存中,速度比磁盤(pán)快的多
- 緩存3:內(nèi)存中的二進(jìn)制代碼調(diào)入cache中,速度更快
- 緩存4:cache內(nèi)容調(diào)入到CPU寄存器中,速度最快
我們可以體會(huì)到,計(jì)算機(jī)通過(guò)多層次緩存完成了程序的一步步緩沖,通過(guò)CPU控制它們,從而有了我們現(xiàn)在看見(jiàn)的計(jì)算機(jī)系統(tǒng)。
使用高級(jí)語(yǔ)言開(kāi)發(fā)程序需要的環(huán)境
早期原始程序開(kāi)發(fā)方式
早期沒(méi)有高級(jí)語(yǔ)言,也沒(méi)有那么多的復(fù)雜上層環(huán)境,我們只需要直接使用匯編語(yǔ)言/機(jī)器語(yǔ)言輸入到計(jì)算機(jī)中執(zhí)行即可,這個(gè)過(guò)程,對(duì)于計(jì)算機(jī)來(lái)說(shuō)很簡(jiǎn)單,也不需要有太多復(fù)雜的處理,但是對(duì)于人類(lèi)來(lái)說(shuō),編程是一件非常痛苦的事情啊……
現(xiàn)代高級(jí)語(yǔ)言程序開(kāi)發(fā)方式
高級(jí)語(yǔ)言的但是,解決了匯編語(yǔ)言開(kāi)發(fā)時(shí)代的困難,不過(guò)也因此,計(jì)算機(jī)需要處理的工作復(fù)雜起來(lái)了,也就是,人類(lèi)世界通往計(jì)算機(jī)世界的通道變復(fù)雜了。
那么這里都具體包括了什么呢,我們依次說(shuō)明一下
人類(lèi)世界:高級(jí)語(yǔ)言
我們發(fā)明高級(jí)語(yǔ)言,其實(shí)是一種對(duì)計(jì)算機(jī)的權(quán)衡與妥協(xié)。
高級(jí)語(yǔ)言
權(quán)衡之下,高級(jí)語(yǔ)言成了人類(lèi)與計(jì)算機(jī)世界溝通的通行語(yǔ)言。就像英語(yǔ)是國(guó)際通行語(yǔ)言內(nèi)樣。
任何事務(wù)都有實(shí)體和抽象,人類(lèi)的是:
- 實(shí)體:人類(lèi)的肉體
- 抽象:高級(jí)語(yǔ)言
橋梁/通道
橋梁和通道,也可以叫翻譯官,它負(fù)責(zé)連接人類(lèi)世界和計(jì)算機(jī)世界
- 傳入和轉(zhuǎn)換
- 傳入:鍵盤(pán),鼠標(biāo)
- 通過(guò)鍵盤(pán)和鼠標(biāo),還有文本編輯器,我們就能夠往計(jì)算機(jī)中輸入高級(jí)語(yǔ)言并存儲(chǔ)在磁盤(pán)中 ,完成源程序的編輯
- 轉(zhuǎn)換:人類(lèi)世界傳入的,它給轉(zhuǎn)換成計(jì)算機(jī)世界能夠接受的
- 對(duì)于源程序,我們需要進(jìn)行一系列的轉(zhuǎn)換,最終將其轉(zhuǎn)換為二進(jìn)制
- 源程序 –編譯器–> 匯編代碼 –匯編器–> 可重定位二進(jìn)制 –鏈接–> 二進(jìn)制的可執(zhí)行文件
- 傳入:鍵盤(pán),鼠標(biāo)
- 傳出和轉(zhuǎn)換
- 傳出:顯示器
- 計(jì)算機(jī)傳出信息,通過(guò)顯示器轉(zhuǎn)換為人類(lèi)可以識(shí)別的信息
- 轉(zhuǎn)換:計(jì)算機(jī)世界傳出的,它給轉(zhuǎn)換為人類(lèi)世界能夠接受的
- 傳出:顯示器
它的實(shí)體和抽象是
- 實(shí)體:鍵盤(pán)、鼠標(biāo)、顯示器、存儲(chǔ)器…
- 抽象:轉(zhuǎn)換邏輯(邏輯的實(shí)現(xiàn)構(gòu)成了編譯器、匯編器等)
計(jì)算機(jī)世界:二進(jìn)制的世界
計(jì)算機(jī)世界是最終處理二進(jìn)制指令和數(shù)據(jù)的地方。
- 實(shí)體:CPU
- 抽象:ISA,指令集架構(gòu)
大管家:操作系統(tǒng)
操作系統(tǒng)負(fù)責(zé)接收CPU發(fā)出的控制信號(hào),負(fù)責(zé)管理計(jì)算機(jī)世界以及橋梁的各種控制方式。
操作系統(tǒng)也接收人類(lèi)世界發(fā)出的命令,讓計(jì)算機(jī)執(zhí)行,也就是人機(jī)接口。
計(jì)算機(jī)的發(fā)展:抽象層次不斷提高
ISA是計(jì)算機(jī)硬件的抽象。
ISA與微架構(gòu)
微架構(gòu)就是指令集架構(gòu)的實(shí)現(xiàn)形式,是硬件實(shí)現(xiàn)。同一個(gè)ISA,可以有不同的微架構(gòu)來(lái)實(shí)現(xiàn),只要完成了ISA規(guī)范即可。
不同指令的組合,實(shí)現(xiàn)了通用計(jì)算機(jī),否則,如果只能是固定的程序,那就是專(zhuān)用計(jì)算機(jī)了,就像現(xiàn)在的量子計(jì)算機(jī)“九章”一樣,是專(zhuān)用量子計(jì)算機(jī),是不可編程的。
先設(shè)計(jì),再實(shí)現(xiàn);先抽象,再具象
對(duì)于計(jì)算機(jī)的發(fā)展過(guò)程來(lái)說(shuō),是自底向上一層層抽象和封裝的。
但是對(duì)于程序員來(lái)說(shuō),通常是先設(shè)計(jì),再實(shí)現(xiàn),也就是從人類(lèi)思維出發(fā),先完成抽象,再進(jìn)行實(shí)現(xiàn)的,是自上而下的。當(dāng)然這不是絕對(duì)是,人類(lèi)的思維過(guò)程更多會(huì)受到整體性的、系統(tǒng)思維的影響。
計(jì)算機(jī)層次結(jié)構(gòu)
ISA是最重要的層次,它向下影響硬件結(jié)構(gòu),向上影響操作系統(tǒng)等。
指令集架構(gòu)是計(jì)算機(jī)硬件結(jié)構(gòu)的抽象,然后,對(duì)于抽象出來(lái)是指令,我們可以對(duì)其進(jìn)行各種排列組合,根據(jù)人類(lèi)的抽象思維,來(lái)編寫(xiě)程序,讓硬件運(yùn)行起來(lái),指令是可以有各種排列組合的,這也就是通用計(jì)算機(jī)。
我們編寫(xiě)的程序,如果直接運(yùn)行,那就只有3層結(jié)構(gòu),是最原始的通用計(jì)算機(jī)。
后來(lái)人類(lèi)發(fā)明了助記符,形成了匯編語(yǔ)言,它與機(jī)器語(yǔ)言一一對(duì)應(yīng),但是需要翻譯,因此需要匯編器,人類(lèi)需要編輯匯編指令,也需要管理,因此就初代的操作系統(tǒng),此時(shí),一個(gè)能夠?qū)崿F(xiàn)匯編語(yǔ)言程序設(shè)計(jì)的二代計(jì)算機(jī)就誕生了。
再后來(lái),操作系統(tǒng)演變更加復(fù)雜,同時(shí)高級(jí)語(yǔ)言和編譯器也有了,這是現(xiàn)代經(jīng)典計(jì)算機(jī)雛形。
計(jì)算機(jī)的發(fā)展,實(shí)現(xiàn)了一層層的抽象和封裝,讓人類(lèi)成了會(huì)飛的湯姆貓。
這沒(méi)什么不好的,但是身為計(jì)算機(jī)專(zhuān)業(yè)人士,我們需要足夠了解底層機(jī)制,如果哪一天幫助飛行的火箭不好用了,我們也能分析原因并處理。
- 指令集架構(gòu)ISA是對(duì)計(jì)算機(jī)硬件的抽象
- 操作系統(tǒng)是對(duì)ISA的抽象和保護(hù),它對(duì)外僅提供API
- 編譯器匯編器,以及編程語(yǔ)言,調(diào)用了操作系統(tǒng)的接口,也就是它提供的系統(tǒng)調(diào)用,完成了高級(jí)語(yǔ)言的庫(kù)函數(shù),對(duì)程序員進(jìn)行了進(jìn)一步封裝
- 程序員現(xiàn)在更多需要關(guān)注的是做什么,而不是怎么做,因?yàn)榇蠖嗟墓δ芏急蛔銐虻膬?yōu)化和封裝了,人類(lèi),就應(yīng)該更多思考人類(lèi)該做的事情,機(jī)器能做的讓它自動(dòng)做,人類(lèi)就不用思考了,但是,人類(lèi)必須懂機(jī)器在做的事情,這本身就是人類(lèi)發(fā)明的,不懂底層,干啥啥不行。
ISA
ISA說(shuō)白了就是規(guī)范,人們都要按照這個(gè)規(guī)范去設(shè)計(jì)計(jì)算機(jī)硬件和軟件,從而讓所有遵循規(guī)范的人能夠互通有無(wú),提高溝通效率。編程語(yǔ)言是唯一全球化的通用語(yǔ)言,這非常酷!
微架構(gòu)
至于微架構(gòu),就是ISA的硬件實(shí)現(xiàn),只需要指定,同樣的ISA,可以使用各種各樣的微架構(gòu)實(shí)現(xiàn),這很好理解不是嗎,就好比單周期CPU和流水線CPU內(nèi)樣,或者一個(gè)乘法指令可以有很多具體實(shí)現(xiàn)方式。
總結(jié)
以上是生活随笔為你收集整理的计算机系统 学习笔记(0)南京大学(一)第一周的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 女性不孕有什么症状
- 下一篇: Web页面,vue技术环境,怎么实现像微