面試題

1.進(jìn)程和線程的區(qū)別。

2.死鎖的必要條件钓觉,怎么處理死鎖茴肥。

3.Window內(nèi)存管理方式:段存儲(chǔ),頁(yè)存儲(chǔ)荡灾,段頁(yè)存儲(chǔ)瓤狐。

4.進(jìn)程的幾種狀態(tài)。

5.IPC幾種通信方式批幌。

6.什么是虛擬內(nèi)存础锐。

7.虛擬地址、邏輯地址荧缘、線性地址皆警、物理地址的區(qū)別。


1.進(jìn)程和線程

線程

?1. 概念:

是進(jìn)程中執(zhí)行運(yùn)算的最小單位截粗,是進(jìn)程中的一個(gè)實(shí)體信姓,是被系統(tǒng)獨(dú)立調(diào)度和分派的基本單位鸵隧,線程自己不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源意推,但它可與同屬一個(gè)進(jìn)程的其它線程共享進(jìn)程所擁有的全部資源豆瘫。

2. 好處:

1)易于調(diào)度。

?2)提高并發(fā)性菊值。通過(guò)線程可方便有效地實(shí)現(xiàn)并發(fā)性外驱。進(jìn)程可創(chuàng)建多個(gè)線程來(lái)執(zhí)行同一程序的不同部分。

?3)開(kāi)銷少腻窒。創(chuàng)建線程比創(chuàng)建進(jìn)程要快略步,所需開(kāi)銷很少。

?4)利于充分發(fā)揮多處理器的功能定页。通過(guò)創(chuàng)建多線程進(jìn)程趟薄,每個(gè)線程在一個(gè)處理器上運(yùn)行,從而實(shí)現(xiàn)應(yīng)用程序的并發(fā)性典徊,使每個(gè)處理器都得到充分運(yùn)行杭煎。

3. ?線程狀態(tài):

聯(lián)系java中線程的幾種狀態(tài) java thread的運(yùn)行周期中, 有幾種狀態(tài), 在 java.lang.Thread.State 中有詳細(xì)定義和說(shuō)明:

1)NEW狀態(tài)是指線程剛創(chuàng)建, 尚未啟動(dòng)

2)RUNNABLE狀態(tài)是線程正在正常運(yùn)行中,當(dāng)然可能會(huì)有某種耗時(shí)計(jì)算/IO等待的操作/CPU時(shí)間片切換等,這個(gè)狀態(tài)下發(fā)生的等待一般是其他系統(tǒng)資源, 而不是鎖, Sleep等

3)BLOCKED這個(gè)狀態(tài)下, 是在多個(gè)線程有同步操作的場(chǎng)景,比如正在等待另一個(gè)線程的synchronized 塊的執(zhí)行釋放, 或者可重入的 synchronized塊里別人調(diào)用wait() 方法,也就是這里是線程在等待進(jìn)入臨界區(qū)

4)WAITING這個(gè)狀態(tài)下是指線程擁有了某個(gè)鎖之后, 調(diào)用了他的wait方法, 等待其他線程/鎖擁有者調(diào)用 notify / notifyAll 一遍該線程可以繼續(xù)下一步操作, 這里要區(qū)分 BLOCKED 和 WATING 的區(qū)別, 一個(gè)是在臨界點(diǎn)外面等待進(jìn)入, 一個(gè)是在理解點(diǎn)里面wait等待別人notify, 線程調(diào)用了join方法 join了另外的線程的時(shí)候, 也會(huì)進(jìn)入WAITING狀態(tài), 等待被他join的線程執(zhí)行結(jié)束

5)TIMED_WAITING這個(gè)狀態(tài)就是有限的(時(shí)間限制)的WAITING, 一般出現(xiàn)在調(diào)用wait(long), join(long)等情況下, 另外一個(gè)線程sleep后, 也會(huì)進(jìn)入TIMED_WAITING狀態(tài)

6) TERMINATED這個(gè)狀態(tài)下表示該線程的run方法已經(jīng)執(zhí)行完畢了,基本上就等于死亡了(當(dāng)時(shí)如果線程被持久持有, 可能不會(huì)被回收)http://www.blogjava.net/santicom/archive/2011/09/01/357765.html


進(jìn)程

1. ?概念

進(jìn)程是操作系統(tǒng)的概念,每當(dāng)我們執(zhí)行一個(gè)程序時(shí)卒落,對(duì)于操作系統(tǒng)來(lái)講就創(chuàng)建了一個(gè)進(jìn)程,在這個(gè)過(guò)程中羡铲,伴隨著資源的分配和釋放±鼙希可以認(rèn)為進(jìn)程是一個(gè)程序的一次執(zhí)行過(guò)程也切。

2. ?進(jìn)程與程序的區(qū)別

1.進(jìn)程是程序的一次運(yùn)行活動(dòng),屬于一種動(dòng)態(tài)的概念腰湾。程序是一組有序的靜態(tài)指令雷恃,是一種靜態(tài)的概念。

2.一個(gè)進(jìn)程可以執(zhí)行一個(gè)或多個(gè)程序费坊。?

3.程序可以作為一種軟件資源長(zhǎng)期保持著,而進(jìn)程則是一次執(zhí)行過(guò)程,它是暫時(shí)的,是動(dòng)態(tài)地產(chǎn)生和終止的倒槐。?

4.進(jìn)程更能真實(shí)地描述并發(fā),而程序不能。

5.進(jìn)程由程序和數(shù)據(jù)兩部分組成附井,進(jìn)程是競(jìng)爭(zhēng)計(jì)算機(jī)系統(tǒng)有限資源的基本單位?

6.進(jìn)程具有創(chuàng)建其他進(jìn)程的功能讨越;而程序沒(méi)有。?

7.進(jìn)程還具有并發(fā)性和交往性永毅,這也與程序的封閉性不同

3. 進(jìn)程的幾種狀態(tài)

進(jìn)程的基本狀態(tài)及狀態(tài)之間的關(guān)系

