Oracle程序員面試分類模擬30_第1頁(yè)
Oracle程序員面試分類模擬30_第2頁(yè)
Oracle程序員面試分類模擬30_第3頁(yè)
Oracle程序員面試分類模擬30_第4頁(yè)
Oracle程序員面試分類模擬30_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Oracle程序員面試分類模擬30簡(jiǎn)答題1.

進(jìn)程與線程有什么區(qū)別?正確答案:進(jìn)程是具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),它是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。例如,用戶運(yùn)行(江南博哥)自己的程序,系統(tǒng)就創(chuàng)建一個(gè)進(jìn)程,并為它分配資源,包括各種表格、內(nèi)存空間、磁盤空間、I/O設(shè)備等,然后該進(jìn)程被放入到進(jìn)程的就緒隊(duì)列,進(jìn)程調(diào)度程序選中它,為它分配CPU及其他相關(guān)資源,該進(jìn)程就被運(yùn)行起來。

線程是進(jìn)程的一個(gè)實(shí)體,是CPU調(diào)度和分配的基本單位,線程基本上不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源(如程序計(jì)數(shù)器、一組寄存器和棧),但是它可以與同屬一個(gè)進(jìn)程的其他的線程共享進(jìn)程所擁有的全部資源。

在沒有實(shí)現(xiàn)線程的操作系統(tǒng)中,進(jìn)程既是資源分配的基本單位,又是調(diào)度的基本單位,它是系統(tǒng)中并發(fā)執(zhí)行的單元。而在實(shí)現(xiàn)了線程的操作系統(tǒng)中,進(jìn)程是資源分配的基本單位,而線程是調(diào)度的基本單位,是系統(tǒng)中并發(fā)執(zhí)行的單元。

需要注意的是,盡管線程與進(jìn)程很相似,但兩者也存在著很大的不同,區(qū)別如下:

1)一個(gè)線程必定屬于也只能屬于一個(gè)進(jìn)程;而一個(gè)進(jìn)程可以擁有多個(gè)線程并且至少擁有一個(gè)線程。

2)屬于一個(gè)進(jìn)程的所有線程共享該線程的所有資源,包括打開的文件、創(chuàng)建的Socket等。不同的進(jìn)程互相獨(dú)立。

3)線程又被稱為輕量級(jí)進(jìn)程。進(jìn)程有進(jìn)程控制塊,線程也有線程控制塊。但線程控制塊比進(jìn)程控制塊小得多。線程之間切換代價(jià)小,進(jìn)程之間切換代價(jià)大。

4)進(jìn)程是程序的一次執(zhí)行,線程可以理解為程序中一個(gè)程序片段的執(zhí)行。

5)每個(gè)進(jìn)程都有獨(dú)立的內(nèi)存空間,而線程共享其所屬進(jìn)程的內(nèi)存空間。

程序、進(jìn)程與線程的區(qū)別見下表。程序、進(jìn)程與線程的區(qū)別名稱描述程序一組指令的有序結(jié)合,是靜態(tài)的指令,是永久存在的進(jìn)程具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單元。進(jìn)程的存在是暫時(shí)的,是一個(gè)動(dòng)態(tài)概念線程線程一個(gè)實(shí)體,是CPU調(diào)度和的基本單元,是比進(jìn)程更小的能獨(dú)立運(yùn)行的基本單元。本身基本上不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源(如程序計(jì)數(shù)器,一組寄存器和棧)。一個(gè)線程可以創(chuàng)建和撤銷另-個(gè)線程,同一個(gè)進(jìn)程中的多個(gè)線程之間可以并發(fā)執(zhí)行

簡(jiǎn)而言之,一個(gè)程序至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程至少有一個(gè)線程。

2.

內(nèi)核線程和用戶線程的區(qū)別?正確答案:根據(jù)操作系統(tǒng)內(nèi)核是否對(duì)線程可感知,可以把線程分為內(nèi)核線程和用戶線程。

