引言
并發(fā)與并行一直是IT界炙手可熱的詞匯,相信各位猿友都不會陌生。在計(jì)算機(jī)系統(tǒng)這本書當(dāng)中,對并發(fā)與并行的解釋是,并發(fā)是指一個(gè)同時(shí)具有多個(gè)活動的系統(tǒng),而并行則是指的用并發(fā)使得一個(gè)系統(tǒng)運(yùn)行的更快。
這與LZ之前的理解應(yīng)該是不沖突的,在LZ之前看來,并發(fā)是一種模式,而并行是實(shí)現(xiàn)這種模式的手段之一。
線程級并發(fā)
在進(jìn)程的抽象概念下引入了線程,而線程級并發(fā)的概念,就是指的多個(gè)線程在同一時(shí)間(并非是絕對同時(shí)的)活動。
操作系統(tǒng)從單處理器,直到現(xiàn)在多核多處理器系統(tǒng),乃至超線程技術(shù),已經(jīng)經(jīng)歷了很大的變化。這也使得針對多線程編程變得更加重要,否則就無法利用多處理器帶來的好處。
針對多處理器系統(tǒng)來說,比較好理解,其實(shí)就是物理上將多個(gè)CPU集中在一個(gè)集成電路的芯片上。而對于超線程技術(shù)來說,則是利用N個(gè)物理內(nèi)核,模擬出2N個(gè)邏輯內(nèi)核的技術(shù)。在硬件上來講,超線程需要CPU的某些部分有多個(gè)備份,比如寄存器和程序計(jì)數(shù)器,但是其它部分只有一份,比如ALU。
指令級并行
在書中,對指令級并行的解釋是,如果處理器可以同時(shí)執(zhí)行多條指令,則稱這種屬性為指令級并行。其實(shí)指令級并行就是利用了指令的執(zhí)行過程中會有不同的階段,或者更精確的說,是在同一時(shí)間只會利用部分CPU的硬件,因此可以利用這一點(diǎn)做到多個(gè)指令并行執(zhí)行。
更好的情況下,現(xiàn)代的很多處理器能夠做到執(zhí)行一條指令的平均時(shí)間尚且不到一個(gè)周期,這種處理器就稱為超標(biāo)量處理器。
單指令、多數(shù)據(jù)并行
單指令、多數(shù)據(jù)的概念是指一條指令可以產(chǎn)生多個(gè)并行執(zhí)行的操作的方式。當(dāng)今的一些處理器中配備了特殊的硬件,可以達(dá)到這個(gè)效果。由于產(chǎn)生了多個(gè)并行執(zhí)行的操作,因此就會涉及到多個(gè)數(shù)據(jù),通俗的講也可以理解為,一條指令操作多個(gè)數(shù)據(jù)。比如書中所提到的例子,一些處理器具有并行地對4對單精度浮點(diǎn)數(shù)做加法的指令。
簡談抽象
抽象的重要性就不需要再強(qiáng)調(diào)了,它在計(jì)算機(jī)科學(xué)領(lǐng)域有著不言而喻的地位。抽象可以使得一些具體的實(shí)現(xiàn)變的更加易于描述,而且也可以針對一些實(shí)現(xiàn)的方式作出規(guī)定。
舉個(gè)簡單的例子,就JAVA中的類來說,它其實(shí)是通過編譯器和JVM來實(shí)現(xiàn)的,而JVM本身又是一個(gè)抽象的概念,它也會有具體的實(shí)現(xiàn)。倘若針對我們平時(shí)使用的hotspot虛擬機(jī)來說,類的實(shí)現(xiàn)是將類的信息存放在永久代,而后將實(shí)例存放在堆中,并且在每一個(gè)實(shí)例中,都會存放一個(gè)類信息的引用。從而我們在操作這個(gè)實(shí)例的時(shí)候,會通過類信息確定我們所做的操作并執(zhí)行它。
以上是LZ對類實(shí)現(xiàn)的個(gè)人理解,對JVM不太熟悉的猿友們可能對這個(gè)描述比較迷惑。但是沒關(guān)系,你只需要知道class可以聲明一個(gè)類,并且在你創(chuàng)建了一個(gè)實(shí)例之后,使用實(shí)例名.方法名可以調(diào)用它的方法,實(shí)例名.變量名可以取得它的屬性值就可以了(在此簡單起見,忽略訪問權(quán)限限制)。這就使得我們操作類的時(shí)候變的簡單,也正是抽象的意義之一,也是上面對抽象描述的第一句話的解釋。
對于后面一句就比較好理解了,JAVA虛擬機(jī)是一種抽象,有了這個(gè)抽象,我們就可以針對JAVA虛擬機(jī)制定規(guī)范,也就是JAVA虛擬機(jī)規(guī)范。
文章小結(jié)
本次我們簡單了解了一下并發(fā)和并行的概念,以及抽象對于計(jì)算機(jī)科學(xué)的重要意義。
下一章LZ將和各位猿友一起進(jìn)入一個(gè)嶄新的世界,那里有很多1和0的數(shù)字,有很多定理與證明,因此這部分可能比較枯燥。如果LZ的解釋不能讓各位猿友更好的理解這本書的內(nèi)容,各位猿友也可以看書中的原版內(nèi)容,或者拿著書和LZ的文章對照著看都可以。不過LZ還是希望各位不要半途而廢,畢竟實(shí)踐雖然重要,但還是需要理論的支撐的。