日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

面试「计算机操作系统」知识点大集合!

發(fā)布時(shí)間:2025/3/21 windows 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试「计算机操作系统」知识点大集合! 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作者:CyC2018

鏈接:https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/計(jì)算機(jī)操作系統(tǒng).md

一、概述

基本特征

1. 并發(fā)

并發(fā)是指宏觀上在一段時(shí)間內(nèi)能同時(shí)運(yùn)行多個(gè)程序,而并行則指同一時(shí)刻能運(yùn)行多個(gè)指令。

并行需要硬件支持,如多流水線、多核處理器或者分布式計(jì)算系統(tǒng)。

操作系統(tǒng)通過引入進(jìn)程和線程,使得程序能夠并發(fā)運(yùn)行。

2. 共享

共享是指系統(tǒng)中的資源可以被多個(gè)并發(fā)進(jìn)程共同使用。

有兩種共享方式:互斥共享和同時(shí)共享。

互斥共享的資源稱為臨界資源,例如打印機(jī)等,在同一時(shí)間只允許一個(gè)進(jìn)程訪問,需要用同步機(jī)制來實(shí)現(xiàn)對(duì)臨界資源的訪問。

3. 虛擬

虛擬技術(shù)把一個(gè)物理實(shí)體轉(zhuǎn)換為多個(gè)邏輯實(shí)體。

主要有兩種虛擬技術(shù):時(shí)分復(fù)用技術(shù)和空分復(fù)用技術(shù)。

多個(gè)進(jìn)程能在同一個(gè)處理器上并發(fā)執(zhí)行使用了時(shí)分復(fù)用技術(shù),讓每個(gè)進(jìn)程輪流占有處理器,每次只執(zhí)行一小個(gè)時(shí)間片并快速切換。

虛擬內(nèi)存使用了空分復(fù)用技術(shù),它將物理內(nèi)存抽象為地址空間,每個(gè)進(jìn)程都有各自的地址空間。地址空間的頁被映射到物理內(nèi)存,地址空間的頁并不需要全部在物理內(nèi)存中,當(dāng)使用到一個(gè)沒有在物理內(nèi)存的頁時(shí),執(zhí)行頁面置換算法,將該頁置換到內(nèi)存中。

4. 異步

異步指進(jìn)程不是一次性執(zhí)行完畢,而是走走停停,以不可知的速度向前推進(jìn)。

基本功能

1. 進(jìn)程管理

進(jìn)程控制、進(jìn)程同步、進(jìn)程通信、死鎖處理、處理機(jī)調(diào)度等。

2. 內(nèi)存管理

內(nèi)存分配、地址映射、內(nèi)存保護(hù)與共享、虛擬內(nèi)存等。

3. 文件管理

文件存儲(chǔ)空間的管理、目錄管理、文件讀寫管理和保護(hù)等。

4. 設(shè)備管理

完成用戶的 I/O 請(qǐng)求,方便用戶使用各種設(shè)備,并提高設(shè)備的利用率。

主要包括緩沖管理、設(shè)備分配、設(shè)備處理、虛擬設(shè)備等。

系統(tǒng)調(diào)用

如果一個(gè)進(jìn)程在用戶態(tài)需要使用內(nèi)核態(tài)的功能,就進(jìn)行系統(tǒng)調(diào)用從而陷入內(nèi)核,由操作系統(tǒng)代為完成。

Linux 的系統(tǒng)調(diào)用主要有以下這些:

TaskCommands
進(jìn)程控制fork(); exit(); wait();
進(jìn)程通信pipe(); shmget(); mmap();
文件操作open(); read(); write();
設(shè)備操作ioctl(); read(); write();
信息維護(hù)getpid(); alarm(); sleep();
安全chmod(); umask(); chown();

大內(nèi)核和微內(nèi)核

1. 大內(nèi)核

大內(nèi)核是將操作系統(tǒng)功能作為一個(gè)緊密結(jié)合的整體放到內(nèi)核。

由于各模塊共享信息,因此有很高的性能。

2. 微內(nèi)核

由于操作系統(tǒng)不斷復(fù)雜,因此將一部分操作系統(tǒng)功能移出內(nèi)核,從而降低內(nèi)核的復(fù)雜性。移出的部分根據(jù)分層的原則劃分成若干服務(wù),相互獨(dú)立。

在微內(nèi)核結(jié)構(gòu)下,操作系統(tǒng)被劃分成小的、定義良好的模塊,只有微內(nèi)核這一個(gè)模塊運(yùn)行在內(nèi)核態(tài),其余模塊運(yùn)行在用戶態(tài)。

因?yàn)樾枰l繁地在用戶態(tài)和核心態(tài)之間進(jìn)行切換,所以會(huì)有一定的性能損失。

中斷分類

1. 外中斷

由 CPU 執(zhí)行指令以外的事件引起,如 I/O 完成中斷,表示設(shè)備輸入/輸出處理已經(jīng)完成,處理器能夠發(fā)送下一個(gè)輸入/輸出請(qǐng)求。此外還有時(shí)鐘中斷、控制臺(tái)中斷等。

2. 異常

由 CPU 執(zhí)行指令的內(nèi)部事件引起,如非法操作碼、地址越界、算術(shù)溢出等。

3. 陷入

在用戶程序中使用系統(tǒng)調(diào)用。

二、進(jìn)程管理

進(jìn)程與線程

1. 進(jìn)程

進(jìn)程是資源分配的基本單位。

進(jìn)程控制塊 (Process Control Block, PCB) 描述進(jìn)程的基本信息和運(yùn)行狀態(tài),所謂的創(chuàng)建進(jìn)程和撤銷進(jìn)程,都是指對(duì) PCB 的操作。

下圖顯示了 4 個(gè)程序創(chuàng)建了 4 個(gè)進(jìn)程,這 4 個(gè)進(jìn)程可以并發(fā)地執(zhí)行。

2. 線程

線程是獨(dú)立調(diào)度的基本單位。

一個(gè)進(jìn)程中可以有多個(gè)線程,它們共享進(jìn)程資源。

QQ 和瀏覽器是兩個(gè)進(jìn)程,瀏覽器進(jìn)程里面有很多線程,例如 HTTP 請(qǐng)求線程、事件響應(yīng)線程、渲染線程等等,線程的并發(fā)執(zhí)行使得在瀏覽器中點(diǎn)擊一個(gè)新鏈接從而發(fā)起 HTTP 請(qǐng)求時(shí),瀏覽器還可以響應(yīng)用戶的其它事件。

3. 區(qū)別

Ⅰ 擁有資源

進(jìn)程是資源分配的基本單位,但是線程不擁有資源,線程可以訪問隸屬進(jìn)程的資源。

Ⅱ 調(diào)度

線程是獨(dú)立調(diào)度的基本單位,在同一進(jìn)程中,線程的切換不會(huì)引起進(jìn)程切換,從一個(gè)進(jìn)程中的線程切換到另一個(gè)進(jìn)程中的線程時(shí),會(huì)引起進(jìn)程切換。

Ⅲ 系統(tǒng)開銷

由于創(chuàng)建或撤銷進(jìn)程時(shí),系統(tǒng)都要為之分配或回收資源,如內(nèi)存空間、I/O 設(shè)備等,所付出的開銷遠(yuǎn)大于創(chuàng)建或撤銷線程時(shí)的開銷。類似地,在進(jìn)行進(jìn)程切換時(shí),涉及當(dāng)前執(zhí)行進(jìn)程 CPU 環(huán)境的保存及新調(diào)度進(jìn)程 CPU 環(huán)境的設(shè)置,而線程切換時(shí)只需保存和設(shè)置少量寄存器內(nèi)容,開銷很小。

Ⅳ 通信方面

線程間可以通過直接讀寫同一進(jìn)程中的數(shù)據(jù)進(jìn)行通信,但是進(jìn)程通信需要借助 IPC。

進(jìn)程狀態(tài)的切換

  • 就緒狀態(tài)(ready):等待被調(diào)度

  • 運(yùn)行狀態(tài)(running)

  • 阻塞狀態(tài)(waiting):等待資源

應(yīng)該注意以下內(nèi)容:

  • 只有就緒態(tài)和運(yùn)行態(tài)可以相互轉(zhuǎn)換,其它的都是單向轉(zhuǎn)換。就緒狀態(tài)的進(jìn)程通過調(diào)度算法從而獲得 CPU 時(shí)間,轉(zhuǎn)為運(yùn)行狀態(tài);而運(yùn)行狀態(tài)的進(jìn)程,在分配給它的 CPU 時(shí)間片用完之后就會(huì)轉(zhuǎn)為就緒狀態(tài),等待下一次調(diào)度。

  • 阻塞狀態(tài)是缺少需要的資源從而由運(yùn)行狀態(tài)轉(zhuǎn)換而來,但是該資源不包括 CPU 時(shí)間,缺少 CPU 時(shí)間會(huì)從運(yùn)行態(tài)轉(zhuǎn)換為就緒態(tài)。

進(jìn)程調(diào)度算法

不同環(huán)境的調(diào)度算法目標(biāo)不同,因此需要針對(duì)不同環(huán)境來討論調(diào)度算法。

1. 批處理系統(tǒng)

批處理系統(tǒng)沒有太多的用戶操作,在該系統(tǒng)中,調(diào)度算法目標(biāo)是保證吞吐量和周轉(zhuǎn)時(shí)間(從提交到終止的時(shí)間)。

1.1 先來先服務(wù) first-come first-serverd(FCFS)

按照請(qǐng)求的順序進(jìn)行調(diào)度。

有利于長(zhǎng)作業(yè),但不利于短作業(yè),因?yàn)槎套鳂I(yè)必須一直等待前面的長(zhǎng)作業(yè)執(zhí)行完畢才能執(zhí)行,而長(zhǎng)作業(yè)又需要執(zhí)行很長(zhǎng)時(shí)間,造成了短作業(yè)等待時(shí)間過長(zhǎng)。

1.2 短作業(yè)優(yōu)先 shortest job first(SJF)

按估計(jì)運(yùn)行時(shí)間最短的順序進(jìn)行調(diào)度。

長(zhǎng)作業(yè)有可能會(huì)餓死,處于一直等待短作業(yè)執(zhí)行完畢的狀態(tài)。因?yàn)槿绻恢庇卸套鳂I(yè)到來,那么長(zhǎng)作業(yè)永遠(yuǎn)得不到調(diào)度。

1.3 最短剩余時(shí)間優(yōu)先 shortest remaining time next(SRTN)

按估計(jì)剩余時(shí)間最短的順序進(jìn)行調(diào)度。

2. 交互式系統(tǒng)

交互式系統(tǒng)有大量的用戶交互操作,在該系統(tǒng)中調(diào)度算法的目標(biāo)是快速地進(jìn)行響應(yīng)。