內(nèi)核線程的建立和銷毀都是由操作系統(tǒng)負(fù)責(zé)、通過系統(tǒng)調(diào)用完成的,操作系統(tǒng)在調(diào)度時(shí),參考各進(jìn)程內(nèi)的線程運(yùn)行情況做出調(diào)度決定。如果一個(gè)進(jìn)程中沒有就緒狀態(tài)的線程,那么這個(gè)進(jìn)程也不會(huì)被調(diào)度占用CPU資源。

和內(nèi)核線程相對(duì)應(yīng)的是用戶線程,用戶線程是指不需要內(nèi)核支持而在用戶程序中實(shí)現(xiàn)的線程,其不依賴于操作系統(tǒng)核心,用戶進(jìn)程利用線程庫(kù)提供創(chuàng)建、同步、調(diào)度和管理線程的函數(shù)來控制用戶線程。用戶線程多見于一些歷史悠久的操作系統(tǒng),如UNIX操作系統(tǒng),不需要用戶態(tài)/核心態(tài)切換,速度快,操作系統(tǒng)內(nèi)核不知道多線程的存在,因此一個(gè)線程阻塞將使得整個(gè)進(jìn)程(包括它的所有線程)阻塞。由于這里的處理器時(shí)間片分配是以進(jìn)程為基本單位的,所以每個(gè)線程執(zhí)行的時(shí)間相對(duì)減少。為了在操作系統(tǒng)中加入線程支持,采用了在用戶空間增加運(yùn)行庫(kù)來實(shí)現(xiàn)線程,這些運(yùn)行庫(kù)被稱為“線程包”,用戶線程是不能被操作系統(tǒng)所感知的。

3.

內(nèi)存管理有哪幾種方式?正確答案:常見的內(nèi)存管理方式有塊式管理、頁(yè)式管理、段式管理和段頁(yè)式管理。最常用的是段頁(yè)式管理。

(1)塊式管理把主存分為一大塊一大塊的,當(dāng)所需的程序片斷不在主存時(shí)就分配一塊主存空間,把程序片段載入主存,就算所需的程序片段只有幾個(gè)字節(jié)也只能把這一塊分配給它。這樣會(huì)造成很大的浪費(fèi),平均浪費(fèi)了50%的內(nèi)存空間,但優(yōu)點(diǎn)是易于管理。

(2)頁(yè)式管理用戶程序的地址空間被劃分成若干個(gè)固定大小的區(qū)域,這個(gè)區(qū)域被稱為“頁(yè)”,相應(yīng)地,內(nèi)存空間也被劃分為若干個(gè)物理塊,頁(yè)和塊的大小相等??蓪⒂脩舫绦虻娜我豁?yè)放在內(nèi)存的任一塊中,從而實(shí)現(xiàn)了離散分配。這種方式的優(yōu)點(diǎn)是頁(yè)的大小是固定的,因此便于管理;缺點(diǎn)是頁(yè)長(zhǎng)與程序的邏輯大小沒有任何關(guān)系。這就導(dǎo)致在某個(gè)時(shí)刻一個(gè)程序可能只有一部分在主存中,而另一部分則在輔存中。這不利于編程時(shí)的獨(dú)立性,并給換入換出處理、存儲(chǔ)保護(hù)和存儲(chǔ)共享等操作造成麻煩。

(3)段式管理段是按照程序的自然分界劃分的并且長(zhǎng)度可以動(dòng)態(tài)改變的區(qū)域。使用這種方式,程序員可以把子程序、操作數(shù)和不同類型的數(shù)據(jù)和函數(shù)劃分到不同的段中。這種方式將用戶程序地址空間分成若干個(gè)大小不等的段,每段可以定義一組相對(duì)完整的邏輯信息。存儲(chǔ)分配時(shí),以段為單位,段與段在內(nèi)存中可以不相鄰接,也實(shí)現(xiàn)了離散分配。

分頁(yè)對(duì)程序員而言是不可見的,而分段通常對(duì)程序員而言是可見的,因而分段為組織程序和數(shù)據(jù)提供了方便,但是對(duì)程序員的要求也比較高。