1)創(chuàng)建狀態(tài)(New):進(jìn)程正在創(chuàng)建過(guò)程中把跨,還不能運(yùn)行。操作系統(tǒng)在創(chuàng)建狀態(tài)要進(jìn)行的工作包括分配和建立進(jìn)程控制塊表項(xiàng)沼死、建立資源表格(如打開(kāi)文件表)并分配資源着逐、加載程序并建立地址空間表等。

2)就緒狀態(tài)(Ready):進(jìn)程已獲得除處理器外的所需資源,等待分配處理器資源滨嘱;只要分配了處理器進(jìn)程就可執(zhí)行峰鄙。就緒進(jìn)程可以按多個(gè)優(yōu)先級(jí)來(lái)劃分隊(duì)列浸间。例如太雨,當(dāng)一個(gè)進(jìn)程由于時(shí)間片用完而進(jìn)入就緒狀態(tài)時(shí),排人低優(yōu)先級(jí)隊(duì)列魁蒜;當(dāng)進(jìn)程由I/O操作完成而進(jìn)入就緒狀態(tài)時(shí)囊扳,排入高優(yōu)先級(jí)隊(duì)列。

3)執(zhí)行狀態(tài):進(jìn)程已獲得CPU兜看,其程序正在執(zhí)行锥咸。在單處理機(jī)系統(tǒng)中,只有一個(gè)進(jìn)程處于執(zhí)行狀態(tài)细移; 在多處理機(jī)系統(tǒng)中搏予,則有多個(gè)進(jìn)程處于執(zhí)行狀態(tài)。

4)阻塞狀態(tài):正在執(zhí)行的進(jìn)程由于發(fā)生某事件而暫時(shí)無(wú)法繼續(xù)執(zhí)行時(shí)弧轧,便放棄處理機(jī)而處于暫停狀態(tài)雪侥,亦即進(jìn)程的執(zhí)行受到阻塞,把這種暫停狀態(tài)稱為阻塞狀態(tài)精绎,有時(shí)也稱為等待狀態(tài)或封鎖狀態(tài)速缨。致使進(jìn)程阻塞的典型事件有:請(qǐng)求I/O,申請(qǐng)緩沖空間等代乃。通常將這種處于阻塞狀態(tài)的進(jìn)程也排成一個(gè)隊(duì)列旬牲。有的系統(tǒng)則根據(jù)阻塞原因的不同而把處于阻塞狀態(tài)的進(jìn)程排成多個(gè)隊(duì)列。

5)退出狀態(tài)(Exit):進(jìn)程已結(jié)束運(yùn)行搁吓,回收除進(jìn)程控制塊之外的其他資源原茅,并讓其他進(jìn)程從進(jìn)程控制塊中收集有關(guān)信息(如記帳和將退出代碼傳遞給父進(jìn)程)。

4. ?作業(yè)(進(jìn)程)調(diào)度算法

1)先來(lái)先服務(wù)調(diào)度算法(FCFS)每次調(diào)度都是從后備作業(yè)隊(duì)列中選擇一個(gè)或多個(gè)最先進(jìn)入該隊(duì)列的作業(yè)堕仔,將它們調(diào)入內(nèi)存员咽,為它們分配資源、創(chuàng)建進(jìn)程贮预,然后放入就緒隊(duì)列贝室。

2)短作業(yè)(進(jìn)程)優(yōu)先調(diào)度算法(SPF)短作業(yè)優(yōu)先(SJF)的調(diào)度算法是從后備隊(duì)列中選擇一個(gè)或若干個(gè)估計(jì)運(yùn)行時(shí)間最短的作業(yè),將它們調(diào)入內(nèi)存運(yùn)行仿吞。缺點(diǎn):長(zhǎng)作業(yè)的運(yùn)行得不到保證

3)優(yōu)先權(quán)調(diào)度算法(HPF)當(dāng)把該算法用于作業(yè)調(diào)度時(shí)滑频,系統(tǒng)將從后備隊(duì)列中選擇若干個(gè)優(yōu)先權(quán)最高的作業(yè)裝入內(nèi)存。當(dāng)用于進(jìn)程調(diào)度時(shí)唤冈,該算法是把處理機(jī)分配給就緒隊(duì)列中優(yōu)先權(quán)最高的進(jìn)程峡迷,這時(shí),又可進(jìn)一步把該算法分成如下兩種。 可以分為:1.非搶占式優(yōu)先權(quán)算法 2.搶占式優(yōu)先權(quán)調(diào)度算法

4)高響應(yīng)比優(yōu)先調(diào)度算法(HRN)每次選擇高響應(yīng)比最大的作業(yè)執(zhí)行绘搞,響應(yīng)比=(等待時(shí)間+要求服務(wù)時(shí)間)/要求服務(wù)時(shí)間彤避。?

(1) 如果作業(yè)的等待時(shí)間相同,則要求服務(wù)的時(shí)間愈短夯辖,其優(yōu)先權(quán)愈高琉预,因而該算法有利于短作業(yè)。?

(2) 當(dāng)要求服務(wù)的時(shí)間相同時(shí)蒿褂,作業(yè)的優(yōu)先權(quán)決定于其等待時(shí)間圆米,等待時(shí)間愈長(zhǎng),其優(yōu)先權(quán)愈高啄栓,因而它實(shí)現(xiàn)的是先來(lái)先服務(wù)娄帖。

?(3) 對(duì)于長(zhǎng)作業(yè),作業(yè)的優(yōu)先級(jí)可以隨等待時(shí)間的增加而提高昙楚,當(dāng)其等待時(shí)間足夠長(zhǎng)時(shí)近速,其優(yōu)先級(jí)便可升到很高,從而也可獲得處理機(jī)堪旧。簡(jiǎn)言之削葱,該算法既照顧了短作業(yè),又考慮了作業(yè)到達(dá)的先后次序崎场,不會(huì)使長(zhǎng)作業(yè)長(zhǎng)期得不到服務(wù)佩耳。因此,該算法實(shí)現(xiàn)了一種較好的折衷谭跨。當(dāng)然干厚,在利用該算法時(shí),每要進(jìn)行調(diào)度之前螃宙,都須先做響應(yīng)比的計(jì)算蛮瞄,這會(huì)增加系統(tǒng)開(kāi)銷