2.1 時(shí)間片輪轉(zhuǎn)

將所有就緒進(jìn)程按 FCFS 的原則排成一個(gè)隊(duì)列,每次調(diào)度時(shí),把 CPU 時(shí)間分配給隊(duì)首進(jìn)程,該進(jìn)程可以執(zhí)行一個(gè)時(shí)間片。當(dāng)時(shí)間片用完時(shí),由計(jì)時(shí)器發(fā)出時(shí)鐘中斷,調(diào)度程序便停止該進(jìn)程的執(zhí)行,并將它送往就緒隊(duì)列的末尾,同時(shí)繼續(xù)把 CPU 時(shí)間分配給隊(duì)首的進(jìn)程。

時(shí)間片輪轉(zhuǎn)算法的效率和時(shí)間片的大小有很大關(guān)系:

  • 因?yàn)檫M(jìn)程切換都要保存進(jìn)程的信息并且載入新進(jìn)程的信息,如果時(shí)間片太小,會(huì)導(dǎo)致進(jìn)程切換得太頻繁,在進(jìn)程切換上就會(huì)花過多時(shí)間。

  • 而如果時(shí)間片過長(zhǎng),那么實(shí)時(shí)性就不能得到保證。

2.2 優(yōu)先級(jí)調(diào)度

為每個(gè)進(jìn)程分配一個(gè)優(yōu)先級(jí),按優(yōu)先級(jí)進(jìn)行調(diào)度。

為了防止低優(yōu)先級(jí)的進(jìn)程永遠(yuǎn)等不到調(diào)度,可以隨著時(shí)間的推移增加等待進(jìn)程的優(yōu)先級(jí)。

2.3 多級(jí)反饋隊(duì)列

一個(gè)進(jìn)程需要執(zhí)行 100 個(gè)時(shí)間片,如果采用時(shí)間片輪轉(zhuǎn)調(diào)度算法,那么需要交換 100 次。

多級(jí)隊(duì)列是為這種需要連續(xù)執(zhí)行多個(gè)時(shí)間片的進(jìn)程考慮,它設(shè)置了多個(gè)隊(duì)列,每個(gè)隊(duì)列時(shí)間片大小都不同,例如 1,2,4,8,..。進(jìn)程在第一個(gè)隊(duì)列沒執(zhí)行完,就會(huì)被移到下一個(gè)隊(duì)列。這種方式下,之前的進(jìn)程只需要交換 7 次。

每個(gè)隊(duì)列優(yōu)先權(quán)也不同,最上面的優(yōu)先權(quán)最高。因此只有上一個(gè)隊(duì)列沒有進(jìn)程在排隊(duì),才能調(diào)度當(dāng)前隊(duì)列上的進(jìn)程。

可以將這種調(diào)度算法看成是時(shí)間片輪轉(zhuǎn)調(diào)度算法和優(yōu)先級(jí)調(diào)度算法的結(jié)合。

3. 實(shí)時(shí)系統(tǒng)

實(shí)時(shí)系統(tǒng)要求一個(gè)請(qǐng)求在一個(gè)確定時(shí)間內(nèi)得到響應(yīng)。

分為硬實(shí)時(shí)和軟實(shí)時(shí),前者必須滿足絕對(duì)的截止時(shí)間,后者可以容忍一定的超時(shí)。

進(jìn)程同步

1. 臨界區(qū)

對(duì)臨界資源進(jìn)行訪問的那段代碼稱為臨界區(qū)。

為了互斥訪問臨界資源,每個(gè)進(jìn)程在進(jìn)入臨界區(qū)之前,需要先進(jìn)行檢查。

//?entry?section //?critical?section; //?exit?section

2. 同步與互斥

  • 同步:多個(gè)進(jìn)程按一定順序執(zhí)行;

  • 互斥:多個(gè)進(jìn)程在同一時(shí)刻只有一個(gè)進(jìn)程能進(jìn)入臨界區(qū)。

3. 信號(hào)量

信號(hào)量(Semaphore)是一個(gè)整型變量,可以對(duì)其執(zhí)行 down 和 up 操作,也就是常見的 P 和 V 操作。

  • down??: 如果信號(hào)量大于 0 ,執(zhí)行 -1 操作;如果信號(hào)量等于 0,進(jìn)程睡眠,等待信號(hào)量大于 0;

  • up?:對(duì)信號(hào)量執(zhí)行 +1 操作,喚醒睡眠的進(jìn)程讓其完成 down 操作。

down 和 up 操作需要被設(shè)計(jì)成原語,不可分割,通常的做法是在執(zhí)行這些操作的時(shí)候屏蔽中斷。

如果信號(hào)量的取值只能為 0 或者 1,那么就成為了 ?互斥量(Mutex)?,0 表示臨界區(qū)已經(jīng)加鎖,1 表示臨界區(qū)解鎖。

typedef?int?semaphore; semaphore?mutex?=?1; void?P1()?{down(&mutex);//?臨界區(qū)up(&mutex); }void?P2()?{down(&mutex);//?臨界區(qū)up(&mutex); }

?使用信號(hào)量實(shí)現(xiàn)生產(chǎn)者-消費(fèi)者問題???

問題描述:使用一個(gè)緩沖區(qū)來保存物品,只有緩沖區(qū)沒有滿,生產(chǎn)者才可以放入物品;只有緩沖區(qū)不為空,消費(fèi)者才可以拿走物品。

因?yàn)榫彌_區(qū)屬于臨界資源,因此需要使用一個(gè)互斥量 mutex 來控制對(duì)緩沖區(qū)的互斥訪問。

為了同步生產(chǎn)者和消費(fèi)者的行為,需要記錄緩沖區(qū)中物品的數(shù)量。數(shù)量可以使用信號(hào)量來進(jìn)行統(tǒng)計(jì),這里需要使用兩個(gè)信號(hào)量:empty 記錄空緩沖區(qū)的數(shù)量,full 記錄滿緩沖區(qū)的數(shù)量。其中,empty 信號(hào)量是在生產(chǎn)者進(jìn)程中使用,當(dāng) empty 不為 0 時(shí),生產(chǎn)者才可以放入物品;full 信號(hào)量是在消費(fèi)者進(jìn)程中使用,當(dāng) full 信號(hào)量不為 0 時(shí),消費(fèi)者才可以取走物品。

注意,不能先對(duì)緩沖區(qū)進(jìn)行加鎖,再測(cè)試信號(hào)量。也就是說,不能先執(zhí)行 down(mutex) 再執(zhí)行 down(empty)。如果這么做了,那么可能會(huì)出現(xiàn)這種情況:生產(chǎn)者對(duì)緩沖區(qū)加鎖后,執(zhí)行 down(empty) 操作,發(fā)現(xiàn) empty = 0,此時(shí)生產(chǎn)者睡眠。消費(fèi)者不能進(jìn)入臨界區(qū),因?yàn)樯a(chǎn)者對(duì)緩沖區(qū)加鎖了,消費(fèi)者就無法執(zhí)行 up(empty) 操作,empty 永遠(yuǎn)都為 0,導(dǎo)致生產(chǎn)者永遠(yuǎn)等待下,不會(huì)釋放鎖,消費(fèi)者因此也會(huì)永遠(yuǎn)等待下去。

#define?N?100 typedef?int?semaphore; semaphore?mutex?=?1; semaphore?empty?=?N; semaphore?full?=?0;void?producer()?{while(TRUE)?{int?item?=?produce_item();down(&empty);down(&mutex);insert_item(item);up(&mutex);up(&full);} }void?consumer()?{while(TRUE)?{down(&full);down(&mutex);int?item?=?remove_item();consume_item(item);up(&mutex);up(&empty);} }

4. 管程

使用信號(hào)量機(jī)制實(shí)現(xiàn)的生產(chǎn)者消費(fèi)者問題需要客戶端代碼做很多控制,而管程把控制的代碼獨(dú)立出來,不僅不容易出錯(cuò),也使得客戶端代碼調(diào)用更容易。

c 語言不支持管程,下面的示例代碼使用了類 Pascal 語言來描述管程。示例代碼的管程提供了 insert() 和 remove() 方法,客戶端代碼通過調(diào)用這兩個(gè)方法來解決生產(chǎn)者-消費(fèi)者問題。

monitor?ProducerConsumerinteger?i;condition?c;procedure?insert();begin//?...end;procedure?remove();begin//?...end; end?monitor;

管程有一個(gè)重要特性:在一個(gè)時(shí)刻只能有一個(gè)進(jìn)程使用管程。進(jìn)程在無法繼續(xù)執(zhí)行的時(shí)候不能一直占用管程,否者其它進(jìn)程永遠(yuǎn)不能使用管程。

管程引入了 ?條件變量??以及相關(guān)的操作:wait()?和?signal()?來實(shí)現(xiàn)同步操作。對(duì)條件變量執(zhí)行 wait() 操作會(huì)導(dǎo)致調(diào)用進(jìn)程阻塞,把管程讓出來給另一個(gè)進(jìn)程持有。signal() 操作用于喚醒被阻塞的進(jìn)程。

使用管程實(shí)現(xiàn)生產(chǎn)者-消費(fèi)者問題?

//?管程 monitor?ProducerConsumercondition?full,?empty;integer?count?:=?0;condition?c;procedure?insert(item:?integer);beginif?count?=?N?then?wait(full);insert_item(item);count?:=?count?+?1;if?count?=?1?then?signal(empty);end;function?remove:?integer;beginif?count?=?0?then?wait(empty);remove?=?remove_item;count?:=?count?-?1;if?count?=?N?-1?then?signal(full);end; end?monitor;//?生產(chǎn)者客戶端 procedure?producer beginwhile?true?dobeginitem?=?produce_item;ProducerConsumer.insert(item);end end;//?消費(fèi)者客戶端 procedure?consumer beginwhile?true?dobeginitem?=?ProducerConsumer.remove;consume_item(item);end end;

經(jīng)典同步問題

生產(chǎn)者和消費(fèi)者問題前面已經(jīng)討論過了。

1. 讀者-寫者問題

允許多個(gè)進(jìn)程同時(shí)對(duì)數(shù)據(jù)進(jìn)行讀操作,但是不允許讀和寫以及寫和寫操作同時(shí)發(fā)生。

一個(gè)整型變量 count 記錄在對(duì)數(shù)據(jù)進(jìn)行讀操作的進(jìn)程數(shù)量,一個(gè)互斥量 count_mutex 用于對(duì) count 加鎖,一個(gè)互斥量 data_mutex 用于對(duì)讀寫的數(shù)據(jù)加鎖。