分段存儲(chǔ)主要有如下優(yōu)點(diǎn):

1)段的邏輯獨(dú)立性不僅使其易于編譯、管理、修改和保護(hù),也便于多道程序共享。

2)段長(zhǎng)可以根據(jù)需要?jiǎng)討B(tài)改變,允許自由調(diào)度,以便有效利用主存空間。

3)方便分段共享,分段保護(hù),動(dòng)態(tài)鏈接,動(dòng)態(tài)增長(zhǎng)。

分段存儲(chǔ)的缺點(diǎn)為:

1)由于段的大小不固定,因此存儲(chǔ)管理比較麻煩。

2)會(huì)生成段內(nèi)碎片,這會(huì)造成存儲(chǔ)空間利用率降低。而且段式存儲(chǔ)管理比頁(yè)式存儲(chǔ)管理方式需要更多的硬件支持。

正是由于頁(yè)式管理和段式管理都有各種各樣的缺點(diǎn),因此,為了把這兩種存儲(chǔ)方式的優(yōu)點(diǎn)結(jié)合起來,才引入了段頁(yè)式管理。

(4)段頁(yè)式管理段頁(yè)式存儲(chǔ)組織是分段式和分頁(yè)式結(jié)合的存儲(chǔ)組織方法,這樣可充分利用分段管理和分頁(yè)管理的優(yōu)點(diǎn)。

1)用分段方法來分配和管理虛擬存儲(chǔ)器。程序的地址空間按邏輯單位分成基本獨(dú)立的段,而每一段有自己的段名,再把每段分成固定大小的若干頁(yè)。

2)用分頁(yè)方法來分配和管理內(nèi)存。即把整個(gè)主存分成與上述頁(yè)大小相等的存儲(chǔ)塊,可裝入作業(yè)的任何一頁(yè)。程序?qū)?nèi)存的調(diào)入或調(diào)出是按頁(yè)進(jìn)行的,但它又可按段實(shí)現(xiàn)共享和保護(hù)。

4.

什么是虛擬內(nèi)存?正確答案:虛擬內(nèi)存簡(jiǎn)稱虛存,是計(jì)算機(jī)系統(tǒng)內(nèi)存管理的一種技術(shù)。它是相對(duì)于物理內(nèi)存而言的,可以理解為“假的”內(nèi)存。它使得應(yīng)用程序認(rèn)為它擁有連續(xù)可用的內(nèi)存(一個(gè)連續(xù)完整的地址空間),允許程序員編寫并運(yùn)行比實(shí)際系統(tǒng)擁有的內(nèi)存大得多的程序,這使得許多大型軟件項(xiàng)目能夠在具有有限內(nèi)存資源的系統(tǒng)上實(shí)現(xiàn)。而實(shí)際上,它通常被分割成多個(gè)物理內(nèi)存碎片,還有部分暫時(shí)存儲(chǔ)在外部磁盤存儲(chǔ)器上,在需要時(shí)進(jìn)行數(shù)據(jù)交換。虛存比實(shí)存有以下好處:

1)擴(kuò)大了地址空間。無論段式虛存,還是頁(yè)式虛存,或是段頁(yè)式虛存,尋址空間都比實(shí)存大。

2)內(nèi)存保護(hù)。每個(gè)進(jìn)程運(yùn)行在各自的虛擬內(nèi)存地址空間,互相不能干擾對(duì)方。另外,虛存還對(duì)特定的內(nèi)存地址提供寫保護(hù),可以防止代碼或數(shù)據(jù)被惡意篡改。

3)公平分配內(nèi)存。采用了虛存之后,每個(gè)進(jìn)程都相當(dāng)于有同樣大小的虛存空間。

4)當(dāng)進(jìn)程需要通信時(shí),可采用虛存共享的方式實(shí)現(xiàn)。

不過,使用虛存也是有代價(jià)的,主要表現(xiàn)在以下幾個(gè)方面的內(nèi)容:

1)虛存的管理需要建立很多數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)要占用額外的內(nèi)存。