5)時(shí)間片輪轉(zhuǎn)法(RR)在早期的時(shí)間片輪轉(zhuǎn)法中谆扎,系統(tǒng)將所有的就緒進(jìn)程按先來(lái)先服務(wù)的原則排成一個(gè)隊(duì)列挂捅,每次調(diào)度時(shí),把CPU分配給隊(duì)首進(jìn)程堂湖,并令其執(zhí)行一個(gè)時(shí)間片闲先。時(shí)間片的大小從幾ms到幾百ms。當(dāng)執(zhí)行的時(shí)間片用完時(shí)无蜂,由一個(gè)計(jì)時(shí)器發(fā)出時(shí)鐘中斷請(qǐng)求伺糠,調(diào)度程序便據(jù)此信號(hào)來(lái)停止該進(jìn)程的執(zhí)行,并將它送往就緒隊(duì)列的末尾斥季;然后训桶,再把處理機(jī)分配給就緒隊(duì)列中新的隊(duì)首進(jìn)程累驮,同時(shí)也讓它執(zhí)行一個(gè)時(shí)間片。這樣就可以保證就緒隊(duì)列中的所有進(jìn)程在一給定的時(shí)間內(nèi)均能獲得一時(shí)間片的處理機(jī)執(zhí)行時(shí)間舵揭。換言之谤专,系統(tǒng)能在給定的時(shí)間內(nèi)響應(yīng)所有用戶的請(qǐng)求。

6)多級(jí)反饋隊(duì)列調(diào)度算法它是目前被公認(rèn)的一種較好的進(jìn)程調(diào)度算法午绳。?

(1) 應(yīng)設(shè)置多個(gè)就緒隊(duì)列置侍,并為各個(gè)隊(duì)列賦予不同的優(yōu)先級(jí)。第一個(gè)隊(duì)列的優(yōu)先級(jí)最高箱叁,第二個(gè)隊(duì)列次之墅垮,其余各隊(duì)列的優(yōu)先權(quán)逐個(gè)降低惕医。該算法賦予各個(gè)隊(duì)列中進(jìn)程執(zhí)行時(shí)間片的大小也各不相同耕漱,在優(yōu)先權(quán)愈高的隊(duì)列中,為每個(gè)進(jìn)程所規(guī)定的執(zhí)行時(shí)間片就愈小抬伺。例如螟够,第二個(gè)隊(duì)列的時(shí)間片要比第一個(gè)隊(duì)列的時(shí)間片長(zhǎng)一倍,……峡钓,第i+1個(gè)隊(duì)列的時(shí)間片要比第i個(gè)隊(duì)列的時(shí)間片長(zhǎng)一倍妓笙。

?(2) 當(dāng)一個(gè)新進(jìn)程進(jìn)入內(nèi)存后,首先將它放入第一隊(duì)列的末尾能岩,按FCFS原則排隊(duì)等待調(diào)度寞宫。當(dāng)輪到該進(jìn)程執(zhí)行時(shí),如它能在該時(shí)間片內(nèi)完成拉鹃,便可準(zhǔn)備撤離系統(tǒng)辈赋;如果它在一個(gè)時(shí)間片結(jié)束時(shí)尚未完成,調(diào)度程序便將該進(jìn)程轉(zhuǎn)入第二隊(duì)列的末尾膏燕,再同樣地按FCFS原則等待調(diào)度執(zhí)行钥屈;如果它在第二隊(duì)列中運(yùn)行一個(gè)時(shí)間片后仍未完成,再依次將它放入第三隊(duì)列坝辫,……篷就,如此下去,當(dāng)一個(gè)長(zhǎng)作業(yè)(進(jìn)程)從第一隊(duì)列依次降到第n隊(duì)列后近忙,在第n 隊(duì)列便采取按時(shí)間片輪轉(zhuǎn)的方式運(yùn)行竭业。

?(3) 僅當(dāng)?shù)谝魂?duì)列空閑時(shí),調(diào)度程序才調(diào)度第二隊(duì)列中的進(jìn)程運(yùn)行及舍;僅當(dāng)?shù)?~(i-1)隊(duì)列均空時(shí)未辆,才會(huì)調(diào)度第i隊(duì)列中的進(jìn)程運(yùn)行。如果處理機(jī)正在第i隊(duì)列中為某進(jìn)程服務(wù)時(shí)击纬,又有新進(jìn)程進(jìn)入優(yōu)先權(quán)較高的隊(duì)列(第1~(i-1)中的任何一個(gè)隊(duì)列)鼎姐,則此時(shí)新進(jìn)程將搶占正在運(yùn)行進(jìn)程的處理機(jī),即由調(diào)度程序把正在運(yùn)行的進(jìn)程放回到第i隊(duì)列的末尾,把處理機(jī)分配給新到的高優(yōu)先權(quán)進(jìn)程炕桨。http://blog.csdn.net/luyafei_89430/article/details/12971171

4. 作業(yè)與進(jìn)程的區(qū)別

一個(gè)進(jìn)程是一個(gè)程序?qū)δ硞€(gè)數(shù)據(jù)集的執(zhí)行過(guò)程饭尝,是分配資源的基本單位。作業(yè)是用戶需要計(jì)算機(jī)完成的某項(xiàng)任務(wù)献宫,是要求計(jì)算機(jī)所做工作的集合钥平。一個(gè)作業(yè)的完成要經(jīng)過(guò)作業(yè)提交、作業(yè)收容姊途、作業(yè)執(zhí)行和作業(yè)完成4個(gè)階段涉瘾。而進(jìn)程是對(duì)已提交完畢的程序所執(zhí)行過(guò)程的描述,是資源分配的基本單位捷兰。其主要區(qū)別如下立叛。