typedef?int?semaphore; semaphore?count_mutex?=?1; semaphore?data_mutex?=?1; int?count?=?0;void?reader()?{while(TRUE)?{down(&count_mutex);count++;if(count?==?1)?down(&data_mutex);?//?第一個(gè)讀者需要對(duì)數(shù)據(jù)進(jìn)行加鎖,防止寫進(jìn)程訪問up(&count_mutex);read();down(&count_mutex);count--;if(count?==?0)?up(&data_mutex);up(&count_mutex);} }void?writer()?{while(TRUE)?{down(&data_mutex);write();up(&data_mutex);} }

以下內(nèi)容由 @Bandi Yugandhar 提供。

The first case may result Writer to starve. This case favous Writers i.e no writer, once added to the queue, shall be kept waiting longer than absolutely necessary(only when there are readers that entered the queue before the writer).

int?readcount,?writecount;???????????????????//(initial?value?=?0) semaphore?rmutex,?wmutex,?readLock,?resource;?//(initial?value?=?1)//READER void?reader()?{ <ENTRY?Section>down(&readLock);?????????????????//??reader?is?trying?to?enterdown(&rmutex);??????????????????//???lock?to?increase?readcountreadcount++;?????????????????if?(readcount?==?1)??????????down(&resource);??????????????//if?you?are?the?first?reader?then?lock??the?resourceup(&rmutex);??????????????????//release??for?other?readersup(&readLock);?????????????????//Done?with?trying?to?access?the?resource<CRITICAL?Section> //reading?is?performed<EXIT?Section>down(&rmutex);??????????????????//reserve?exit?section?-?avoids?race?condition?with?readersreadcount--;???????????????????????//indicate?you're?leavingif?(readcount?==?0)??????????//checks?if?you?are?last?reader?leavingup(&resource);??????????????//if?last,?you?must?release?the?locked?resourceup(&rmutex);??????????????????//release?exit?section?for?other?readers }//WRITER void?writer()?{<ENTRY?Section>down(&wmutex);??????????????????//reserve?entry?section?for?writers?-?avoids?race?conditionswritecount++;????????????????//report?yourself?as?a?writer?enteringif?(writecount?==?1)?????????//checks?if?you're?first?writerdown(&readLock);???????????????//if?you're?first,?then?you?must?lock?the?readers?out.?Prevent?them?from?trying?to?enter?CSup(&wmutex);??????????????????//release?entry?section<CRITICAL?Section>down(&resource);????????????????//reserve?the?resource?for?yourself?-?prevents?other?writers?from?simultaneously?editing?the?shared?resource//writing?is?performedup(&resource);????????????????//release?file<EXIT?Section>down(&wmutex);??????????????????//reserve?exit?sectionwritecount--;????????????????//indicate?you're?leavingif?(writecount?==?0)?????????//checks?if?you're?the?last?writerup(&readLock);???????????????//if?you're?last?writer,?you?must?unlock?the?readers.?Allows?them?to?try?enter?CS?for?readingup(&wmutex);??????????????????//release?exit?section }

We can observe that every reader is forced to acquire ReadLock. On the otherhand, writers doesn’t need to lock individually. Once the first writer locks the ReadLock, it will be released only when there is no writer left in the queue.

From the both cases we observed that either reader or writer has to starve. Below solutionadds the constraint that no thread shall be allowed to starve; that is, the operation of obtaining a lock on the shared data will always terminate in a bounded amount of time.

int?readCount;??????????????????//?init?to?0;?number?of?readers?currently?accessing?resource//?all?semaphores?initialised?to?1 Semaphore?resourceAccess;???????//?controls?access?(read/write)?to?the?resource Semaphore?readCountAccess;??????//?for?syncing?changes?to?shared?variable?readCount Semaphore?serviceQueue;?????????//?FAIRNESS:?preserves?ordering?of?requests?(signaling?must?be?FIFO)void?writer() {?down(&serviceQueue);???????????//?wait?in?line?to?be?servicexs//?<ENTER>down(&resourceAccess);?????????//?request?exclusive?access?to?resource//?</ENTER>up(&serviceQueue);???????????//?let?next?in?line?be?serviced//?<WRITE>writeResource();????????????//?writing?is?performed//?</WRITE>//?<EXIT>up(&resourceAccess);?????????//?release?resource?access?for?next?reader/writer//?</EXIT> }void?reader() {?down(&serviceQueue);???????????//?wait?in?line?to?be?serviceddown(&readCountAccess);????????//?request?exclusive?access?to?readCount//?<ENTER>if?(readCount?==?0)?????????//?if?there?are?no?readers?already?reading:down(&resourceAccess);?????//?request?resource?access?for?readers?(writers?blocked)readCount++;????????????????//?update?count?of?active?readers//?</ENTER>up(&serviceQueue);???????????//?let?next?in?line?be?servicedup(&readCountAccess);????????//?release?access?to?readCount//?<READ>readResource();?????????????//?reading?is?performed//?</READ>down(&readCountAccess);????????//?request?exclusive?access?to?readCount//?<EXIT>readCount--;????????????????//?update?count?of?active?readersif?(readCount?==?0)?????????//?if?there?are?no?readers?left:up(&resourceAccess);?????//?release?resource?access?for?all//?</EXIT>up(&readCountAccess);????????//?release?access?to?readCount }

2. 哲學(xué)家進(jìn)餐問題

五個(gè)哲學(xué)家圍著一張圓桌,每個(gè)哲學(xué)家面前放著食物。哲學(xué)家的生活有兩種交替活動(dòng):吃飯以及思考。當(dāng)一個(gè)哲學(xué)家吃飯時(shí),需要先拿起自己左右兩邊的兩根筷子,并且一次只能拿起一根筷子。

下面是一種錯(cuò)誤的解法,考慮到如果所有哲學(xué)家同時(shí)拿起左手邊的筷子,那么就無法拿起右手邊的筷子,造成死鎖。

#define?N?5void?philosopher(int?i)?{while(TRUE)?{think();take(i);???????//?拿起左邊的筷子take((i+1)%N);?//?拿起右邊的筷子eat();put(i);put((i+1)%N);} }

為了防止死鎖的發(fā)生,可以設(shè)置兩個(gè)條件:

  • 必須同時(shí)拿起左右兩根筷子;

  • 只有在兩個(gè)鄰居都沒有進(jìn)餐的情況下才允許進(jìn)餐。

#define?N?5 #define?LEFT?(i?+?N?-?1)?%?N?//?左鄰居 #define?RIGHT?(i?+?1)?%?N????//?右鄰居 #define?THINKING?0 #define?HUNGRY???1 #define?EATING???2 typedef?int?semaphore; int?state[N];????????????????//?跟蹤每個(gè)哲學(xué)家的狀態(tài) semaphore?mutex?=?1;?????????//?臨界區(qū)的互斥 semaphore?s[N];??????????????//?每個(gè)哲學(xué)家一個(gè)信號(hào)量void?philosopher(int?i)?{while(TRUE)?{think();take_two(i);eat();put_two(i);} }void?take_two(int?i)?{down(&mutex);state[i]?=?HUNGRY;test(i);up(&mutex);down(&s[i]); }void?put_two(i)?{down(&mutex);state[i]?=?THINKING;test(LEFT);test(RIGHT);up(&mutex); }void?test(i)?{?????????//?嘗試拿起兩把筷子if(state[i]?==?HUNGRY?&&?state[LEFT]?!=?EATING?&&?state[RIGHT]?!=EATING)?{state[i]?=?EATING;up(&s[i]);} }

進(jìn)程通信

進(jìn)程同步與進(jìn)程通信很容易混淆,它們的區(qū)別在于:

  • 進(jìn)程同步:控制多個(gè)進(jìn)程按一定順序執(zhí)行;

  • 進(jìn)程通信:進(jìn)程間傳輸信息。

進(jìn)程通信是一種手段,而進(jìn)程同步是一種目的。也可以說,為了能夠達(dá)到進(jìn)程同步的目的,需要讓進(jìn)程進(jìn)行通信,傳輸一些進(jìn)程同步所需要的信息。

1. 管道

管道是通過調(diào)用 pipe 函數(shù)創(chuàng)建的,fd[0] 用于讀,fd[1] 用于寫。

#include?<unistd.h> int?pipe(int?fd[2]);

它具有以下限制:

  • 只支持半雙工通信(單向交替?zhèn)鬏?#xff09;;

  • 只能在父子進(jìn)程中使用。

?

2. FIFO

也稱為命名管道,去除了管道只能在父子進(jìn)程中使用的限制。

#include?<sys/stat.h> int?mkfifo(const?char?*path,?mode_t?mode); int?mkfifoat(int?fd,?const?char?*path,?mode_t?mode);

FIFO 常用于客戶-服務(wù)器應(yīng)用程序中,FIFO 用作匯聚點(diǎn),在客戶進(jìn)程和服務(wù)器進(jìn)程之間傳遞數(shù)據(jù)。

3. 消息隊(duì)列

相比于 FIFO,消息隊(duì)列具有以下優(yōu)點(diǎn):

  • 消息隊(duì)列可以獨(dú)立于讀寫進(jìn)程存在,從而避免了 FIFO 中同步管道的打開和關(guān)閉時(shí)可能產(chǎn)生的困難;

  • 避免了 FIFO 的同步阻塞問題,不需要進(jìn)程自己提供同步方法;

  • 讀進(jìn)程可以根據(jù)消息類型有選擇地接收消息,而不像 FIFO 那樣只能默認(rèn)地接收。

4. 信號(hào)量

它是一個(gè)計(jì)數(shù)器,用于為多個(gè)進(jìn)程提供對(duì)共享數(shù)據(jù)對(duì)象的訪問。

5. 共享存儲(chǔ)

允許多個(gè)進(jìn)程共享一個(gè)給定的存儲(chǔ)區(qū)。因?yàn)閿?shù)據(jù)不需要在進(jìn)程之間復(fù)制,所以這是最快的一種 IPC。

需要使用信號(hào)量用來同步對(duì)共享存儲(chǔ)的訪問。

多個(gè)進(jìn)程可以將同一個(gè)文件映射到它們的地址空間從而實(shí)現(xiàn)共享內(nèi)存。另外 XSI 共享內(nèi)存不是使用文件,而是使用使用內(nèi)存的匿名段。

6. 套接字

與其它通信機(jī)制不同的是,它可用于不同機(jī)器間的進(jìn)程通信。

三、死鎖