2)虛擬地址到物理地址的轉(zhuǎn)換,增加了指令的執(zhí)行時(shí)間。

3)頁(yè)面的換入換出需要磁盤I/O,這是很耗時(shí)間的。

4)如果一頁(yè)中只有一部分?jǐn)?shù)據(jù),會(huì)浪費(fèi)內(nèi)存。

5.

什么是內(nèi)存碎片?什么是內(nèi)碎片?什么是外碎片?正確答案:內(nèi)存碎片是由于多次進(jìn)行內(nèi)存分配造成的,當(dāng)進(jìn)行內(nèi)存分配時(shí),內(nèi)存格式一般為:(用戶使用段)(空白段)(用戶使用段),當(dāng)空白段很小的時(shí)候可能不能提供給用戶足夠多的空間,比如夾在中間的空白段的大小為5,而用戶需要的內(nèi)存大小6,這樣會(huì)產(chǎn)生很多的間隙造成使用效率的下降,這些很小的空隙稱為碎片。

內(nèi)碎片:分配給程序的存儲(chǔ)空間沒有用完,有一部分是程序不使用,但其他程序也沒法用的空間。內(nèi)碎片是處于區(qū)域內(nèi)部或頁(yè)面內(nèi)部的存儲(chǔ)塊,占有這些區(qū)域或頁(yè)面的進(jìn)程并不使用這個(gè)存儲(chǔ)塊,而在進(jìn)程占有這塊存儲(chǔ)塊時(shí),系統(tǒng)無法利用它,直到進(jìn)程釋放它,或進(jìn)程結(jié)束時(shí),系統(tǒng)才有可能利用這個(gè)存儲(chǔ)塊。

外碎片:由于空間太小,小到無法給任何程序分配(不屬于任何進(jìn)程)的存儲(chǔ)空間。外部碎片是出于任何已分配區(qū)域或頁(yè)面外部的空閑存儲(chǔ)塊,這些存儲(chǔ)塊的總和可以滿足當(dāng)前申請(qǐng)的長(zhǎng)度要求,但是由于它們的地址不連續(xù)或其他原因,使得系統(tǒng)無法滿足當(dāng)前申請(qǐng)。

內(nèi)碎片和外碎片是一對(duì)矛盾體,一種特定的內(nèi)存分配算法,很難同時(shí)解決好內(nèi)碎片和外碎片的問題,只能根據(jù)應(yīng)用特點(diǎn)進(jìn)行取舍。

6.

虛擬地址、邏輯地址、線性地址、物理地址有什么區(qū)別?正確答案:虛擬地址是指由程序產(chǎn)生的由段選擇符和段內(nèi)偏移地址組成的地址。這兩部分組成的地址并沒有直接訪問物理內(nèi)存,而是要通過分段地址的變換處理后才會(huì)對(duì)應(yīng)到相應(yīng)的物理內(nèi)存地址。

邏輯地址是指由程序產(chǎn)生的段內(nèi)偏移地址。有時(shí)直接把邏輯地址當(dāng)成虛擬地址,兩者并沒有明確的界限。

線性地址是指虛擬地址到物理地址變換之間的中間層,是處理器可尋址的內(nèi)存空間(稱為線性地址空間)中的地址。程序代碼會(huì)產(chǎn)生邏輯地址,或者說是段中的偏移地址,加上相應(yīng)段基址就生成了一個(gè)線性地址。如果啟用了分頁(yè)機(jī)制,那么線性地址可以再經(jīng)過變換產(chǎn)生物理地址。若是沒有采用分頁(yè)機(jī)制,那么線性地址就是物理地址。

物理地址是指現(xiàn)在CPU外部地址總線上的尋址物理內(nèi)存的地址信號(hào),是地址變換的最終結(jié)果。