?1) 作業(yè)是用戶向計(jì)算機(jī)提交任務(wù)的任務(wù)實(shí)體。在用戶向計(jì)算機(jī)提交作業(yè)后贡茅,系統(tǒng)將它放入外存中的作業(yè)等待隊(duì)列中等待執(zhí)行秘蛇。而進(jìn)程則是完成用戶任務(wù)的執(zhí)行實(shí)體,是向系統(tǒng)申請(qǐng)分配資源的基本單位顶考。任一進(jìn)程赁还,只要它被創(chuàng)建,總有相應(yīng)的部分存在于內(nèi)存中驹沿。

?2) 一個(gè)作業(yè)可由多個(gè)進(jìn)程組成艘策,且必須至少由一個(gè)進(jìn)程組成,反過(guò)來(lái)則不成立渊季。 3) 作業(yè)的概念主要用在批處理系統(tǒng)中朋蔫,像UNIX這樣的分時(shí)系統(tǒng)中就沒(méi)有作業(yè)的概念。而進(jìn)程的概念則用在幾乎所有的多道程序系統(tǒng)中梭域。

http://blog.csdn.net/qq_32744005/article/details/51817637

3. 進(jìn)程和線程的關(guān)系:

(1) 一個(gè)線程只能屬于一個(gè)進(jìn)程斑举,而一個(gè)進(jìn)程可以有多個(gè)線程,但至少有一個(gè)線程病涨。 (2) 資源分配給進(jìn)程富玷,同一進(jìn)程的所有線程共享該進(jìn)程的所有資源。 (3) 處理機(jī)分給線程既穆,即真正在處理機(jī)上運(yùn)行的是線程赎懦。 (4) 線程在執(zhí)行過(guò)程中,需要協(xié)作同步幻工。不同進(jìn)程的線程間要利用消息通信的辦法實(shí)現(xiàn)同步励两。線程是指進(jìn)程內(nèi)的一個(gè)執(zhí)行單元,也是進(jìn)程內(nèi)的可調(diào)度實(shí)體.

4. ?進(jìn)程與線程的區(qū)別

1)調(diào)度:線程作為調(diào)度和分配的基本單位,進(jìn)程作為擁有資源的基本單位

2)并發(fā)性:不僅進(jìn)程之間可以并發(fā)執(zhí)行囊颅,同一個(gè)進(jìn)程的多個(gè)線程之間也可并發(fā)執(zhí)行

3)擁有資源:進(jìn)程是擁有資源的一個(gè)獨(dú)立單位当悔,線程不擁有系統(tǒng)資源傅瞻,只擁有一點(diǎn)在運(yùn)行中必不可少的資源,但它可與同屬一個(gè)進(jìn)程的其它線程共享進(jìn)程所擁有的全部資源.

4)系統(tǒng)開(kāi)銷:在創(chuàng)建或撤消進(jìn)程時(shí)盲憎,由于系統(tǒng)都要為之分配和回收資源嗅骄,導(dǎo)致系統(tǒng)的開(kāi)銷明顯大于創(chuàng)建或撤消線程時(shí)的開(kāi)銷。

?參考:http://blog.csdn.net/dazhong159/article/details/7896070


2.1 IPC幾種通信方式(進(jìn)程間的通信方式)

管道( pipe ):管道是一種半雙工的通信方式饼疙,數(shù)據(jù)只能單向流動(dòng)溺森,而且只能在具有親緣關(guān)系的進(jìn)程間使用。進(jìn)程的親緣關(guān)系通常是指父子進(jìn)程關(guān)系窑眯。

命名管道 (named pipe): 命名管道也是半雙工的通信方式屏积,它克服了管道沒(méi)有名字的限制,并且它允許無(wú)親緣關(guān)系進(jìn)程間的通信磅甩。命令管道在文件系統(tǒng)中有對(duì)應(yīng)的文件名炊林,命名管道通過(guò)命令mkfifo或系統(tǒng)調(diào)用mkfifo來(lái)創(chuàng)建。

信號(hào)量( semophore ): 信號(hào)量是一個(gè)計(jì)數(shù)器更胖,可以用來(lái)控制多個(gè)進(jìn)程對(duì)共享資源的訪問(wèn)铛铁。它常作為一種鎖機(jī)制隔显,防止某進(jìn)程正在訪問(wèn)共享資源時(shí)却妨,其他進(jìn)程也訪問(wèn)該資源。因此括眠,主要作為進(jìn)程間以及同一進(jìn)程內(nèi)不同線程之間的同步手段彪标。

消息隊(duì)列( message queue ): 消息隊(duì)列是由消息的鏈表,存放在內(nèi)核中并由消息隊(duì)列標(biāo)識(shí)符標(biāo)識(shí)掷豺。有足夠權(quán)限的進(jìn)程可以向隊(duì)列中添加消息捞烟,被賦予讀權(quán)限的進(jìn)程則可以讀走隊(duì)列中的消息。消息隊(duì)列克服了信號(hào)傳遞信息少当船、管道只能承載無(wú)格式字節(jié)流以及緩沖區(qū)大小受限等缺點(diǎn)题画。

信號(hào) ( sinal ):信號(hào)是一種比較復(fù)雜的通信方式,用于通知接收進(jìn)程某個(gè)事件已經(jīng)發(fā)生德频。除了用于進(jìn)程通信外苍息,進(jìn)程還可以發(fā)送信號(hào)給進(jìn)程本身。

共享內(nèi)存( shared memory ):共享內(nèi)存就是映射一段能被其他進(jìn)程所訪問(wèn)的內(nèi)存壹置,這段共享內(nèi)存由一個(gè)進(jìn)程創(chuàng)建竞思,但多個(gè)進(jìn)程都可以訪問(wèn)。共享內(nèi)存是最快的IPC方式钞护,它是針對(duì)其他進(jìn)程間通信方式運(yùn)行效率低而專門(mén)設(shè)計(jì)的盖喷。它往往與其他通信機(jī)制,如信號(hào)量配合使用难咕,來(lái)實(shí)現(xiàn)進(jìn)程間的同步和通信课梳。

