大學(xué)計(jì)算機(jī)基礎(chǔ)知識(shí)點(diǎn)整理
發(fā)布時(shí)間:2025-10-17 | 來源:互聯(lián)網(wǎng)轉(zhuǎn)載和整理
1、計(jì)算機(jī)組成原理
如果你不是做操作系統(tǒng)/驅(qū)動(dòng)程序的,直接和硬件打交道的機(jī)會(huì)很少,因?yàn)椴僮飨到y(tǒng)已經(jīng)把他們屏蔽掉了,提供了抽象的API給我們使用。
但是還必須理解馮諾依曼體系的結(jié)構(gòu),CPU和內(nèi)存,硬盤,各種外設(shè)之間的關(guān)系,寄存器、緩存等知識(shí)。CPU有哪些指令,如何執(zhí)行這些指令,如果實(shí)現(xiàn)數(shù)組,結(jié)構(gòu)體,函數(shù)調(diào)用,這就涉及到匯編的知識(shí)。像原碼反碼,補(bǔ)碼,定點(diǎn)數(shù)、浮點(diǎn)數(shù)的表示和運(yùn)算也是編程中必備的知識(shí),幾乎每種語(yǔ)言都要涉及。
現(xiàn)在很多語(yǔ)言都是在虛擬機(jī)上運(yùn)行的,你只要是了解了計(jì)算機(jī)的組成原理,再去看哪些虛擬機(jī),就會(huì)發(fā)現(xiàn)概念都是相通的。另外CPU中的緩存,緩存一致性協(xié)議,DMA的異步思想都會(huì)在應(yīng)用層中有所體現(xiàn)?!毒幋a》是一個(gè)更加科普性,但是也更加有趣的講組成原理的書。
2、操作系統(tǒng)
操作系統(tǒng)是比較枯燥的,站在應(yīng)用層的角度,我認(rèn)為重點(diǎn)是掌握操作系統(tǒng)對(duì)外提供的抽象,包括進(jìn)程、線程,文件,虛擬內(nèi)存,以及進(jìn)程間的通信問題。
幾乎所有的編程語(yǔ)言都會(huì)涉及到對(duì)多進(jìn)程或者多線程編程的支持,特別是多線程的并發(fā)編程,所以必須得搞明白他們的本質(zhì)是什么,線程都有哪些實(shí)現(xiàn)方式。得真正地體會(huì)到“進(jìn)程是資源分配的最小單位,線程是調(diào)度的最小單位?!边@句話的含義。
幾乎所有的編程語(yǔ)言都會(huì)涉及到鎖和死鎖,最好在最底層理解鎖是怎么實(shí)現(xiàn)的。需要理解虛擬內(nèi)存和物理內(nèi)存直接的關(guān)系,分段和分頁(yè),文件系統(tǒng)的基本原理。對(duì)于進(jìn)程的調(diào)度,頁(yè)面分配/置換算法,磁盤的調(diào)度算法,I/O系統(tǒng),我認(rèn)為優(yōu)先級(jí)比較低。
3、數(shù)據(jù)庫(kù)
這個(gè)和日常工作結(jié)合極其緊密,不用我再多說,包括最基本的SQL,各種范式,事務(wù)及其隔離級(jí)別,事務(wù)的實(shí)現(xiàn)方式,索引及其實(shí)現(xiàn)方式,B+樹等等。
4、編譯原理
你一輩子也許都不會(huì)去寫一個(gè)編譯器,但是很有可能會(huì)利用現(xiàn)成的工具去生成/操作一個(gè)抽象語(yǔ)法樹(AST),甚至可以會(huì)寫一個(gè)DSL(領(lǐng)域特定語(yǔ)言)。所以你得理解詞法分析、語(yǔ)法分析、語(yǔ)義分析,中間代碼生成,代碼優(yōu)化這個(gè)基本編譯的過程。
擴(kuò)展資料
Cache的原理
如果存在(命中),則直接返回該數(shù)據(jù);如果不存在(失效),再去訪問內(nèi)存——先把內(nèi)存中的相應(yīng)數(shù)據(jù)載入緩存,再將其返回處理器。
提供“高速緩存”的目的是讓數(shù)據(jù)訪問的速度適應(yīng)CPU的處理速度,通過減少訪問內(nèi)存的次數(shù)來提高數(shù)據(jù)存取的速度。
Cache技術(shù)所依賴的原理是”程序執(zhí)行與數(shù)據(jù)訪問的局部性原理“,這種局部性表現(xiàn)在兩個(gè)方面:時(shí)間局部性:如果程序中的某條指令一旦執(zhí)行,不久以后該指令可能再次執(zhí)行,如果某數(shù)據(jù)被訪問過,不久以后該數(shù)據(jù)可能再次被訪問。
下一篇:全球三大動(dòng)漫是哪些