虛擬地址到物理地址的轉(zhuǎn)化方法是與體系結(jié)構(gòu)相關(guān)的,一般有分段與分頁(yè)兩種方式。以x86CPU為例,分段、分頁(yè)都是支持的。內(nèi)存管理單元負(fù)責(zé)從虛擬地址到物理地址的轉(zhuǎn)化。邏輯地址是段標(biāo)識(shí)+段內(nèi)偏移量的形式,MMU通過查詢段表,可以把邏輯地址轉(zhuǎn)化為線性地址。如果CPU沒有開啟分頁(yè)功能,那么線性地址就是物理地址;如果CPU開啟了分頁(yè)功能,MMU還需要查詢頁(yè)表來將線性地址轉(zhuǎn)化為物理地址:邏輯地址(段表)→線性地址(頁(yè)表)→物理地址。

映射是一種多對(duì)一的關(guān)系,即不同的邏輯地址可以映射到同一個(gè)線性地址上;不同的線性地址也可以映射到同一個(gè)物理地址上。而且,同一個(gè)線性地址在發(fā)生換頁(yè)以后,也可能被重新裝載到另外一個(gè)物理地址上,所以這種多對(duì)一的映射關(guān)系也會(huì)隨時(shí)間發(fā)生變化。

7.

Cache替換算法有哪些?正確答案:數(shù)據(jù)可以存放在CPU或者內(nèi)存中。CPU處理快,但是容量少;內(nèi)存容量大,但是轉(zhuǎn)交給CPU處理的速度慢。為此,需要Cache(緩存)來做一個(gè)折中。將最有可能調(diào)用的數(shù)據(jù)先從內(nèi)存調(diào)入Cache,CPU再?gòu)腃ache讀取數(shù)據(jù),這樣會(huì)快許多。然而,Cache中所存放的數(shù)據(jù)不是全部有用的。CPU從Cache中讀取到有用數(shù)據(jù)稱為“命中”。

由于主存中的塊比Cache中的塊多,所以當(dāng)要從主存中調(diào)一個(gè)塊到Cache中時(shí),會(huì)出現(xiàn)該塊所映射到的一組(或一個(gè))Cache塊已全部被占用的情況。此時(shí),需要被迫騰出其中的某一塊,以接納新調(diào)入的塊,這就是替換。

Cache替換算法有RAND算法、FIFO算法、LRU算法、OPT算法和LFU算法。

(1)隨機(jī)(RAND)算法隨機(jī)算法就是用隨機(jī)數(shù)發(fā)生器產(chǎn)生一個(gè)要替換的塊號(hào),將該塊替換出去,此算法簡(jiǎn)單、易于實(shí)現(xiàn),而且它不考慮Cache塊過去、現(xiàn)在及將來的使用情況。但是由于沒有利用上層存儲(chǔ)器使用的“歷史信息”、沒有根據(jù)訪存的局部性原理,故不能提高Cache的命中率,命中率較低。