套接字( socket ): 也是一種進(jìn)程間通信機(jī)制距辆,與其他通信機(jī)制不同的是,它可用于不同機(jī)器間的進(jìn)程通信暮刃。


3.死鎖的必要條件挑格,怎么處理死鎖。

3.1 死鎖概念

是指兩個(gè)或兩個(gè)以上的進(jìn)程在執(zhí)行過(guò)程中沾歪,由于競(jìng)爭(zhēng)資源或者由于彼此通信而造成的一種阻塞的現(xiàn)象漂彤,若無(wú)外力作用,它們都將無(wú)法推進(jìn)下去灾搏。

3.2 活鎖

活鎖指的是任務(wù)或者執(zhí)行者沒(méi)有被阻塞挫望,由于某些條件沒(méi)有滿足,導(dǎo)致一直重復(fù)嘗試狂窑,失敗媳板,嘗試,失敗泉哈。

3.3 死鎖條件

互斥條件:一個(gè)資源每次只能被一個(gè)進(jìn)程使用

不可剝奪條件:進(jìn)程已獲得的資源蛉幸,在末使用完之前,不能強(qiáng)行剝奪

請(qǐng)求與保持條件:一個(gè)進(jìn)程因請(qǐng)求資源而阻塞時(shí)丛晦,對(duì)已獲得的資源保持不放

循環(huán)等待條件:若干進(jìn)程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系.

3.4 死鎖預(yù)防

破壞互斥條件奕纫。允許某些進(jìn)程(線程)同時(shí)訪問(wèn)某些資源,但有的資源不允許同時(shí)被訪問(wèn)如打印機(jī)等烫沙。

破壞不可搶占條件:即允許進(jìn)程強(qiáng)行從占有者那里奪取某些資源匹层。就是說(shuō),當(dāng)一個(gè)進(jìn)程已經(jīng)占有某些資源锌蓄,它又重新占有全部資源升筏,以后再重新申請(qǐng),它所釋放的資源可以分配給其他進(jìn)程瘸爽。這種預(yù)防方法實(shí)現(xiàn)起來(lái)困難您访,會(huì)降低系統(tǒng)性能。

破壞占有且申請(qǐng)條件剪决×橥簦可以實(shí)行預(yù)先分配策略,即進(jìn)程在運(yùn)行前一次性地向系統(tǒng)申請(qǐng)它所需要的全部資源昼捍。如果當(dāng)前進(jìn)程所需的全部資源得不到滿足识虚,則不分配任何資源。只有當(dāng)系統(tǒng)能夠滿足當(dāng)前的全部資源得到滿足時(shí)妒茬,才一次性將所有申請(qǐng)的資源全部分配給該進(jìn)程担锤。由于運(yùn)行的進(jìn)程已占有了它所需的全部資源,所以不會(huì)發(fā)生占有資源又重新申請(qǐng)資源的現(xiàn)象乍钻,因此不會(huì)發(fā)生死鎖肛循。但是有以下缺點(diǎn): 1) 在許多情況下铭腕,一個(gè)進(jìn)程在執(zhí)行之前不可能知道它所需的全部資源。這是由于進(jìn)程在執(zhí)行時(shí)是動(dòng)態(tài)的多糠,不可預(yù)測(cè)的累舷。 2)資源利用率低。無(wú)論所分配資源何時(shí)用到夹孔,一個(gè)進(jìn)程只有在占有所需的全部資源后才能執(zhí)行被盈。即使有些資源最后才被該進(jìn)程用到一次,但該進(jìn)程在生存期間一直占有它們搭伤,造成長(zhǎng)期占有只怎。 3) 降低了進(jìn)程的并發(fā)性。因?yàn)橘Y源有限怜俐,又加上存在浪費(fèi)身堡,能分配到所需全部資源的進(jìn)程個(gè)數(shù)必然少了。

破壞循環(huán)等待條件拍鲤。實(shí)行資源有序分配策略贴谎。采用這種策略即把資源事先分類編號(hào),按號(hào)分配季稳。所有進(jìn)程對(duì)資源的請(qǐng)求必須嚴(yán)格按資源需要遞增的順序提出擅这。進(jìn)程占用小好資源,才能申請(qǐng)大號(hào)資源绞幌,就不會(huì)產(chǎn)生環(huán)路蕾哟。這種策略與前面的策略相比,資源的利用率和系統(tǒng)吞吐量都有很大提高莲蜘,但是也存在以下缺點(diǎn): 1)限制了進(jìn)程對(duì)資源的請(qǐng)求,同時(shí)系統(tǒng)給所有資源合理編號(hào)也是件困難事帘营,并增加了系統(tǒng)開(kāi)銷票渠。

3.4 死鎖的避免

銀行家算法:該算法需要檢查申請(qǐng)者對(duì)資源的最大需求量,如果系統(tǒng)現(xiàn)存的各類資源可以滿足申請(qǐng)者的請(qǐng)求芬迄,就滿足申請(qǐng)者的請(qǐng)求问顷。這樣申請(qǐng)者就可很快完成其計(jì)算,然后釋放它占用的資源禀梳,從而保證了系統(tǒng)中的所有進(jìn)程都能完成杜窄,所以可避免死鎖的發(fā)生

3.5 死鎖的解除