必要條件

  • 互斥:每個(gè)資源要么已經(jīng)分配給了一個(gè)進(jìn)程,要么就是可用的。

  • 占有和等待:已經(jīng)得到了某個(gè)資源的進(jìn)程可以再請(qǐng)求新的資源。

  • 不可搶占:已經(jīng)分配給一個(gè)進(jìn)程的資源不能強(qiáng)制性地被搶占,它只能被占有它的進(jìn)程顯式地釋放。

  • 環(huán)路等待:有兩個(gè)或者兩個(gè)以上的進(jìn)程組成一條環(huán)路,該環(huán)路中的每個(gè)進(jìn)程都在等待下一個(gè)進(jìn)程所占有的資源。

處理方法

主要有以下四種方法:

  • 鴕鳥策略

  • 死鎖檢測(cè)與死鎖恢復(fù)

  • 死鎖預(yù)防

  • 死鎖避免

鴕鳥策略

把頭埋在沙子里,假裝根本沒發(fā)生問題。

因?yàn)榻鉀Q死鎖問題的代價(jià)很高,因此鴕鳥策略這種不采取任務(wù)措施的方案會(huì)獲得更高的性能。

當(dāng)發(fā)生死鎖時(shí)不會(huì)對(duì)用戶造成多大影響,或發(fā)生死鎖的概率很低,可以采用鴕鳥策略。

大多數(shù)操作系統(tǒng),包括 Unix,Linux 和 Windows,處理死鎖問題的辦法僅僅是忽略它。

死鎖檢測(cè)與死鎖恢復(fù)

不試圖阻止死鎖,而是當(dāng)檢測(cè)到死鎖發(fā)生時(shí),采取措施進(jìn)行恢復(fù)。

1. 每種類型一個(gè)資源的死鎖檢測(cè)

上圖為資源分配圖,其中方框表示資源,圓圈表示進(jìn)程。資源指向進(jìn)程表示該資源已經(jīng)分配給該進(jìn)程,進(jìn)程指向資源表示進(jìn)程請(qǐng)求獲取該資源。

圖 a 可以抽取出環(huán),如圖 b,它滿足了環(huán)路等待條件,因此會(huì)發(fā)生死鎖。

每種類型一個(gè)資源的死鎖檢測(cè)算法是通過檢測(cè)有向圖是否存在環(huán)來實(shí)現(xiàn),從一個(gè)節(jié)點(diǎn)出發(fā)進(jìn)行深度優(yōu)先搜索,對(duì)訪問過的節(jié)點(diǎn)進(jìn)行標(biāo)記,如果訪問了已經(jīng)標(biāo)記的節(jié)點(diǎn),就表示有向圖存在環(huán),也就是檢測(cè)到死鎖的發(fā)生。

2. 每種類型多個(gè)資源的死鎖檢測(cè)

上圖中,有三個(gè)進(jìn)程四個(gè)資源,每個(gè)數(shù)據(jù)代表的含義如下:

  • E 向量:資源總量

  • A 向量:資源剩余量

  • C 矩陣:每個(gè)進(jìn)程所擁有的資源數(shù)量,每一行都代表一個(gè)進(jìn)程擁有資源的數(shù)量

  • R 矩陣:每個(gè)進(jìn)程請(qǐng)求的資源數(shù)量

進(jìn)程 P1?和 P2?所請(qǐng)求的資源都得不到滿足,只有進(jìn)程 P3?可以,讓 P3?執(zhí)行,之后釋放 P3?擁有的資源,此時(shí) A = (2 2 2 0)。P2?可以執(zhí)行,執(zhí)行后釋放 P2?擁有的資源,A = (4 2 2 1) 。P1?也可以執(zhí)行。所有進(jìn)程都可以順利執(zhí)行,沒有死鎖。

算法總結(jié)如下:

每個(gè)進(jìn)程最開始時(shí)都不被標(biāo)記,執(zhí)行過程有可能被標(biāo)記。當(dāng)算法結(jié)束時(shí),任何沒有被標(biāo)記的進(jìn)程都是死鎖進(jìn)程。

  • 尋找一個(gè)沒有標(biāo)記的進(jìn)程 Pi,它所請(qǐng)求的資源小于等于 A。

  • 如果找到了這樣一個(gè)進(jìn)程,那么將 C 矩陣的第 i 行向量加到 A 中,標(biāo)記該進(jìn)程,并轉(zhuǎn)回 1。

  • 如果沒有這樣一個(gè)進(jìn)程,算法終止。

  • 3. 死鎖恢復(fù)

    • 利用搶占恢復(fù)

    • 利用回滾恢復(fù)

    • 通過殺死進(jìn)程恢復(fù)

    死鎖預(yù)防

    在程序運(yùn)行之前預(yù)防發(fā)生死鎖。

    1. 破壞互斥條件

    例如假脫機(jī)打印機(jī)技術(shù)允許若干個(gè)進(jìn)程同時(shí)輸出,唯一真正請(qǐng)求物理打印機(jī)的進(jìn)程是打印機(jī)守護(hù)進(jìn)程。

    2. 破壞占有和等待條件

    一種實(shí)現(xiàn)方式是規(guī)定所有進(jìn)程在開始執(zhí)行前請(qǐng)求所需要的全部資源。

    3. 破壞不可搶占條件

    4. 破壞環(huán)路等待

    給資源統(tǒng)一編號(hào),進(jìn)程只能按編號(hào)順序來請(qǐng)求資源。

    死鎖避免

    在程序運(yùn)行時(shí)避免發(fā)生死鎖。

    1. 安全狀態(tài)

    圖 a 的第二列 Has 表示已擁有的資源數(shù),第三列 Max 表示總共需要的資源數(shù),Free 表示還有可以使用的資源數(shù)。從圖 a 開始出發(fā),先讓 B 擁有所需的所有資源(圖 b),運(yùn)行結(jié)束后釋放 B,此時(shí) Free 變?yōu)?5(圖 c);接著以同樣的方式運(yùn)行 C 和 A,使得所有進(jìn)程都能成功運(yùn)行,因此可以稱圖 a 所示的狀態(tài)時(shí)安全的。

    定義:如果沒有死鎖發(fā)生,并且即使所有進(jìn)程突然請(qǐng)求對(duì)資源的最大需求,也仍然存在某種調(diào)度次序能夠使得每一個(gè)進(jìn)程運(yùn)行完畢,則稱該狀態(tài)是安全的。

    安全狀態(tài)的檢測(cè)與死鎖的檢測(cè)類似,因?yàn)榘踩珷顟B(tài)必須要求不能發(fā)生死鎖。下面的銀行家算法與死鎖檢測(cè)算法非常類似,可以結(jié)合著做參考對(duì)比。

    2. 單個(gè)資源的銀行家算法

    一個(gè)小城鎮(zhèn)的銀行家,他向一群客戶分別承諾了一定的貸款額度,算法要做的是判斷對(duì)請(qǐng)求的滿足是否會(huì)進(jìn)入不安全狀態(tài),如果是,就拒絕請(qǐng)求;否則予以分配。

    上圖 c 為不安全狀態(tài),因此算法會(huì)拒絕之前的請(qǐng)求,從而避免進(jìn)入圖 c 中的狀態(tài)。

    3. 多個(gè)資源的銀行家算法

    上圖中有五個(gè)進(jìn)程,四個(gè)資源。左邊的圖表示已經(jīng)分配的資源,右邊的圖表示還需要分配的資源。最右邊的 E、P 以及 A 分別表示:總資源、已分配資源以及可用資源,注意這三個(gè)為向量,而不是具體數(shù)值,例如 A=(1020),表示 4 個(gè)資源分別還剩下 1/0/2/0。

    檢查一個(gè)狀態(tài)是否安全的算法如下:

    • 查找右邊的矩陣是否存在一行小于等于向量 A。如果不存在這樣的行,那么系統(tǒng)將會(huì)發(fā)生死鎖,狀態(tài)是不安全的。

    • 假若找到這樣一行,將該進(jìn)程標(biāo)記為終止,并將其已分配資源加到 A 中。

    • 重復(fù)以上兩步,直到所有進(jìn)程都標(biāo)記為終止,則狀態(tài)時(shí)安全的。

    如果一個(gè)狀態(tài)不是安全的,需要拒絕進(jìn)入這個(gè)狀態(tài)。

    四、內(nèi)存管理

    虛擬內(nèi)存

    虛擬內(nèi)存的目的是為了讓物理內(nèi)存擴(kuò)充成更大的邏輯內(nèi)存,從而讓程序獲得更多的可用內(nèi)存。

    為了更好的管理內(nèi)存,操作系統(tǒng)將內(nèi)存抽象成地址空間。每個(gè)程序擁有自己的地址空間,這個(gè)地址空間被分割成多個(gè)塊,每一塊稱為一頁。這些頁被映射到物理內(nèi)存,但不需要映射到連續(xù)的物理內(nèi)存,也不需要所有頁都必須在物理內(nèi)存中。當(dāng)程序引用到不在物理內(nèi)存中的頁時(shí),由硬件執(zhí)行必要的映射,將缺失的部分裝入物理內(nèi)存并重新執(zhí)行失敗的指令。

    從上面的描述中可以看出,虛擬內(nèi)存允許程序不用將地址空間中的每一頁都映射到物理內(nèi)存,也就是說一個(gè)程序不需要全部調(diào)入內(nèi)存就可以運(yùn)行,這使得有限的內(nèi)存運(yùn)行大程序成為可能。例如有一臺(tái)計(jì)算機(jī)可以產(chǎn)生 16 位地址,那么一個(gè)程序的地址空間范圍是 0~64K。該計(jì)算機(jī)只有 32KB 的物理內(nèi)存,虛擬內(nèi)存技術(shù)允許該計(jì)算機(jī)運(yùn)行一個(gè) 64K 大小的程序。

    分頁系統(tǒng)地址映射

    內(nèi)存管理單元(MMU)管理著地址空間和物理內(nèi)存的轉(zhuǎn)換,其中的頁表(Page table)存儲(chǔ)著頁(程序地址空間)和頁框(物理內(nèi)存空間)的映射表。

    一個(gè)虛擬地址分成兩個(gè)部分,一部分存儲(chǔ)頁面號(hào),一部分存儲(chǔ)偏移量。

    下圖的頁表存放著 16 個(gè)頁,這 16 個(gè)頁需要用 4 個(gè)比特位來進(jìn)行索引定位。例如對(duì)于虛擬地址(0010 000000000100),前 4 位是存儲(chǔ)頁面號(hào) 2,讀取表項(xiàng)內(nèi)容為(110 1),頁表項(xiàng)最后一位表示是否存在于內(nèi)存中,1 表示存在。后 12 位存儲(chǔ)偏移量。這個(gè)頁對(duì)應(yīng)的頁框的地址為 (110 000000000100)。

    頁面置換算法

    在程序運(yùn)行過程中,如果要訪問的頁面不在內(nèi)存中,就發(fā)生缺頁中斷從而將該頁調(diào)入內(nèi)存中。此時(shí)如果內(nèi)存已無空閑空間,系統(tǒng)必須從內(nèi)存中調(diào)出一個(gè)頁面到磁盤對(duì)換區(qū)中來騰出空間。

    頁面置換算法和緩存淘汰策略類似,可以將內(nèi)存看成磁盤的緩存。在緩存系統(tǒng)中,緩存的大小有限,當(dāng)有新的緩存到達(dá)時(shí),需要淘汰一部分已經(jīng)存在的緩存,這樣才有空間存放新的緩存數(shù)據(jù)。

    頁面置換算法的主要目標(biāo)是使頁面置換頻率最低(也可以說缺頁率最低)。

    1. 最佳

    OPT, Optimal replacement algorithm

    所選擇的被換出的頁面將是最長(zhǎng)時(shí)間內(nèi)不再被訪問,通常可以保證獲得最低的缺頁率。

    是一種理論上的算法,因?yàn)闊o法知道一個(gè)頁面多長(zhǎng)時(shí)間不再被訪問。

    舉例:一個(gè)系統(tǒng)為某進(jìn)程分配了三個(gè)物理塊,并有如下頁面引用序列:

    開始運(yùn)行時(shí),先將 7, 0, 1 三個(gè)頁面裝入內(nèi)存。當(dāng)進(jìn)程要訪問頁面 2 時(shí),產(chǎn)生缺頁中斷,會(huì)將頁面 7 換出,因?yàn)轫撁?7 再次被訪問的時(shí)間最長(zhǎng)。

    2. 最近最久未使用

    LRU, Least Recently Used

    雖然無法知道將來要使用的頁面情況,但是可以知道過去使用頁面的情況。LRU 將最近最久未使用的頁面換出。

    為了實(shí)現(xiàn) LRU,需要在內(nèi)存中維護(hù)一個(gè)所有頁面的鏈表。當(dāng)一個(gè)頁面被訪問時(shí),將這個(gè)頁面移到鏈表表頭。這樣就能保證鏈表表尾的頁面是最近最久未訪問的。

    因?yàn)槊看卧L問都需要更新鏈表,因此這種方式實(shí)現(xiàn)的 LRU 代價(jià)很高。

    3. 最近未使用

    NRU, Not Recently Used

    每個(gè)頁面都有兩個(gè)狀態(tài)位:R 與 M,當(dāng)頁面被訪問時(shí)設(shè)置頁面的 R=1,當(dāng)頁面被修改時(shí)設(shè)置 M=1。其中 R 位會(huì)定時(shí)被清零。可以將頁面分成以下四類:

    • R=0,M=0

    • R=0,M=1

    • R=1,M=0

    • R=1,M=1

    當(dāng)發(fā)生缺頁中斷時(shí),NRU 算法隨機(jī)地從類編號(hào)最小的非空類中挑選一個(gè)頁面將它換出。

    NRU 優(yōu)先換出已經(jīng)被修改的臟頁面(R=0,M=1),而不是被頻繁使用的干凈頁面(R=1,M=0)。

    4. 先進(jìn)先出

    FIFO, First In First Out

    選擇換出的頁面是最先進(jìn)入的頁面。

    該算法會(huì)將那些經(jīng)常被訪問的頁面也被換出,從而使缺頁率升高。

    5. 第二次機(jī)會(huì)算法

    FIFO 算法可能會(huì)把經(jīng)常使用的頁面置換出去,為了避免這一問題,對(duì)該算法做一個(gè)簡(jiǎn)單的修改:

    當(dāng)頁面被訪問 (讀或?qū)? 時(shí)設(shè)置該頁面的 R 位為 1。需要替換的時(shí)候,檢查最老頁面的 R 位。如果 R 位是 0,那么這個(gè)頁面既老又沒有被使用,可以立刻置換掉;如果是 1,就將 R 位清 0,并把該頁面放到鏈表的尾端,修改它的裝入時(shí)間使它就像剛裝入的一樣,然后繼續(xù)從鏈表的頭部開始搜索。

    6. 時(shí)鐘

    Clock

    第二次機(jī)會(huì)算法需要在鏈表中移動(dòng)頁面,降低了效率。時(shí)鐘算法使用環(huán)形鏈表將頁面連接起來,再使用一個(gè)指針指向最老的頁面。

    分段

    虛擬內(nèi)存采用的是分頁技術(shù),也就是將地址空間劃分成固定大小的頁,每一頁再與內(nèi)存進(jìn)行映射。

    下圖為一個(gè)編譯器在編譯過程中建立的多個(gè)表,有 4 個(gè)表是動(dòng)態(tài)增長(zhǎng)的,如果使用分頁系統(tǒng)的一維地址空間,動(dòng)態(tài)增長(zhǎng)的特點(diǎn)會(huì)導(dǎo)致覆蓋問題的出現(xiàn)。

    分段的做法是把每個(gè)表分成段,一個(gè)段構(gòu)成一個(gè)獨(dú)立的地址空間。每個(gè)段的長(zhǎng)度可以不同,并且可以動(dòng)態(tài)增長(zhǎng)。

    段頁式

    程序的地址空間劃分成多個(gè)擁有獨(dú)立地址空間的段,每個(gè)段上的地址空間劃分成大小相同的頁。這樣既擁有分段系統(tǒng)的共享和保護(hù),又擁有分頁系統(tǒng)的虛擬內(nèi)存功能。

    分頁與分段的比較

    • 對(duì)程序員的透明性:分頁透明,但是分段需要程序員顯示劃分每個(gè)段。

    • 地址空間的維度:分頁是一維地址空間,分段是二維的。

    • 大小是否可以改變:頁的大小不可變,段的大小可以動(dòng)態(tài)改變。

    • 出現(xiàn)的原因:分頁主要用于實(shí)現(xiàn)虛擬內(nèi)存,從而獲得更大的地址空間;分段主要是為了使程序和數(shù)據(jù)可以被劃分為邏輯上獨(dú)立的地址空間并且有助于共享和保護(hù)。

    五、設(shè)備管理

    磁盤結(jié)構(gòu)

    • 盤面(Platter):一個(gè)磁盤有多個(gè)盤面;

    • 磁道(Track):盤面上的圓形帶狀區(qū)域,一個(gè)盤面可以有多個(gè)磁道;

    • 扇區(qū)(Track Sector):磁道上的一個(gè)弧段,一個(gè)磁道可以有多個(gè)扇區(qū),它是最小的物理儲(chǔ)存單位,目前主要有 512 bytes 與 4 K 兩種大小;

    • 磁頭(Head):與盤面非常接近,能夠?qū)⒈P面上的磁場(chǎng)轉(zhuǎn)換為電信號(hào)(讀),或者將電信號(hào)轉(zhuǎn)換為盤面的磁場(chǎng)(寫);

    • 制動(dòng)手臂(Actuator arm):用于在磁道之間移動(dòng)磁頭;

    • 主軸(Spindle):使整個(gè)盤面轉(zhuǎn)動(dòng)。

    磁盤調(diào)度算法

    讀寫一個(gè)磁盤塊的時(shí)間的影響因素有:

    • 旋轉(zhuǎn)時(shí)間(主軸轉(zhuǎn)動(dòng)盤面,使得磁頭移動(dòng)到適當(dāng)?shù)纳葏^(qū)上)

    • 尋道時(shí)間(制動(dòng)手臂移動(dòng),使得磁頭移動(dòng)到適當(dāng)?shù)拇诺郎?#xff09;

    • 實(shí)際的數(shù)據(jù)傳輸時(shí)間

    其中,尋道時(shí)間最長(zhǎng),因此磁盤調(diào)度的主要目標(biāo)是使磁盤的平均尋道時(shí)間最短。

    1. 先來先服務(wù)

    FCFS, First Come First Served

    按照磁盤請(qǐng)求的順序進(jìn)行調(diào)度。

    優(yōu)點(diǎn)是公平和簡(jiǎn)單。缺點(diǎn)也很明顯,因?yàn)槲磳?duì)尋道做任何優(yōu)化,使平均尋道時(shí)間可能較長(zhǎng)。

    2. 最短尋道時(shí)間優(yōu)先

    SSTF, Shortest Seek Time First

    優(yōu)先調(diào)度與當(dāng)前磁頭所在磁道距離最近的磁道。

    雖然平均尋道時(shí)間比較低,但是不夠公平。如果新到達(dá)的磁道請(qǐng)求總是比一個(gè)在等待的磁道請(qǐng)求近,那么在等待的磁道請(qǐng)求會(huì)一直等待下去,也就是出現(xiàn)饑餓現(xiàn)象。具體來說,兩端的磁道請(qǐng)求更容易出現(xiàn)饑餓現(xiàn)象。

    3. 電梯算法

    SCAN

    電梯總是保持一個(gè)方向運(yùn)行,直到該方向沒有請(qǐng)求為止,然后改變運(yùn)行方向。

    電梯算法(掃描算法)和電梯的運(yùn)行過程類似,總是按一個(gè)方向來進(jìn)行磁盤調(diào)度,直到該方向上沒有未完成的磁盤請(qǐng)求,然后改變方向。

    因?yàn)榭紤]了移動(dòng)方向,因此所有的磁盤請(qǐng)求都會(huì)被滿足,解決了 SSTF 的饑餓問題。

    六、鏈接

    編譯系統(tǒng)

    以下是一個(gè) hello.c 程序:

    #include?<stdio.h>int?main() {printf("hello,?world ");return?0; }

    在 Unix 系統(tǒng)上,由編譯器把源文件轉(zhuǎn)換為目標(biāo)文件。

    gcc?-o?hello?hello.c

    這個(gè)過程大致如下:

    • 預(yù)處理階段:處理以 # 開頭的預(yù)處理命令;

    • 編譯階段:翻譯成匯編文件;

    • 匯編階段:將匯編文件翻譯成可重定向目標(biāo)文件;

    • 鏈接階段:將可重定向目標(biāo)文件和 printf.o 等單獨(dú)預(yù)編譯好的目標(biāo)文件進(jìn)行合并,得到最終的可執(zhí)行目標(biāo)文件。

    靜態(tài)鏈接

    靜態(tài)鏈接器以一組可重定向目標(biāo)文件為輸入,生成一個(gè)完全鏈接的可執(zhí)行目標(biāo)文件作為輸出。鏈接器主要完成以下兩個(gè)任務(wù):

    • 符號(hào)解析:每個(gè)符號(hào)對(duì)應(yīng)于一個(gè)函數(shù)、一個(gè)全局變量或一個(gè)靜態(tài)變量,符號(hào)解析的目的是將每個(gè)符號(hào)引用與一個(gè)符號(hào)定義關(guān)聯(lián)起來。

    • 重定位:鏈接器通過把每個(gè)符號(hào)定義與一個(gè)內(nèi)存位置關(guān)聯(lián)起來,然后修改所有對(duì)這些符號(hào)的引用,使得它們指向這個(gè)內(nèi)存位置。

    目標(biāo)文件

    • 可執(zhí)行目標(biāo)文件:可以直接在內(nèi)存中執(zhí)行;

    • 可重定向目標(biāo)文件:可與其它可重定向目標(biāo)文件在鏈接階段合并,創(chuàng)建一個(gè)可執(zhí)行目標(biāo)文件;

    • 共享目標(biāo)文件:這是一種特殊的可重定向目標(biāo)文件,可以在運(yùn)行時(shí)被動(dòng)態(tài)加載進(jìn)內(nèi)存并鏈接;

    動(dòng)態(tài)鏈接

    靜態(tài)庫有以下兩個(gè)問題:

    • 當(dāng)靜態(tài)庫更新時(shí)那么整個(gè)程序都要重新進(jìn)行鏈接;

    • 對(duì)于 printf 這種標(biāo)準(zhǔn)函數(shù)庫,如果每個(gè)程序都要有代碼,這會(huì)極大浪費(fèi)資源。

    共享庫是為了解決靜態(tài)庫的這兩個(gè)問題而設(shè)計(jì)的,在 Linux 系統(tǒng)中通常用 .so 后綴來表示,Windows 系統(tǒng)上它們被稱為 DLL。它具有以下特點(diǎn):

    • 在給定的文件系統(tǒng)中一個(gè)庫只有一個(gè)文件,所有引用該庫的可執(zhí)行目標(biāo)文件都共享這個(gè)文件,它不會(huì)被復(fù)制到引用它的可執(zhí)行文件中;

    • 在內(nèi)存中,一個(gè)共享庫的 .text 節(jié)(已編譯程序的機(jī)器代碼)的一個(gè)副本可以被不同的正在運(yùn)行的進(jìn)程共享。

    ?

    總結(jié)

    以上是生活随笔為你收集整理的面试「计算机操作系统」知识点大集合!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    成人动态视频 | 国产精品久久久久久久久久99 | 国产精品久久久久久久午夜片 | 欧美午夜性 | 激情av资源网 | 九九激情视频 | 国产一级视频免费看 | 亚洲专区在线播放 | 美女视频黄频大全免费 | 成年人在线看视频 | 91在线视频观看 | 人人狠狠综合久久亚洲 | 国产在线观看91 | 天天射天天艹 | 精品国产一区二区三区久久久久久 | 在线观看国产麻豆 | 91粉色视频 | 久久免费视屏 | 夜夜干天天操 | 日韩视频www | 爱射综合 | 99久久婷婷国产精品综合 | 国产区高清在线 | 日韩免费不卡视频 | 亚洲精品乱码久久久久久高潮 | 99精品在线免费观看 | 国产一级在线视频 | 亚洲精品乱码久久 | 日韩欧美国产成人 | 国产精品九九久久久久久久 | 欧美成人h版在线观看 | 国内精品久久久久久久久 | 久草免费在线观看 | 亚洲国产精品久久久久久 | 午夜影院一区 | 九九久久免费 | 91色蜜桃 | 久久国产精品免费一区二区三区 | 美女视频是黄的免费观看 | 超碰国产在线 | 亚洲极色| 欧美一级免费在线 | 91黄色成人 | 免费在线观看污 | 成人全视频免费观看在线看 | 国内精品亚洲 | 免费在线观看午夜视频 | www91在线观看| 色网站在线 | 九九久久在线看 | 天天干天天做天天爱 | 四虎影视成人永久免费观看亚洲欧美 | 最新日本中文字幕 | 九月婷婷综合网 | 国产精品麻豆99久久久久久 | 午夜国产福利在线观看 | 久久久av电影 | 激情综合网在线观看 | 五月婷婷天堂 | 欧美日韩精品久久久 | 九色91在线视频 | 婷婷免费视频 | 精品国产乱码久久久久久久 | 国产高清精 | 国产精品久久视频 | 中文av免费 | 色综合在 | 久草在线最新视频 | 一区二区三区四区五区在线视频 | 亚洲在线视频播放 | 黄色中文字幕在线 | 成人久久| 久久精品日韩 | 久久综合久久综合久久 | 天天爱天天操天天爽 | av免费看av | 俺要去色综合狠狠 | 久久久精品日本 | 日韩在线免费看 | 亚洲影院国产 | 国产精品普通话 | 国产99久久九九精品免费 | 久久国产精品第一页 | 久久a v电影 | 午夜三级影院 | 99久久精品国产免费看不卡 | 国产精品3| 国产不卡av在线 | 久久久久亚洲精品中文字幕 | 国产尤物在线观看 | 综合久久五月天 | 91精品久久香蕉国产线看观看 | 成人在线视频免费观看 | 成人精品一区二区三区中文字幕 | 国内精品视频一区二区三区八戒 | 欧美精品乱码久久久久久按摩 | 99视频精品免费观看, | 国产亚洲观看 | 啪啪免费视频网站 | 久久久久久亚洲精品 | 最近2019中文免费高清视频观看www99 | 久久久国产网站 | 欧美大片在线看免费观看 | 91在线www| 美国av片在线观看 | 中国一级片在线观看 | 国产成人精品免费在线观看 | 亚洲动漫在线观看 | 狠狠干网站 | 午夜精品一区二区三区免费视频 | 久草www| 天天干夜夜爱 | 久久免费视频99 | 91最新地址永久入口 | 美女黄视频免费 | 午夜精品99久久免费 | 91自拍成人| 欧洲一区二区在线观看 | 涩涩网站在线 | 成人午夜剧场在线观看 | 最近中文字幕第一页 | 中文字幕婷婷 | 六月天色婷婷 | 午夜视频日本 | 中文字幕日韩av | 免费看短 | 亚洲丝袜一区二区 | 国产色在线,com | 日本黄色大片免费看 | 亚洲视频在线看 | 国产成人精品亚洲 | 欧美在线不卡一区 | 久久久精品福利视频 | 免费十分钟 | 91九色视频| 天天干中文字幕 | 国产精品黄 | 青青河边草观看完整版高清 | 国产白浆视频 | 99爱国产精品 | 免费福利在线 | 久久久午夜精品福利内容 | 丁香婷婷网| 国产美女精品人人做人人爽 | 日韩电影久久久 | 亚洲国产午夜视频 | www.97色.com| 国产精品久久久久久久毛片 | 99国产精品久久久久久久久久 | 狠狠色丁香九九婷婷综合五月 | 手机av片 | 丁香婷婷激情啪啪 | 欧美日韩99| 999一区二区三区 | 99免费精品视频 | 久久精品黄色 | 国产精品久久久久久久久费观看 | 国产精品18久久久久久vr | 91在线视频免费播放 | 永久免费精品视频 | 色妞久久福利网 | 免费在线观看日韩欧美 | 91自拍视频在线观看 | 91精品视频网站 | 亚洲高清视频在线 | 久草精品视频在线看网站免费 | 超碰免费成人 | 九色精品在线 | 91在线免费公开视频 | 91成人精品国产刺激国语对白 | 天天摸天天操天天舔 | 中文字幕在线影院 | 337p西西人体大胆瓣开下部 | 日韩二区在线播放 | 一级成人免费视频 | 黄色网在线免费观看 | 亚洲精品女 | 国产精品一区专区欧美日韩 | 中文字幕 影院 | 亚洲人在线7777777精品 | 91中文字幕一区 | 久久婷婷精品视频 | 亚洲精品久久视频 | 97超碰中文 | 亚洲国产网址 | 亚洲成人午夜在线 | 欧美日韩另类视频 | 黄色国产在线 | 日韩在线观看一区二区三区 | 中文字幕日韩一区二区三区不卡 | 亚洲aⅴ在线观看 | 久久一区二区三区超碰国产精品 | 亚洲婷婷丁香 | 人人舔人人舔 | 国产精品毛片网 | 天天狠狠干 | 亚洲成人黄色 | 久久综合加勒比 | h文在线观看免费 | 美女在线免费观看视频 | 国产精品一区二区电影 | 91最新网址在线观看 | 国产精品视频观看 | 亚州国产精品视频 | 99久久99久久精品国产片果冰 | 婷婷av色综合| 在线成人短视频 | 欧美色图一区 | 999久久久久久 | 美女视频黄免费的 | 国产资源在线免费观看 | 久久一线 | 永久免费看av | 日韩激情一二三区 | 日韩电影在线观看一区二区三区 | 欧美了一区在线观看 | av在线永久免费观看 | 99久久婷婷 | 国产精品久久亚洲 | 中文字幕丝袜一区二区 | 免费91在线观看 | 亚洲国产免费看 | 日日躁夜夜躁xxxxaaaa | 国产操在线 | 人人射av| 手机在线观看国产精品 | 亚洲www天堂com | 8x成人免费视频 | 88av网站 | av电影在线免费观看 | 国产成人一区二区三区在线观看 | 天天操操操操操 | 青草视频免费观看 | 五月天综合色激情 | 天堂久久电影网 | 成人wwwxxx视频 | 97人人爽人人 | 日韩av视屏在线观看 | 日韩在线视频观看 | 久久综合网色—综合色88 | 天天射天天爱天天干 | 在线观看国产麻豆 | 久青草影院| 国产在线看一区 | 18性欧美xxxⅹ性满足 | 在线观影网站 | 日韩av五月天 | 人人舔人人爽 | 国产欧美综合视频 | 久草99| 99久久精品日本一区二区免费 | 日韩一区二区三区高清在线观看 | 日韩爱爱网站 | 一级黄色片毛片 | 免费大片黄在线 | 中文字幕在线观看一区 | 久久这里有 | 国产一区高清在线 | 182午夜在线观看 | 国语自产偷拍精品视频偷 | 久久视了 | 亚洲一区二区三区精品在线观看 | 超碰在线人人艹 | 日本高清免费中文字幕 | 国产1级视频 | 国产又黄又爽又猛视频日本 | 天天天天天天操 | 成年人毛片在线观看 | 国产一区二区三区高清播放 | 亚洲一区不卡视频 | 毛片美女网站 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 久久不见久久见免费影院 | 国产一区二区播放 | 日本在线精品视频 | av大片免费 | 色中色亚洲 | 在线视频观看亚洲 | 久久精品人人做人人综合老师 | 成片人卡1卡2卡3手机免费看 | 国产免费精彩视频 | 国产98色在线 | 日韩 | 久久综合狠狠综合 | 国产日产精品一区二区三区四区的观看方式 | 在线91视频 | 三级免费黄色 | 久久国产精品久久国产精品 | 色婷婷啪啪免费在线电影观看 | 亚洲伦理一区二区 | 天天艹天天 | 黄色国产精品 | 国产理伦在线 | 国产高清av在线播放 | 亚洲精品国产拍在线 | 国产福利一区二区三区视频 | 国内一级片在线观看 | 91久久久久久久一区二区 | 精品国偷自产国产一区 | 国产精品久久久久一区二区三区共 | 日韩电影精品 | 成人久久影院 | 超碰97人人干 | 成人国产精品一区 | 日韩一区二区三区视频在线 | 国产一级三级 | 国产毛片在线 | 欧美在一区 | 久久精品毛片基地 | 99久久精品国产免费看不卡 | 免费人成在线观看网站 | 99在线热播| 欧洲亚洲国产视频 | 极品国产91在线网站 | 91插插影库| 亚洲精品国偷拍自产在线观看 | 久久夜色电影 | 色综合夜色一区 | 午夜视频免费 | 九九导航| 国产精品资源在线观看 | 丁香 婷婷 激情 | 国产露脸91国语对白 | 久久久精品小视频 | 国产精品久久9 | 国产精品国产三级国产专区53 | 久久精选视频 | 国产精品综合av一区二区国产馆 | 夜夜操网| 久久国产精品成人免费浪潮 | 精品美女久久久久久免费 | 黄色在线观看www | 国产视频在线免费观看 | 中文不卡视频在线 | 五月婷婷丁香在线观看 | 亚洲aaa级 | 亚洲精品久久久久999中文字幕 | 久久综合久久伊人 | 在线91网 | 国产99久久久国产精品免费看 | 丁香综合激情 | 狠狠色丁香久久婷婷综合五月 | 久久99久久99免费视频 | 国产在线精品播放 | 在线日韩视频 | 免费看污的网站 | 色综合久久99 | 美女黄视频免费看 | 1000部18岁以下禁看视频 | 丁香六月久久综合狠狠色 | 日韩视频免费观看高清 | 亚洲日本va在线观看 | 国产18精品乱码免费看 | 午夜精品成人一区二区三区 | 天天干天天干天天 | 天堂av观看 | 中文字幕在线看视频国产 | 激情五月六月婷婷 | 久草免费在线视频观看 | 色视频在线免费 | 亚洲成人精品久久 | 天天操天天添 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 国产a国产 | 91综合视频在线观看 | 99久久99久久综合 | 中文字幕亚洲欧美 | 国产精品久久久久久久久久免费看 | 看片黄网站| 国产精品精 | 亚洲精品乱码久久 | 欧美日韩在线视频一区二区 | 精品国产三级 | 91精选在线| 欧美成人精品三级在线观看播放 | 婷婷深爱五月 | 99这里只有精品视频 | 福利片免费看 | 国产99久久久精品 | 国产一区二区三区免费在线观看 | 欧美疯狂性受xxxxx另类 | 日韩黄色一区 | 波多野结衣在线播放视频 | 国产一区二区在线免费观看 | 成人黄大片视频在线观看 | 国产最新视频在线观看 | 国产视频资源 | 一区二区三区中文字幕在线 | 99r在线 | 欧美精品二 | 日韩色一区二区三区 | 91新人在线观看 | 欧美久久99 | 99久久久久免费精品国产 | 亚洲精品自拍视频在线观看 | 免费在线色| 伊人婷婷色| 精品美女久久久久 | 精品成人久久 | av在观看 | 国产精品1000 | 久久久久高清毛片一级 | 婷婷干五月 | 日韩精品免费在线视频 | www欧美色 | 久草在线资源观看 | 成人黄色毛片视频 | 在线视频 你懂得 | 日韩av三区 | 7777精品伊人久久久大香线蕉 | 00av视频 | 国产 日韩 中文字幕 | 不卡视频一区二区三区 | 久久久久亚洲精品 | 久章草在线| bbb搡bbb爽爽爽 | 丁香婷婷色综合亚洲电影 | 亚洲在线不卡 | 亚洲日本精品视频 | 99精品视频在线观看视频 | 日本成人中文字幕在线观看 | 久久毛片视频 | 欧美日韩在线网站 | 激情欧美国产 | 日韩精品专区在线影院重磅 | 日韩精品免费在线观看视频 | av中文字幕第一页 | 久久国产精品成人免费浪潮 | 五月天激情电影 | 久久视频国产 | www.五月激情.com | 成年人在线观看免费视频 | 亚洲黄色免费网站 | 91精品国 | 91精品国产福利在线观看 | 偷拍久久久 | 99精品在线播放 | 久久精品久久精品久久 | 国产无吗一区二区三区在线欢 | 久久久www成人免费毛片 | 在线亚洲午夜片av大片 | 亚洲码国产日韩欧美高潮在线播放 | 久久久麻豆视频 | 女人18片毛片90分钟 | www.天天草 | 黄色国产区 | 黄色日视频 | 91av视频在线免费观看 | www·22com天天操 | 免费成人黄色片 | 免费观看久久 | 公开超碰在线 | 中文字幕一区2区3区 | 五月婷婷综合在线观看 | 九九精品视频在线看 | 国产在线一区二区三区播放 | 女人高潮特级毛片 | 狠狠搞,com | 欧美日韩精品在线视频 | 色播五月婷婷 | www蜜桃视频 | 欧美激情奇米色 | 国产99在线播放 | 国产 在线 高清 精品 | 美女视频黄在线 | 久久久久国产精品厨房 | 欧美日韩国产综合一区二区 | 久草免费在线观看视频 | 美女又爽又黄 | 久碰视频在线观看 | 成人av动漫在线观看 | 精品国产亚洲一区二区麻豆 | 国产成人精品日本亚洲999 | 亚洲精品免费视频 | 婷婷丁香激情综合 | 九九九九九精品 | 天天操天天操一操 | 亚洲综合在线播放 | 日日干精品 | 久久a久久 | 九九热精品在线 | av高清一区 | 99热最新 | 天天综合网 天天 | 日韩av女优视频 | 96精品视频| 青青河边草观看完整版高清 | 欧美在线视频一区二区三区 | 中文字幕人成人 | 精品久久久久久久久久 | 久久精品视频网站 | 国内精品久久久久久久久久清纯 | 国产精品午夜久久久久久99热 | 欧美日韩在线观看不卡 | 午夜色大片在线观看 | 精品一区二区三区四区在线 | 高清av免费看 | 天天干天天拍天天操 | 激情久久伊人 | 欧美日韩一区二区三区不卡 | 中文字幕视频免费观看 | 91香蕉国产在线观看软件 | 国产亚州av | 国产在线第三页 | 亚洲精品国精品久久99热 | 丁香免费视频 | 日本最新一区二区三区 | 久久精品1区 | 一本一道久久a久久精品 | 成人黄色电影在线观看 | 99精品国自产在线 | 中文字幕久久亚洲 | 黄p网站在线观看 | 中文字幕亚洲综合久久五月天色无吗'' | 日本三级吹潮在线 | 精品视频成人 | 国产九九九九九 | 精品国产理论片 | 国产精品一区二区吃奶在线观看 | 久久97精品| 天干啦夜天干天干在线线 | 人人插人人澡 | 香蕉久久国产 | 亚洲综合欧美日韩狠狠色 | 国产一区二区三区黄 | 色www免费视频 | 日韩精品免费在线 | 久人人| 成人四虎影院 | 久久手机免费观看 | 久久综合久久综合九色 | 精品国产精品久久 | 国产专区精品 | 国产成人一区二区三区久久精品 | 欧美日韩免费一区 | 国产人成免费视频 | 狠狠的操狠狠的干 | 国产一级片在线播放 | av一区在线| 日韩精品一区二区三区不卡 | 久要激情网 | 中文字幕在线国产精品 | 国产视频 亚洲精品 | 91亚·色 | 99免费在线观看 | 国产免费又粗又猛又爽 | 中文字幕免费高清av | 一二区av | 日韩欧美大片免费观看 | 亚洲精品综合久久 | 久久久高清视频 | 国产精品女主播一区二区三区 | 视频在线观看入口黄最新永久免费国产 | 久久日本视频 | 精品一二 | 免费网站观看www在线观看 | 国产小视频免费在线网址 | 五月婷婷开心 | 天天干人人插 | 午夜在线看片 | 久久6精品 | 日韩黄色免费 | 久久精品美女视频 | 91精品视屏 | 亚洲精品99久久久久久 | 狠狠躁夜夜躁人人爽视频 | 国产精品亚洲人在线观看 | 国产黄av | 国产精品久久在线 | 丁香婷婷色综合亚洲电影 | 午夜三级理论 | 久久久福利视频 | 国产精品一区二区视频 | 中文字幕在线观看一区二区 | 丰满少妇对白在线偷拍 | 久九视频 | 欧美日韩国产综合网 | 粉嫩av一区二区三区免费 | 青青河边草观看完整版高清 | 久久女教师 | 亚洲精品午夜久久久久久久 | 久久精品视频网 | 最新精品视频在线 | 91成人久久 | 在线免费看片 | 国产视频在线免费 | 一区二区三区在线视频观看58 | 国产999在线 | 亚洲成人精品在线 | 成年人在线免费看 | 国产色a在线观看 | 国产永久网站 | 成人网看片 | 精品福利在线 | 国产露脸91国语对白 | 日韩免费观看高清 | 天天操天天爽天天干 | 五月婷在线观看 | 亚洲精品美女久久久久网站 | 欧美国产日韩在线观看 | 久久国产精品99久久久久久进口 | 日三级在线 | 国产日韩精品一区二区三区 | 色999精品 | 国内精品久久久久久久97牛牛 | 97视频在线观看网址 | av片中文字幕 | 色噜噜在线观看视频 | 丁香久久激情 | 操操日 | 精品伊人久久久 | 国产亚洲成人网 | 色婷婷激情五月 | 波多野结衣在线观看一区二区三区 | 精品一区二区三区久久久 | 91中文在线| 嫩模bbw搡bbbb搡bbbb | 日韩亚洲精品电影 | 国产成人免费在线观看 | 狠狠插天天干 | 五月婷婷在线播放 | 亚洲精品大全 | 久久极品| 亚洲aⅴ在线观看 | 国内精品久久影院 | 少妇啪啪av入口 | 欧美一级电影片 | 成人免费视频观看 | 日韩av免费在线电影 | 亚洲动漫在线观看 | 日韩精品欧美一区 | 色搞搞 | 中文在线免费一区三区 | 九色视频自拍 | 视频国产一区二区三区 | 精品一区二区久久久久久久网站 | 五月婷婷婷婷婷 | 精品理论片 | 四虎影院在线观看av | 五月婷婷开心中文字幕 | 夜色资源网 | 一级性视频 | 激情亚洲综合在线 | 日日夜夜天天干 | 久久免费黄色大片 | 久久激情小视频 | 久草.com| 在线激情影院一区 | 国产色拍拍拍拍在线精品 | 草久久久久久 | 久久影院一区 | 综合久久久久久久久 | 国产一卡在线 | 国产精品麻豆三级一区视频 | 色综合天天爱 | 91精品免费视频 | 韩日电影在线免费看 | 最近中文字幕免费视频 | 欧美激情视频一二三区 | 美女视频黄免费的 | 欧美大片mv免费 | 日韩欧美一区二区三区免费观看 | 国产一级在线 | 日韩欧美综合精品 | 亚洲综合色站 | 国产护士av | 99在线免费观看视频 | 奇米影视四色8888 | 在线国产能看的 | 美女视频黄网站 | 国产精品九色 | 国产福利网站 | 欧美最猛性xxx | 国产免费亚洲高清 | 精品久久1 | 午夜av在线播放 | 在线免费av网站 | 黄色91在线 | 久久久久久久99精品免费观看 | 91视频91蝌蚪 | 成人在线观看资源 | 国产香蕉视频在线播放 | 一区二区三区免费在线观看 | 久久久片 | 欧美日本高清视频 | 欧美精品久久久久 | av电影中文字幕在线观看 | 激情婷婷av| 91麻豆精品91久久久久同性 | 99精品热视频 | 99久久99| 久久久久久草 | 国产精品一区二区免费视频 | 婷婷国产精品 | 日本不卡视频 | 99久久久久久久久久 | 狠狠操狠狠干天天操 | 又爽又黄又无遮挡网站动态图 | 国产精品福利久久久 | 成人理论电影 | 国产精品毛片久久蜜 | 免费男女网站 | 国产精品99久久久精品免费观看 | 91精品国产综合久久婷婷香蕉 | 国产自在线观看 | 亚洲综合最新在线 | 96视频在线 | 二区视频在线观看 | 久久久高清免费视频 | 日韩精品一区电影 | 免费观看av| 国产区在线看 | 97国产一区二区 | 亚洲综合色视频 | 日本三级久久久 | 91精品1区| 在线观看视频一区二区三区 | 久草在线资源观看 | 亚洲日本va午夜在线电影 | 韩国av免费观看 | 久久免费视频1 | 欧美精品九九99久久 | 欧美性生活小视频 | 久久精品视频一 | 欧美午夜激情网 | 久久久久久久久久影视 | 在线高清一区 | 国产一区二区久久久久 | 三级av黄色 | av一级片网站 | 日韩a级免费视频 | 999久久久国产精品 高清av免费观看 | 97精品一区| 国产丝袜美腿在线 | 国产 视频 久久 | 中文字幕在线视频网站 | 国产精品久久久久久久毛片 | 国产精品 国产精品 | 国产麻豆传媒 | 国产麻豆电影 | 玖玖玖国产精品 | 国产视频一区二区三区在线 | 久久视奸| 国产精品v欧美精品v日韩 | 91精品在线麻豆 | 91精品国产三级a在线观看 | 97视频资源| 蜜桃av久久久亚洲精品 | 国产另类av | av综合av | 久久字幕精品一区 | 中文字幕国产一区二区 | 国产精品欧美一区二区 | 久久午夜电影院 | 国产精品久久久久久久久久久久久久 | 国产1区2区 | 最新av免费在线观看 | 97在线观看免费高清完整版在线观看 | 精品中文字幕在线播放 | 欧美日韩中文在线视频 | 美女网站视频免费都是黄 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 香蕉视频在线免费看 | 视频在线观看入口黄最新永久免费国产 | 久久久电影 | 激情五月婷婷网 | 中文字幕日韩国产 | 国产成人精品久久亚洲高清不卡 | 天天综合成人 | 在线观看涩涩 | 91大片网站 | 黄a网站 | 国产精品黄色在线观看 | 精品国产一区二区三区蜜臀 | 午夜精品久久久久久久99热影院 | 久久精品视频在线免费观看 | 久久观看免费视频 | 91成人在线免费观看 | 中文字幕免费高清在线观看 | 久久97久久97精品免视看 | 国产裸体视频网站 | 伊人av综合 | 久久影院午夜论 | 午夜久久影视 | 超碰97久久| 久久只有精品 | 一区二区三区在线视频观看58 | 国产精品短视频 | 日韩电影久久久 | 波多野结衣视频在线 | www.黄色网.com| 欧美一区二区三区在线视频观看 | 午夜一级免费电影 | 超碰97免费在线 | 国产麻豆剧果冻传媒视频播放量 | 午夜色大片在线观看 | 99久久精品视频免费 | 久久久久www | 99国产精品 | 国产理论一区二区三区 | av电影一区 | 亚洲h视频在线 | 亚洲欧洲日韩在线观看 | www色| 中文有码在线 | 亚洲影视九九影院在线观看 | 91色蜜桃 | 在线观看中文字幕网站 | 天天操夜操 | 日韩欧美精品一区二区三区经典 | 亚洲成a人片综合在线 | 久久国产免费视频 | 欧美中文字幕第一页 | 中文字幕 国产专区 | 欧美大香线蕉线伊人久久 | 色婷av| 久草视频在线免费看 | 久久精品一区二区三区国产主播 | 日韩在线观看视频免费 | 超碰97人 | 在线免费性生活片 | 日韩在线观看视频免费 | 2019中文字幕第一页 | 成全免费观看视频 | 麻豆视传媒官网免费观看 | 国产黄免费 | av一级一片 | 黄色亚洲精品 | 99精品视频免费看 | 欧美日本不卡视频 | 极品嫩模被强到高潮呻吟91 | 欧美一级在线看 | 青春草国产视频 | 福利视频入口 | 精品国产一区二区三区男人吃奶 | 久久婷婷色 | 国产精品一区二区三区观看 | 久久久久久久99精品免费观看 | 国产一级不卡视频 | 奇米影视在线99精品 | 国产精品久久久一区二区三区网站 | 亚洲综合精品视频 | 亚洲黄色免费电影 | 91麻豆精品久久久久久 | 国产精品一区二区免费视频 | 高清不卡免费视频 | 日韩特级片 | 日韩精品一区二区三区视频播放 | 99视频精品| 五月天久久精品 | 欧美一级性生活视频 | 国产精品色婷婷 | 亚洲国产av精品毛片鲁大师 | 国产成人精品在线 | 美女网站视频一区 | 免费av的网站 | 精品一区二区在线免费观看 | 国产成人一区在线 | 在线国产中文字幕 | 天天操天天干天天操天天干 | 玖玖视频精品 | 特级毛片网站 | 天天色欧美 | 99免费在线 | www色片 | 日日干干夜夜 | 亚洲视屏| 婷婷伊人五月 | 96在线| 在线免费观看国产精品 | 欧美一区二区三区在线看 | 在线观看日韩专区 | 午夜电影久久久 | 欧美不卡视频在线 | 国产成人精品午夜在线播放 | 99久久久国产精品美女 | 成人免费视频网站在线观看 | 精品一区二区三区四区在线 | 国产又粗又猛又色又黄网站 | 国内精品久久久精品电影院 | 999抗病毒口服液 | 国产一级久久久 | 色综合久久网 | 欧美成人影音 | 狠狠色丁香婷婷综合久久片 | 黄色在线看网站 | 免费看片成人 | 欧美日韩国产一区二区在线观看 | 成人av影院在线观看 | 欧美黑人xxxx猛性大交 | 天天综合婷婷 | 九九视频精品在线 | 欧美日韩精品综合 | 麻豆国产视频 | 美女福利视频一区二区 | 久久伦理网 | 亚洲国产成人高清精品 | 欧美激情视频一区 | 国产在线97 | 久久久久久国产一区二区三区 | 免费色网 | 日韩欧美在线国产 | 久久手机免费观看 | 欧女人精69xxxxxx | 亚洲男女精品 | 在线日韩av| 99草在线视频 | 99精品欧美一区二区三区 | 97**国产露脸精品国产 | 99热超碰在线 | 97视频在线观看视频免费视频 | 色悠悠久久综合 | 免费在线激情电影 | 精品乱码一区二区三四区 | 一区二区激情 | a√天堂中文在线 | 国产精品美女久久久免费 | 精品专区一区二区 | 久久综合五月婷婷 | 日韩视频一二三区 | 99久精品 | 一二区精品 | 国产精品欧美日韩在线观看 | 国产精品久久久一区二区三区网站 | 九九免费在线观看 | 毛片二区 | 久久久久久久精 | 免费一级片久久 | 97精品免费视频 | 久久精品国产免费看久久精品 | 久久久麻豆视频 | 性色av一区二区三区在线观看 | 久久午夜精品影院一区 | 狠狠插狠狠操 | 日日爽夜夜操 | 国产成人久久久77777 | 国产在线探花 | 国产精品女主播一区二区三区 | 中文字幕资源网在线观看 | 97精品伊人 | 婷婷丁香九月 | 亚洲久久视频 | 亚洲国产片 | 国产va饥渴难耐女保洁员在线观看 | 91麻豆精品国产91久久久久久 | 久久1电影院 | 天天干夜夜操视频 | 99亚洲精品在线 | 亚州精品视频 | www国产亚洲精品久久麻豆 | 草久电影| 日本久久精品视频 | 91最新网址在线观看 | 亚洲国产影院av久久久久 | 欧美一级在线 | 欧美综合久久久 | 天天色天天上天天操 | 久久精品国产精品 | 91手机在线看片 | 成人av免费网站 | 999久久久久久久久6666 | 日韩欧美高清在线观看 | 三级av在线播放 | 亚洲成人黄色在线观看 | 婷婷久久综合网 | 久久艹艹 | 久久久国产视频 | 欧美视频18| 91视频这里只有精品 | 在线观看一区视频 | 99人久久精品视频最新地址 | 日本黄色大片儿 | 91亚洲在线 | 国产做爰视频 | 国产啊v在线 | 中文字幕一区二区三区久久 | 免费在线观看一区 | 国产精品999久久久 久产久精国产品 | 精品国产片 | 久久久国产精品一区二区三区 | 亚洲人久久 | 久久呀 | 蜜桃av观看 | 免费观看成年人视频 | 黄色免费看片网站 | 国产麻豆精品一区二区 | 色吧av色av | 黄色av电影 | 六月色婷婷 | 天天艹天天 | 特级黄录像视频 | 国产精品免费一区二区三区在线观看 | 欧美美女视频在线观看 | 成人免费毛片aaaaaa片 | 狠狠的干狠狠的操 | 欧美成人精品欧美一级乱 | av一区二区三区在线观看 | 久久免费看a级毛毛片 | 天天操人|