(2)先進(jìn)先出(FIFO)算法先進(jìn)先出(FirstInFirstOut,F(xiàn)IFO)算法是將最先進(jìn)入Cache的信息塊替換出去。FIFO算法按調(diào)入Cache的先后決定淘汰的順序,選擇最早調(diào)入Cache的字塊進(jìn)行替換,它不需要記錄各字塊的使用情況,比較容易實(shí)現(xiàn),系統(tǒng)開銷小,其缺點(diǎn)是可能會(huì)把一些需要經(jīng)常使用的程序塊(如循環(huán)程序)也作為最早進(jìn)入Cache的塊替換掉,而且沒有根據(jù)訪存的局部性原理,故不能提高Cache的命中率。因?yàn)樽钤缯{(diào)入的信息可能以后還要用到,或者經(jīng)常要用到,如循環(huán)程序。此法簡(jiǎn)單、方便,利用了主存的“歷史信息”,但并不能說最先進(jìn)入的就不經(jīng)常使用,其缺點(diǎn)是不能正確反映程序局部性原理,命中率不高,可能出現(xiàn)一種異?,F(xiàn)象。例如,Solar—16/65機(jī)Cache采用組相連方式,每組4塊,每塊都設(shè)定一個(gè)兩位的計(jì)數(shù)器,當(dāng)某塊被裝入或被替換時(shí)該塊的計(jì)數(shù)器清為0,而同組的其他各塊的計(jì)數(shù)器均加1,當(dāng)需要替換時(shí)就選擇計(jì)數(shù)值最大的塊被替換掉。

(3)近期最少使用(LRU)算法近期最少使用(LeastRecentlyUsed,LRU)算法是將近期最少使用的Cache中的信息塊替換出去。

LRU算法是依據(jù)各塊使用的情況,總是選擇那個(gè)最近最少使用的塊被替換。這種方法雖然比較好地反映了程序局部性規(guī)律,但是這種替換方法需要隨時(shí)記錄Cache中各塊的使用情況,以便確定哪個(gè)塊是近期最少使用的塊。LRU算法相對(duì)合理,但實(shí)現(xiàn)起來比較復(fù)雜,系統(tǒng)開銷較大。通常需要對(duì)每一塊設(shè)置一個(gè)稱為計(jì)數(shù)器的硬件或軟件模塊,用以記錄其被使用的情況。

實(shí)現(xiàn)LRU策略的方法有多種,例如計(jì)數(shù)器法、寄存器棧法及硬件邏輯比較法等,下面簡(jiǎn)單介紹計(jì)數(shù)器法的設(shè)計(jì)思路。

計(jì)數(shù)器方法:緩存的每一塊都設(shè)置一個(gè)計(jì)數(shù)器。計(jì)數(shù)器的操作規(guī)則如下:

1)被調(diào)入或者被替換的塊,其計(jì)數(shù)器清“0”,而其他的計(jì)數(shù)器則加“1”。

2)當(dāng)訪問命中時(shí),所有塊的計(jì)數(shù)值與命中塊的計(jì)數(shù)值要進(jìn)行比較,如果計(jì)數(shù)值小于命中塊的計(jì)數(shù)值,則該塊的計(jì)數(shù)值加“1”;如果塊的計(jì)數(shù)值大于命中塊的計(jì)數(shù)值,則數(shù)值不變。最后將命中塊的計(jì)數(shù)器清“0”。

3)需要替換時(shí),則選擇計(jì)數(shù)值最大的塊被替換。

(4)最優(yōu)替換(OPT)算法使用最優(yōu)替換(OPTimalreplacement,OPT)算法時(shí)必須先執(zhí)行一次程序,統(tǒng)計(jì)Cache的替換情況。有了這樣的先驗(yàn)信息,在第二次執(zhí)行該程序時(shí)便可以用最有效的方式來替換,以達(dá)到最優(yōu)的目的。

前面介紹的幾種頁(yè)面替換算法主要是以主存儲(chǔ)器中頁(yè)面調(diào)度情況的歷史信息為依據(jù)的,它假設(shè)將來主存儲(chǔ)器中的頁(yè)面調(diào)度情況與過去一段時(shí)間內(nèi)主存儲(chǔ)器中的頁(yè)面調(diào)度情況是相同的,顯然,這種假設(shè)不總是正確的。最好的算法應(yīng)該是選擇將來最久不被訪問的頁(yè)面作為被替換的頁(yè)面,這種替換算法的命中率一定是最高的,它就是最優(yōu)替換算法。

要實(shí)現(xiàn)OPT算法,唯一的辦法是讓程序先執(zhí)行一遍,記錄下實(shí)際的頁(yè)地址的使用情況。根據(jù)這個(gè)頁(yè)地址的使用情況才能找出當(dāng)前要被替換的頁(yè)面。顯然,這樣做是不現(xiàn)實(shí)的。因此,OPT算法只是一種理想化的算法,然而它也是一種很有用的算法。實(shí)際上,經(jīng)常把這種算法用來作為評(píng)價(jià)其他頁(yè)面替換算法好壞的標(biāo)準(zhǔn)。在其他條件相同的情況下,哪一種頁(yè)面替換算法的命中率與OPT算法最接近,那么它就是一種比較好的頁(yè)面替換算法。