一旦檢測(cè)出死鎖,就應(yīng)立即釆取相應(yīng)的措施算途,以解除死鎖塞耕。 死鎖解除的主要方法有: 1)資源剝奪法。掛起某些死鎖進(jìn)程嘴瓤,并搶占它的資源扫外,將這些資源分配給其他的死鎖進(jìn)程莉钙。但應(yīng)防止被掛起的進(jìn)程長(zhǎng)時(shí)間得不到資源,而處于資源匱乏的狀態(tài)筛谚。 2)撤銷進(jìn)程法磁玉。強(qiáng)制撤銷部分、甚至全部死鎖進(jìn)程并剝奪這些進(jìn)程的資源驾讲。撤銷的原則可以按進(jìn)程優(yōu)先級(jí)和撤銷進(jìn)程代價(jià)的高低進(jìn)行蚊伞。 3)進(jìn)程回退法。讓一(多)個(gè)進(jìn)程回退到足以回避死鎖的地步吮铭,進(jìn)程回退時(shí)自愿釋放資源而不是被剝奪厚柳。要求系統(tǒng)保持進(jìn)程的歷史信息,設(shè)置還原點(diǎn)沐兵。


4. Window內(nèi)存管理方式:頁(yè)存儲(chǔ)别垮、段存儲(chǔ)、段頁(yè)存儲(chǔ)扎谎。

4.1 分頁(yè)存儲(chǔ)管理

4.1.1 基本思想

將程序的邏輯地址空間劃分為固定大小的頁(yè)(page)碳想,而物理內(nèi)存劃分為同樣大小的頁(yè)框(page frame)。程序加載時(shí)毁靶,可將任意一頁(yè)放人內(nèi)存中任意一個(gè)頁(yè)框胧奔,這些頁(yè)框不必連續(xù),從而實(shí)現(xiàn)了離散分配预吆。該方法需要CPU的硬件支持龙填,來(lái)實(shí)現(xiàn)邏輯地址和物理地址之間的映射。在頁(yè)式存儲(chǔ)管理方式中地址結(jié)構(gòu)由兩部構(gòu)成拐叉,前一部分是頁(yè)號(hào)岩遗,后一部分為頁(yè)內(nèi)地址w(位移量)。

邏輯地址道物理地址變化原理:CPU中的內(nèi)存管理單元(MMU)按邏輯頁(yè)號(hào)通過(guò)查進(jìn)程頁(yè)表得到物理頁(yè)框號(hào)凤瘦,將物理頁(yè)框號(hào)與頁(yè)內(nèi)地址相加形成物理地址(見(jiàn)圖4-4)宿礁。

4.1.2 頁(yè)式管理方式的優(yōu)點(diǎn)

1)沒(méi)有外碎片,每個(gè)內(nèi)碎片不超過(guò)頁(yè)大比前面所討論的幾種管理方式的最大進(jìn)步是蔬芥, 2)一個(gè)程序不必連續(xù)存放梆靖。 3)便于改變程序占用空間的大小(主要指隨著程序運(yùn)行,動(dòng)態(tài)生成的數(shù)據(jù)增多笔诵,所要求的地址空間相應(yīng)增長(zhǎng))返吻。

4.1.3 缺點(diǎn)

要求程序全部裝入內(nèi)存,沒(méi)有足夠的內(nèi)存乎婿,程序就不能執(zhí)行测僵。

4.2 分段存儲(chǔ)

4.2.1 思想

將用戶程序地址空間分成若干個(gè)大小不等的段,每段可以定義一組相對(duì)完整的邏輯信息次酌。存儲(chǔ)分配時(shí)恨课,以段為單位舆乔,段與段在內(nèi)存中可以不相鄰接,也實(shí)現(xiàn)了離散分配剂公。 在為某個(gè)段分配物理內(nèi)存時(shí)希俩,可以采用首先適配法、下次適配法纲辽、最佳適配法等方法颜武。 在回收某個(gè)段所占用的空間時(shí),要注意將收回的空間與其相鄰的空間合并拖吼。

4.2.2 地址映射

在段式 管理系統(tǒng)中鳞上,整個(gè)進(jìn)程的地址空間是二維的,即其邏輯地址由段號(hào)和段內(nèi)地址兩部分組成吊档。為了完成進(jìn)程邏輯地址到物理地址的映射篙议,處理器會(huì)查找內(nèi)存中的段表,由段號(hào)得到段的首地址怠硼,加上段內(nèi)地址鬼贱,得到實(shí)際的物理地址(見(jiàn)圖4—5)。這個(gè)過(guò)程也是由處理器的硬件直接完成的香璃,操作系統(tǒng)只需在進(jìn)程切換時(shí)这难,將進(jìn)程段表的首地址裝入處理器的特定寄存器當(dāng)中。這個(gè)寄存器一般被稱作段表地址寄存器葡秒。

4.3 分頁(yè)和分段的主要區(qū)別

a)姻乓、頁(yè)是信息的物理單位,分頁(yè)是為實(shí)現(xiàn)離散分配方式眯牧,以消減內(nèi)存的外零頭蹋岩,提高內(nèi)存的利用率;段則是信息的邏輯單位炸站,它含有一組其意義相對(duì)完整的信息星澳,分段的目的是為了能更好地滿足用戶的需要。 b)旱易、頁(yè)的大小固定且由系統(tǒng)決定,由系統(tǒng)把邏輯地址劃分為頁(yè)號(hào)和頁(yè)內(nèi)地址兩部分腿堤,是由機(jī)器硬件實(shí)現(xiàn)的阀坏,因而在系統(tǒng)中只能有一種大小的頁(yè)面;而段的長(zhǎng)度卻不固定笆檀,決定于用戶所編寫(xiě)的程序忌堂,通常由編譯程序在對(duì)源程序進(jìn)行編譯時(shí),根據(jù)信息的性質(zhì)來(lái)劃分酗洒。 c)士修、分頁(yè)的作業(yè)地址空間是一維的枷遂,即單一的線性地址空間,程序員只需利用一個(gè)記憶符棋嘲,即可表示一個(gè)地址酒唉;而分段的作業(yè)地址空間則是二維的,程序員在標(biāo)識(shí)一個(gè)地址是沸移,即需給出段名痪伦,又需給出段內(nèi)地址。 d)雹锣、分頁(yè)信息很難保護(hù)和共享网沾、分段存儲(chǔ)按邏輯存儲(chǔ)所以容易實(shí)現(xiàn)對(duì)段的保存和共享。