(5)近期最少使用(LFU)算法近期最少使用(LeastFrequentlyUsed,LFU)算法選擇近期最少訪問的頁(yè)面作為被替換的頁(yè)面。顯然,這是一種非常合理的算法,因?yàn)榈侥壳盀橹棺钌偈褂玫捻?yè)面,很可能也是將來最少訪問的頁(yè)面。該算法既充分利用了主存中頁(yè)面調(diào)度情況的歷史信息,又正確反映了程序的局部特性。但是,這種算法實(shí)現(xiàn)起來非常困難,它要為每個(gè)頁(yè)面設(shè)置一個(gè)很長(zhǎng)的計(jì)數(shù)器,并且要選擇一個(gè)固定的時(shí)鐘為每個(gè)計(jì)數(shù)器定時(shí)計(jì)數(shù)。在選擇被替換頁(yè)面時(shí),要從所有計(jì)數(shù)器中找出一個(gè)計(jì)數(shù)值最大的計(jì)數(shù)器。

8.

庫(kù)函數(shù)調(diào)用與系統(tǒng)調(diào)用有什么不同?正確答案:庫(kù)函數(shù)調(diào)用是語(yǔ)言或應(yīng)用程序的一部分,它是高層的,完全運(yùn)行在用戶空間,為程序員提供調(diào)用真正的在幕后完成實(shí)際事務(wù)的系統(tǒng)調(diào)用接口。而系統(tǒng)函數(shù)是內(nèi)核提供給應(yīng)用程序的接口,屬于系統(tǒng)的一部分。函數(shù)庫(kù)調(diào)用是語(yǔ)言或應(yīng)用程序的一部分,而系統(tǒng)調(diào)用是操作系統(tǒng)的一部分。

庫(kù)函數(shù)調(diào)用與系統(tǒng)調(diào)用的區(qū)別見下表。庫(kù)函數(shù)調(diào)用與系統(tǒng)調(diào)用的區(qū)別庫(kù)函數(shù)調(diào)用系統(tǒng)調(diào)用在所有的ANSIC編譯器版本中,C語(yǔ)言庫(kù)函數(shù)是相同的各個(gè)操作系統(tǒng)的系統(tǒng)調(diào)用是不同的它調(diào)用函數(shù)庫(kù)中的一段程序(或函數(shù))它調(diào)用系統(tǒng)內(nèi)核的服務(wù)與用戶程序相聯(lián)系是操作系統(tǒng)的一個(gè)入口點(diǎn)在用戶地址空間執(zhí)行在內(nèi)核地址空間執(zhí)行它的運(yùn)行時(shí)間屬于“用戶時(shí)間”它的運(yùn)行屬于“系統(tǒng)時(shí)間”屬于過程調(diào)用,調(diào)用開銷較小需要在用戶空間和內(nèi)核上下文環(huán)境間切換,開銷較大在C函數(shù)庫(kù)libc中有大約300個(gè)函數(shù)在Unix中有大約90個(gè)系統(tǒng)調(diào)用典型的C函數(shù)庫(kù)調(diào)用:system、fprintf和malloc等典型的系統(tǒng)調(diào)用:chdir、fork、write和brk等

庫(kù)函數(shù)調(diào)用通常比行內(nèi)展開的代碼慢,因?yàn)樗枰冻龊瘮?shù)調(diào)用的時(shí)間耗費(fèi)。但系統(tǒng)調(diào)用比庫(kù)函數(shù)調(diào)用還要慢很多,因?yàn)樗枰焉舷挛沫h(huán)境切換到內(nèi)核模式。

9.

靜態(tài)鏈接與動(dòng)態(tài)鏈接有什么區(qū)別?正確答案:靜態(tài)鏈接是指把要調(diào)用的函數(shù)或者過程直接鏈接到可執(zhí)行文件中,成為可執(zhí)行文件的一部分。換句話說,函數(shù)和過程的代碼就在程序的.exe文件中,該文件包含了運(yùn)行時(shí)所需的全部代碼。靜態(tài)鏈接的缺點(diǎn)是當(dāng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論