http://blog.sina.com.cn/s/blog_a46817ff0101hjzp.html

4.4 段頁(yè)存儲(chǔ)

它首先將程序按其邏輯結(jié)構(gòu)劃分為若干個(gè)大小不等的邏輯段蕊爵,然后再將每個(gè)邏輯段劃分為若干個(gè)大小相等的邏輯頁(yè)辉哥。主存空間也劃分為若干個(gè)同樣大小的物理頁(yè)。輔存和主存之間的信息調(diào)度以頁(yè)為基本傳送單位攒射,每個(gè)程序段對(duì)應(yīng)一個(gè)段表醋旦,每頁(yè)對(duì)應(yīng)一個(gè)頁(yè)表。CPU訪問(wèn)時(shí)匆篓,段表指示每段對(duì)應(yīng)的頁(yè)表地址浑度,每一段的頁(yè)表確定頁(yè)所在的主存空間的位置,最后與頁(yè)表內(nèi)地址拼接鸦概,確定CPU要訪問(wèn)單元的物理地址箩张。

段頁(yè)存儲(chǔ)管理方式綜合了段式管理和頁(yè)式管理的優(yōu)點(diǎn),但需要經(jīng)過(guò)兩級(jí)查表才能完成地址轉(zhuǎn)換窗市,消耗時(shí)間多先慷。


5. 什么是虛擬內(nèi)存。

物理內(nèi)存:在應(yīng)用中咨察,自然是顧名思義论熙,物理上,真實(shí)的插在板子上的內(nèi)存是多大就是多大了摄狱。而在CPU中的概念脓诡,物理內(nèi)存就是CPU的地址線可以直接進(jìn)行尋址的內(nèi)存空間大小。虛擬內(nèi)存:它使得應(yīng)用程序認(rèn)為它擁有連續(xù)的可用的內(nèi)存(一個(gè)連續(xù)完整的地址空間),而實(shí)際上媒役,它通常是被分隔成多個(gè)物理內(nèi)存碎片祝谚,還有部分暫時(shí)存儲(chǔ)在外部磁盤(pán)存儲(chǔ)器上,在需要時(shí)進(jìn)行數(shù)據(jù)交換酣衷。


6. 虛擬地址交惯、邏輯地址、線性地址、物理地址的區(qū)別席爽。

虛擬地址:指的是由程序產(chǎn)生的由段選擇符和段內(nèi)偏移地址兩個(gè)部分組成的地址意荤。為什么叫它是虛擬的地址呢?因?yàn)檫@兩部分組成的地址并沒(méi)有直接訪問(wèn)物理內(nèi)存只锻,而是要通過(guò)分段地址的變換機(jī)構(gòu)處理或映射后才會(huì)對(duì)應(yīng)到相應(yīng)的物理內(nèi)存地址玖像。

邏輯地址:指由程序產(chǎn)生的與段相關(guān)的偏移地址部分。不過(guò)有些資料是直接把邏輯地址當(dāng)成虛擬地址炬藤,兩者并沒(méi)有明確的界限御铃。

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

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


7. 操作系統(tǒng)如何進(jìn)行分頁(yè)調(diào)度

先進(jìn)先出算法(FIFO):這種算法的實(shí)質(zhì)是妻怎,總是選擇在主存中停留時(shí)間最長(zhǎng)(即最老)的一頁(yè)置換,即先進(jìn)入內(nèi)存的頁(yè)泞歉,先退出內(nèi)存逼侦。理由是:最早調(diào)入內(nèi)存的頁(yè),其不再被使用的可能性比剛調(diào)入內(nèi)存的可能性大腰耙。?

2.最優(yōu)置換算法(OPT):當(dāng)調(diào)入新的一頁(yè)而必須預(yù)先置換某個(gè)老頁(yè)時(shí)榛丢,所選擇的老頁(yè)應(yīng)是將來(lái)不再被使用,或者是在最遠(yuǎn)的將來(lái)才被訪問(wèn)挺庞。采用這種頁(yè)面置換算法晰赞,保證有最少的缺頁(yè)率。 但是最優(yōu)頁(yè)面置換算法的實(shí)現(xiàn)是困難的选侨,因?yàn)樗枰藗冾A(yù)先就知道一個(gè)進(jìn)程整個(gè)運(yùn)行過(guò)程中頁(yè)面走向的全部情況掖鱼。

?3.最久未使用算法(LRU)當(dāng)需要置換一頁(yè)時(shí),選擇在最近一段時(shí)間里最久沒(méi)有使用過(guò)的頁(yè)面予以置換.LRU算法是經(jīng)常采用的頁(yè)面置換算法援制,并被認(rèn)為是相當(dāng)好的锨用,但是存在如何實(shí)現(xiàn)它的問(wèn)題。LRU算法需要實(shí)際硬件的支持隘谣。?

4.LRU(最近最少使用)算法如果一個(gè)數(shù)據(jù)在最近一段時(shí)間內(nèi)使用次數(shù)很少,那么在將來(lái)一段時(shí)間內(nèi)被使用的可能性也很小?

5.時(shí)鐘算法():將頁(yè)面排成一個(gè)時(shí)鐘的形狀,該時(shí)鐘有一個(gè)針臂寻歧,每次需要更換頁(yè)面時(shí)掌栅,我們從針臂所指的頁(yè)面開(kāi)始檢查。如果當(dāng)前頁(yè)面的訪問(wèn)位為0码泛,即從上次檢查到這次猾封,該頁(yè)面沒(méi)有被訪問(wèn)過(guò),將該頁(yè)面替換噪珊。反之晌缘,就將其訪問(wèn)位清零,并順時(shí)針移動(dòng)指針到下一個(gè)頁(yè)面痢站。重復(fù)這些步驟磷箕,直到找到一個(gè)訪問(wèn)位為0的頁(yè)面。 (1)計(jì)數(shù)器阵难。最簡(jiǎn)單的情況是使每個(gè)頁(yè)表項(xiàng)對(duì)應(yīng)一個(gè)使用時(shí)間字段岳枷,并給CPU增加一個(gè)邏輯時(shí)鐘或計(jì)數(shù)器。每次存儲(chǔ)訪問(wèn)呜叫,該時(shí)鐘都加1空繁。在置換頁(yè)面時(shí),選擇該時(shí)間值最小的頁(yè)面朱庆。這樣做盛泡,不僅要查頁(yè)表,而且當(dāng)頁(yè)表改變時(shí)(因CPU調(diào)度)要維護(hù)這個(gè)頁(yè)表中的時(shí)間娱颊,還要考慮到時(shí)鐘值溢出的問(wèn)題傲诵。


8. 磁盤(pán)調(diào)度算法:

1.先來(lái)先服務(wù)(FCFS),按訪問(wèn)請(qǐng)求到達(dá)的先后順序服務(wù)维蒙。簡(jiǎn)單掰吕,公平,但是效率不高颅痊,相臨兩次請(qǐng)求可能會(huì)造成最內(nèi)到最外柱面尋道殖熟,使磁頭反復(fù)移動(dòng),增加了服務(wù)時(shí)間斑响,對(duì)機(jī)器不利菱属。?

2.最短尋道時(shí)間優(yōu)先(SSTF),優(yōu)先選擇距當(dāng)前磁頭最近的訪問(wèn)請(qǐng)求進(jìn)行服務(wù)舰罚,主要考慮尋道優(yōu)先纽门。改善了磁盤(pán)平均服務(wù)時(shí)間,但是造成某些訪問(wèn)請(qǐng)求長(zhǎng)期等待得不到服務(wù)营罢。?

3.掃描算法(SCAN)赏陵,當(dāng)設(shè)備無(wú)訪問(wèn)請(qǐng)求時(shí)饼齿,磁頭不動(dòng);當(dāng)有訪問(wèn)請(qǐng)求時(shí)蝙搔,磁頭按一個(gè)方向移動(dòng)缕溉,在移動(dòng)過(guò)程中對(duì)遇到的訪問(wèn)請(qǐng)求進(jìn)行服務(wù),然后判斷該方向上是否還有訪問(wèn)請(qǐng)求吃型,如果有則繼續(xù)?

4.循環(huán)掃描算法(CSCAN):循環(huán)掃描調(diào)度算法是在掃描算法的基礎(chǔ)上改進(jìn)的证鸥。磁臂改為單項(xiàng)移動(dòng),由外向里勤晚。當(dāng)前位置開(kāi)始沿磁臂的移動(dòng)方向去選擇離當(dāng)前磁臂最近的哪個(gè)柱面的訪問(wèn)者枉层。如果沿磁臂的方向無(wú)請(qǐng)求訪問(wèn)時(shí),再回到最外赐写,訪問(wèn)柱面號(hào)最小的作業(yè)請(qǐng)求鸟蜡。

參考http://www.cnblogs.com/edisonchou/p/5094066.htmlhttp://blog.csdn.net/shinehoo/article/details/5881939http://blog.chinaunix.net/uid-25132162-id-361291.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市血淌,隨后出現(xiàn)的幾起案子矩欠,更是在濱河造成了極大的恐慌,老刑警劉巖悠夯,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件癌淮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡沦补,警方通過(guò)查閱死者的電腦和手機(jī)乳蓄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)夕膀,“玉大人虚倒,你說(shuō)我怎么就攤上這事〔瑁” “怎么了魂奥?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)易猫。 經(jīng)常有香客問(wèn)我耻煤,道長(zhǎng),這世上最難降的妖魔是什么准颓? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任哈蝇,我火速辦了婚禮,結(jié)果婚禮上攘已,老公的妹妹穿的比我還像新娘炮赦。我一直安慰自己,他們只是感情好样勃,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布吠勘。 她就那樣靜靜地躺著性芬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪看幼。 梳的紋絲不亂的頭發(fā)上批旺,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音诵姜,去河邊找鬼。 笑死搏熄,一個(gè)胖子當(dāng)著我的面吹牛棚唆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播心例,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼宵凌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了止后?” 一聲冷哼從身側(cè)響起瞎惫,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎译株,沒(méi)想到半個(gè)月后瓜喇,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡歉糜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年乘寒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匪补。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伞辛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出夯缺,到底是詐尸還是另有隱情蚤氏,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布踊兜,位于F島的核電站竿滨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏润文。R本人自食惡果不足惜姐呐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望典蝌。 院中可真熱鬧曙砂,春花似錦、人聲如沸骏掀。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至笑陈,卻和暖如春际度,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涵妥。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工乖菱, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蓬网。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓窒所,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親帆锋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吵取,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • iOS面試小貼士 ———————————————回答好下面的足夠了------------------------...
    不言不愛(ài)閱讀 1,962評(píng)論 0 7
  • 多線程、特別是NSOperation 和 GCD 的內(nèi)部原理锯厢。運(yùn)行時(shí)機(jī)制的原理和運(yùn)用場(chǎng)景皮官。SDWebImage的原...
    LZM輪回閱讀 2,004評(píng)論 0 12
  • ———————————————回答好下面的足夠了---------------------------------...
    恒愛(ài)DE問(wèn)候閱讀 1,712評(píng)論 0 4
  • 1.寫(xiě)一個(gè)NSString類的實(shí)現(xiàn) +(id)initWithCString:(c*****t char *)nu...
    韓七夏閱讀 3,747評(píng)論 2 37
  • 史上最全的iOS面試題及答案 迷途的羔羊--專為路癡量身打造的品牌。史上最精準(zhǔn)的定位实辑。想迷路都難捺氢!閃電更新中......
    南虞閱讀 1,496評(píng)論 0 8