久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

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

windows

当初我要是这么学操作系统就好了(附思维导图)

發(fā)布時間:2023/12/14 windows 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 当初我要是这么学操作系统就好了(附思维导图) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

公眾號關(guān)注?“GitHubDaily”

設(shè)為 “星標(biāo)”,每天帶你學(xué)編程!


作者 |?cxuan?

來源 | Java建設(shè)者

本文思維導(dǎo)圖

操作系統(tǒng)

現(xiàn)代計算機系統(tǒng)由一個或多個處理器、主存、打印機、鍵盤、鼠標(biāo)、顯示器、網(wǎng)絡(luò)接口以及各種輸入 / 輸出設(shè)備構(gòu)成。

然而,程序員不會直接和這些硬件打交道,而且每位程序員不可能會掌握所有計算機系統(tǒng)的細節(jié),這樣我們就不用再編寫代碼了,所以在硬件的基礎(chǔ)之上,計算機安裝了一層軟件,這層軟件能夠通過響應(yīng)用戶輸入的指令達到控制硬件的效果,從而滿足用戶需求,這種軟件稱之為?操作系統(tǒng),它的任務(wù)就是為用戶程序提供一個更好、更簡單、更清晰的計算機模型。

我們一般常見的操作系統(tǒng)主要有?Windows、Linux、FreeBSD 或 OS X?,這種帶有圖形界面的操作系統(tǒng)被稱為?圖形用戶界面(Graphical User Interface, GUI),而基于文本、命令行的通常稱為?Shell。下面是我們所要探討的操作系統(tǒng)的部件

這是一個操作系統(tǒng)的簡化圖,最下面的是硬件,硬件包括芯片、電路板、磁盤、鍵盤、顯示器等我們上面提到的設(shè)備,在硬件之上是軟件。大部分計算機有兩種運行模式:內(nèi)核態(tài)?和?用戶態(tài),軟件中最基礎(chǔ)的部分是操作系統(tǒng),它運行在?內(nèi)核態(tài)?中,內(nèi)核態(tài)也稱為?管態(tài)?和?核心態(tài),它們都是操作系統(tǒng)的運行狀態(tài),只不過是不同的叫法而已。操作系統(tǒng)具有硬件的訪問權(quán),可以執(zhí)行機器能夠運行的任何指令。軟件的其余部分運行在?用戶態(tài)?下。

用戶接口程序(shell 或者 GUI)處于用戶態(tài)中,并且它們位于用戶態(tài)的最低層,允許用戶運行其他程序,例如 Web 瀏覽器、電子郵件閱讀器、音樂播放器等。而且,越靠近用戶態(tài)的應(yīng)用程序越容易編寫,如果你不喜歡某個電子郵件閱讀器你可以重新寫一個或者換一個,但你不能自行寫一個操作系統(tǒng)或者是中斷處理程序。這個程序由硬件保護,防止外部對其進行修改。

計算機硬件簡介

操作系統(tǒng)與運行操作系統(tǒng)的內(nèi)核硬件關(guān)系密切。操作系統(tǒng)擴展了計算機指令集并管理計算機的資源。因此,操作系統(tǒng)因此必須足夠了解硬件的運行,這里我們先簡要介紹一下現(xiàn)代計算機中的計算機硬件。

從概念上來看,一臺簡單的個人電腦可以被抽象為上面這種相似的模型,CPU、內(nèi)存、I/O 設(shè)備都和總線串聯(lián)起來并通過總線與其他設(shè)備進行通信。現(xiàn)代操作系統(tǒng)有著更為復(fù)雜的結(jié)構(gòu),會設(shè)計很多條總線,我們稍后會看到。暫時來講,這個模型能夠滿足我們的討論。

CPU

CPU 是計算機的大腦,它主要和內(nèi)存進行交互,從內(nèi)存中提取指令并執(zhí)行它。一個 CPU 的執(zhí)行周期是從內(nèi)存中提取第一條指令、解碼并決定它的類型和操作數(shù),執(zhí)行,然后再提取、解碼執(zhí)行后續(xù)的指令。重復(fù)該循環(huán)直到程序運行完畢。

每個 CPU 都有一組可以執(zhí)行的特定指令集。因此,x86 的 CPU 不能執(zhí)行 ARM 的程序并且 ARM 的 CPU 也不能執(zhí)行 x86 的程序。由于訪問內(nèi)存獲取執(zhí)行或數(shù)據(jù)要比執(zhí)行指令花費的時間長,因此所有的 CPU 內(nèi)部都會包含一些寄存器來保存關(guān)鍵變量和臨時結(jié)果。因此,在指令集中通常會有一些指令用于把關(guān)鍵字從內(nèi)存中加載到寄存器中,以及把關(guān)鍵字從寄存器存入到內(nèi)存中。還有一些其他的指令會把來自寄存器和內(nèi)存的操作數(shù)進行組合,例如 add 操作就會把兩個操作數(shù)相加并把結(jié)果保存到內(nèi)存中。

除了用于保存變量和臨時結(jié)果的通用寄存器外,大多數(shù)計算機還具有幾個特殊的寄存器,這些寄存器對于程序員是可見的。其中之一就是?程序計數(shù)器(program counter),程序計數(shù)器會指示下一條需要從內(nèi)存提取指令的地址。提取指令后,程序計數(shù)器將更新為下一條需要提取的地址。

另一個寄存器是?堆棧指針(stack pointer),它指向內(nèi)存中當(dāng)前棧的頂端。堆棧指針會包含輸入過程中的有關(guān)參數(shù)、局部變量以及沒有保存在寄存器中的臨時變量。

還有一個寄存器是?PSW(Program Status Word)?程序狀態(tài)字寄存器,這個寄存器是由操作系統(tǒng)維護的 8 個字節(jié) (64 位) long 類型的數(shù)據(jù)集合。它會跟蹤當(dāng)前系統(tǒng)的狀態(tài)。除非發(fā)生系統(tǒng)結(jié)束,否則我們可以忽略 PSW 。用戶程序通常可以讀取整個 PSW,但通常只能寫入其某些字段。PSW 在系統(tǒng)調(diào)用和 I / O 中起著重要作用。

操作系統(tǒng)必須了解所有的寄存器。在時間多路復(fù)用(time multiplexing)?的 CPU 中,操作系統(tǒng)往往停止運行一個程序轉(zhuǎn)而運行另外一個。每次當(dāng)操作系統(tǒng)停止運行一個程序時,操作系統(tǒng)會保存所有寄存器的值,以便于后續(xù)重新運行該程序。

為了提升性能, CPU 設(shè)計人員早就放棄了同時去讀取、解碼和執(zhí)行一條簡單的指令。許多現(xiàn)代的 CPU 都具有同時讀取多條指令的機制。例如,一個 CPU 可能會有單獨訪問、解碼和執(zhí)行單元,所以,當(dāng) CPU 執(zhí)行第 N 條指令時,還可以對 N + 1 條指令解碼,還可以讀取 N + 2 條指令。像這樣的組織形式被稱為?流水線(pipeline)。

比流水線更先進的設(shè)計是?超標(biāo)量(superscalar)CPU,下面是超標(biāo)量 CPU 的設(shè)計

在上面這個設(shè)計中,存在多個執(zhí)行單元,例如,一個用來進行整數(shù)運算、一個用來浮點數(shù)運算、一個用來布爾運算。兩個或者更多的指令被一次性取出、解碼并放入緩沖區(qū)中,直至它們執(zhí)行完畢。只要一個執(zhí)行單元空閑,就會去檢查緩沖區(qū)是否有可以執(zhí)行的指令。如果有,就把指令從緩沖區(qū)中取出并執(zhí)行。這種設(shè)計的含義是應(yīng)用程序通常是無序執(zhí)行的。在大多數(shù)情況下,硬件負責(zé)保證這種運算的結(jié)果與順序執(zhí)行指令時的結(jié)果相同。

除了用在嵌入式系統(tǒng)中非常簡單的 CPU 之外,多數(shù) CPU 都有兩種模式,即前面已經(jīng)提到的內(nèi)核態(tài)和用戶態(tài)。通常情況下,PSW 寄存器中的一個二進制位會控制當(dāng)前狀態(tài)是內(nèi)核態(tài)還是用戶態(tài)。當(dāng)運行在內(nèi)核態(tài)時,CPU 能夠執(zhí)行任何指令集中的指令并且能夠使用硬件的功能。在臺式機和服務(wù)器上,操作系統(tǒng)通常以內(nèi)核模式運行,從而可以訪問完整的硬件。在大多數(shù)嵌入式系統(tǒng)中,一部分運行在內(nèi)核態(tài)下,剩下的一部分運行在用戶態(tài)下。

用戶應(yīng)用程序通常運行在用戶態(tài)下,在用戶態(tài)下,CPU 只能執(zhí)行指令集中的一部分并且只能訪問硬件的一部分功能。一般情況下,在用戶態(tài)下,有關(guān) I/O 和內(nèi)存保護的所有指令是禁止執(zhí)行的。當(dāng)然,設(shè)置 PSW 模式的二進制位為內(nèi)核態(tài)也是禁止的。

為了獲取操作系統(tǒng)的服務(wù),用戶程序必須使用?系統(tǒng)調(diào)用(system call),系統(tǒng)調(diào)用會轉(zhuǎn)換為內(nèi)核態(tài)并且調(diào)用操作系統(tǒng)。TRAP?指令用于把用戶態(tài)切換為內(nèi)核態(tài)并啟用操作系統(tǒng)。當(dāng)有關(guān)工作完成之后,在系統(tǒng)調(diào)用后面的指令會把控制權(quán)交給用戶程序。我們會在后面探討操作系統(tǒng)的調(diào)用細節(jié)。

需要注意的是操作系統(tǒng)在進行系統(tǒng)調(diào)用時會存在陷阱。大部分的陷阱會導(dǎo)致硬件發(fā)出警告,比如說試圖被零除或浮點下溢等你。在所有的情況下,操作系統(tǒng)都能得到控制權(quán)并決定如何處理異常情況。有時,由于出錯的原因,程序不得不停止。

多線程和多核芯片

Intel Pentinum 4 也就是奔騰處理器引入了被稱為多線程(multithreading)?或?超線程(hyperthreading, Intel 公司的命名)?的特性,x86 處理器和其他一些 CPU 芯片就是這樣做的。包括?SSPARC、Power5、Intel Xeon 和 Intel Core 系列?。近似地說,多線程允許 CPU 保持兩個不同的線程狀態(tài)并且在納秒級(nanosecond)?的時間完成切換。線程是一種輕量級的進程,我們會在后面說到。例如,如果一個進程想要從內(nèi)存中讀取指令 (這通常會經(jīng)歷幾個時鐘周期),多線程 CPU 則可以切換至另一個線程。多線程不會提供真正的并行處理。在一個時刻只有一個進程在運行。

對于操作系統(tǒng)來講,多線程是有意義的,因為每個線程對操作系統(tǒng)來說都像是一個單個的 CPU。比如一個有兩個 CPU 的操作系統(tǒng),并且每個 CPU 運行兩個線程,那么這對于操作系統(tǒng)來說就可能是 4 個 CPU。

除了多線程之外,現(xiàn)在許多 CPU 芯片上都具有四個、八個或更多完整的處理器或內(nèi)核。多核芯片在其上有效地承載了四個微型芯片,每個微型芯片都有自己的獨立 CPU。

如果要說在絕對核心數(shù)量方面,沒有什么能贏過現(xiàn)代?GPU(Graphics Processing Unit),GPU 是指由成千上萬個微核組成的處理器。它們擅長處理大量并行的簡單計算。

內(nèi)存

計算機中第二個主要的組件就是內(nèi)存。理想情況下,內(nèi)存應(yīng)該非常快速 (比執(zhí)行一條指令要快,從而不會拖慢 CPU 執(zhí)行效率),而且足夠大且便宜,但是目前的技術(shù)手段無法滿足三者的需求。于是采用了不同的處理方式,存儲器系統(tǒng)采用一種分層次的結(jié)構(gòu)

頂層的存儲器速度最高,但是容量最小,成本非常高,層級結(jié)構(gòu)越向下,其訪問效率越慢,容量越大,但是造價也就越便宜。

寄存器

存儲器的頂層是 CPU 中的寄存器,它們用和 CPU 一樣的材料制成,所以和 CPU 一樣快。程序必須在軟件中自行管理這些寄存器(即決定如何使用它們)

高速緩存

位于寄存器下面的是高速緩存,它多數(shù)由硬件控制。主存被分割成高速緩存行(cache lines)?為 64 字節(jié),內(nèi)存地址的 0 - 63 對應(yīng)高速緩存行 0 ,地址 64 - 127 對應(yīng)高速緩存行的 1,等等。使用最頻繁的高速緩存行保存在位于 CPU 內(nèi)部或非常靠近 CPU 的高速緩存中。當(dāng)應(yīng)用程序需要從內(nèi)存中讀取關(guān)鍵詞的時候,高速緩存的硬件會檢查所需要的高速緩存行是否在高速緩存中。如果在的話,那么這就是高速緩存命中(cache hit)。高速緩存滿足了該請求,并且沒有通過總線將內(nèi)存請求發(fā)送到主內(nèi)存。高速緩存命中通常需要花費兩個時鐘周期。緩存未命中需要從內(nèi)存中提取,這會消耗大量的時間。高速緩存行會限制容量的大小因為它的造價非常昂貴。有一些機器會有兩個或者三個高速緩存級別,每一級高速緩存比前一級慢且容量更大。

緩存在計算機很多領(lǐng)域都扮演了非常重要的角色,不僅僅是 RAM 緩存行。

隨機存儲器(RAM):內(nèi)存中最重要的一種,表示既可以從中讀取數(shù)據(jù),也可以寫入數(shù)據(jù)。當(dāng)機器關(guān)閉時,內(nèi)存中的信息會?丟失。

大量的可用資源被劃分為小的部分,這些可用資源的一部分會獲得比其他資源更頻繁的使用權(quán),緩存經(jīng)常用來提升性能。操作系統(tǒng)無時無刻的不在使用緩存。例如,大多數(shù)操作系統(tǒng)在主機內(nèi)存中保留(部分)頻繁使用的文件,以避免重復(fù)從磁盤重復(fù)獲取。舉個例子,類似于?/home/ast/projects/minix3/src/kernel/clock.c?這樣的場路徑名轉(zhuǎn)換成的文件所在磁盤地址的結(jié)果也可以保存緩存中,以避免重復(fù)尋址。另外,當(dāng)一個 Web 頁面 (URL) 的地址轉(zhuǎn)換為網(wǎng)絡(luò)地址 (IP 地址) 后,這個轉(zhuǎn)換結(jié)果也可以緩存起來供將來使用。

在任何緩存系統(tǒng)中,都會有下面這幾個噬需解決的問題

  • 何時把新的內(nèi)容放進緩存

  • 把新的內(nèi)容應(yīng)該放在緩存的哪一行

  • 在需要空閑空間時,應(yīng)該把哪塊內(nèi)容從緩存中移除

  • 應(yīng)該把移除的內(nèi)容放在某個較大存儲器的何處

并不是每個問題都與每種緩存情況有關(guān)。對于 CPU 緩存中的主存緩存行,當(dāng)有緩存未命中時,就會調(diào)入新的內(nèi)容。通常通過所引用內(nèi)存地址的高位計算應(yīng)該使用的緩存行。

緩存是解決問題的一種好的方式,所以現(xiàn)代 CPU 設(shè)計了兩種緩存。第一級緩存或者說是?L1 cache?總是位于 CPU 內(nèi)部,用來將已解碼的指令調(diào)入 CPU 的執(zhí)行引擎。對于那些頻繁使用的關(guān)鍵字,多數(shù)芯片有第二個 L1 cache 。典型的 L1 cache 的大小為 16 KB。另外,往往還設(shè)有二級緩存,也就是?L2 cache,用來存放最近使用過的關(guān)鍵字,一般是兆字節(jié)為單位。L1 cache 和 L2 cache 最大的不同在于是否存在延遲。訪問 L1 cache 沒有任何的延遲,然而訪問 L2 cache 會有 1 - 2 個時鐘周期的延后。

什么是時鐘周期?計算機處理器或 CPU 的速度由時鐘周期來確定,該時鐘周期是振蕩器兩個脈沖之間的時間量。一般而言,每秒脈沖數(shù)越高,計算機處理器處理信息的速度就越快。時鐘速度以 Hz 為單位測量,通常為兆赫(MHz)或千兆赫(GHz)。例如,一個 4 GHz 處理器每秒執(zhí)行 4,000,000,000 個時鐘周期。

計算機處理器可以在每個時鐘周期執(zhí)行一條或多條指令,這具體取決于處理器的類型。早期的計算機處理器和較慢的 CPU 在每個時鐘周期只能執(zhí)行一條指令,而現(xiàn)代處理器在每個時鐘周期可以執(zhí)行多條指令。

主存

在上面的層次結(jié)構(gòu)中再下一層是主存,這是內(nèi)存系統(tǒng)的主力軍,主存通常叫做?RAM(Random Access Memory),由于 1950 年代和 1960 年代的計算機使用微小的可磁化鐵氧體磁芯作為主存儲器,因此舊時有時將其稱為核心存儲器。所有不能再高速緩存中得到滿足的內(nèi)存訪問請求都會轉(zhuǎn)往主存中。

除了主存之外,許多計算機還具有少量的非易失性隨機存取存儲器。它們與 RAM 不同,在電源斷電后,非易失性隨機訪問存儲器并不會丟失內(nèi)容。ROM(Read Only Memory)?中的內(nèi)容一旦存儲后就不會再被修改。它非常快而且便宜。(如果有人問你,有沒有什么又快又便宜的內(nèi)存設(shè)備,那就是 ROM 了)在計算機中,用于啟動計算機的引導(dǎo)加載模塊(也就是 bootstrap )就存放在 ROM 中。另外,一些 I/O 卡也采用 ROM 處理底層設(shè)備控制。

EEPROM(Electrically Erasable PROM,)?和?閃存(flash memory)?也是非易失性的,但是與 ROM 相反,它們可以擦除和重寫。不過重寫它們需要比寫入 RAM 更多的時間,所以它們的使用方式與 ROM 相同,但是與 ROM 不同的是他們可以通過重寫字段來糾正程序中出現(xiàn)的錯誤。

閃存也通常用來作為便攜性的存儲媒介。閃存是數(shù)碼相機中的膠卷,是便攜式音樂播放器的磁盤。閃存的速度介于 RAM 和磁盤之間。另外,與磁盤存儲器不同的是,如果閃存擦除的次數(shù)太多,會出現(xiàn)磨損。

還有一類是 CMOS,它是易失性的。許多計算機都會使用 CMOS 存儲器保持當(dāng)前時間和日期。

磁盤

下一個層次是磁盤(硬盤),磁盤同 RAM 相比,每個二進制位的成本低了兩個數(shù)量級,而且經(jīng)常也有兩個數(shù)量級大的容量。磁盤唯一的問題是隨機訪問數(shù)據(jù)時間大約慢了三個數(shù)量級。磁盤訪問慢的原因是因為磁盤的構(gòu)造不同

磁盤是一種機械裝置,在一個磁盤中有一個或多個金屬盤片,它們以 5400rpm、7200rpm、10800rpm 或更高的速度旋轉(zhuǎn)。從邊緣開始有一個機械臂懸橫在盤面上,這類似于老式播放塑料唱片 33 轉(zhuǎn)唱機上的拾音臂。信息會寫在磁盤一系列的同心圓上。在任意一個給定臂的位置,每個磁頭可以讀取一段環(huán)形區(qū)域,稱為磁道(track)。把一個給定臂的位置上的所有磁道合并起來,組成了一個柱面(cylinder)。

每個磁道劃分若干扇區(qū),扇區(qū)的值是 512 字節(jié)。在現(xiàn)代磁盤中,較外部的柱面比較內(nèi)部的柱面有更多的扇區(qū)。機械臂從一個柱面移動到相鄰的柱面大約需要 1ms。而隨機移到一個柱面的典型時間為 5ms 至 10ms,具體情況以驅(qū)動器為準(zhǔn)。一旦磁臂到達正確的磁道上,驅(qū)動器必須等待所需的扇區(qū)旋轉(zhuǎn)到磁頭之下,就開始讀寫,低端硬盤的速率是50MB/s,而高速磁盤的速率是?160MB/s。

需要注意,固態(tài)硬盤(Solid State Disk, SSD)不是磁盤,固態(tài)硬盤并沒有可以移動的部分,外形也不像唱片,并且數(shù)據(jù)是存儲在存儲器(閃存)中,與磁盤唯一的相似之處就是它也存儲了大量即使在電源關(guān)閉也不會丟失的數(shù)據(jù)。

許多計算機支持一種著名的虛擬內(nèi)存機制,這種機制使得期望運行的存儲空間大于實際的物理存儲空間。其方法是將程序放在磁盤上,而將主存作為一部分緩存,用來保存最頻繁使用的部分程序,這種機制需要快速映像內(nèi)存地址,用來把程序生成的地址轉(zhuǎn)換為有關(guān)字節(jié)在 RAM 中的物理地址。這種映像由 CPU 中的一個稱為?存儲器管理單元(Memory Management Unit, MMU)?的部件來完成。

緩存和 MMU 的出現(xiàn)是對系統(tǒng)的性能有很重要的影響,在多道程序系統(tǒng)中,從一個程序切換到另一個程序的機制稱為?上下文切換(context switch),對來自緩存中的資源進行修改并把其寫回磁盤是很有必要的。

I/O 設(shè)備

CPU 和存儲器不是操作系統(tǒng)需要管理的全部,I/O?設(shè)備也與操作系統(tǒng)關(guān)系密切。可以參考上面這個圖片,I/O 設(shè)備一般包括兩個部分:設(shè)備控制器和設(shè)備本身。控制器本身是一塊芯片或者一組芯片,它能夠控制物理設(shè)備。它能夠接收操作系統(tǒng)的指令,例如,從設(shè)備中讀取數(shù)據(jù)并完成數(shù)據(jù)的處理。

在許多情況下,實際控制設(shè)備的過程是非常復(fù)雜而且存在諸多細節(jié)。因此控制器的工作就是為操作系統(tǒng)提供一個更簡單(但仍然非常復(fù)雜)的接口。也就是屏蔽物理細節(jié)。任何復(fù)雜的東西都可以加一層代理來解決,這是計算機或者人類社會很普世的一個解決方案

I/O 設(shè)備另一部分是設(shè)備本身,設(shè)備本身有一個相對簡單的接口,這是因為接口既不能做很多工作,而且也已經(jīng)被標(biāo)準(zhǔn)化了。例如,標(biāo)準(zhǔn)化后任何一個 SATA 磁盤控制器就可以適配任意一種 SATA 磁盤,所以標(biāo)準(zhǔn)化是必要的。ATA?代表?高級技術(shù)附件(AT Attachment),而 SATA 表示串行高級技術(shù)附件(Serial ATA)。

AT 是啥?它是 IBM 公司的第二代個人計算機的高級技術(shù)成果,使用 1984 年推出的 6MHz 80286 處理器,這個處理器是當(dāng)時最強大的。

像是高級這種詞匯應(yīng)該慎用,否則 20 年后再回首很可能會被無情打臉。

現(xiàn)在 SATA 是很多計算機的標(biāo)準(zhǔn)硬盤接口。由于實際的設(shè)備接口隱藏在控制器中,所以操作系統(tǒng)看到的是對控制器的接口,這個接口和設(shè)備接口有很大區(qū)別。

每種類型的設(shè)備控制器都是不同的,所以需要不同的軟件進行控制。專門與控制器進行信息交流,發(fā)出命令處理指令接收響應(yīng)的軟件,稱為?設(shè)備驅(qū)動程序(device driver)。每個控制器廠家都應(yīng)該針對不同的操作系統(tǒng)提供不同的設(shè)備驅(qū)動程序。

為了使設(shè)備驅(qū)動程序能夠工作,必須把它安裝在操作系統(tǒng)中,這樣能夠使它在內(nèi)核態(tài)中運行。要將設(shè)備驅(qū)動程序裝入操作系統(tǒng),一般有三個途徑

  • 第一個途徑是將內(nèi)核與設(shè)備啟動程序重新連接,然后重啟系統(tǒng)。這是?UNIX?系統(tǒng)采用的工作方式

  • 第二個途徑是在一個操作系統(tǒng)文件中設(shè)置一個入口,通知該文件需要一個設(shè)備驅(qū)動程序,然后重新啟動系統(tǒng)。在重新系統(tǒng)時,操作系統(tǒng)回尋找有關(guān)的設(shè)備啟動程序并把它裝載,這是?Windows?采用的工作方式

  • 第三個途徑是操作系統(tǒng)能夠在運行時接收新的設(shè)備驅(qū)動程序并立刻安裝,無需重啟操作系統(tǒng),這種方式采用的少,但是正變得普及起來。熱插拔設(shè)備,比如 USB 和 IEEE 1394 都需要動態(tài)可裝載的設(shè)備驅(qū)動程序。

每個設(shè)備控制器都有少量用于通信的寄存器,例如,一個最小的磁盤控制器也會有用于指定磁盤地址、內(nèi)存地址、扇區(qū)計數(shù)的寄存器。要激活控制器,設(shè)備驅(qū)動程序回從操作系統(tǒng)獲取一條指令,然后翻譯成對應(yīng)的值,并寫入設(shè)備寄存器中,所有設(shè)備寄存器的結(jié)合構(gòu)成了?I/O 端口空間?。

在一些計算機中,設(shè)備寄存器會被映射到操作系統(tǒng)的可用地址空間,使他們能夠向內(nèi)存一樣完成讀寫操作。在這種計算機中,不需要專門的 I/O 指令,用戶程序可以被硬件阻擋在外,防止其接觸這些存儲器地址(例如,采用基址寄存器和變址寄存器)。在另一些計算機中,設(shè)備寄存器被放入一個專門的 I/O 端口空間,每個寄存器都有一個端口地址。在這些計算機中,特殊的?IN?和?OUT?指令會在內(nèi)核態(tài)下啟用,它能夠允許設(shè)備驅(qū)動程序和寄存器進行讀寫。前面第一種方式會限制特殊的 I/O 指令但是允許一些地址空間;后者不需要地址空間但是需要特殊的指令,這兩種應(yīng)用都很廣泛。

實現(xiàn)輸入和輸出的方式有三種

  • 在最簡單的方式中,用戶程序會發(fā)起系統(tǒng)調(diào)用,內(nèi)核會將其轉(zhuǎn)換為相應(yīng)驅(qū)動程序的程序調(diào)用,然后設(shè)備驅(qū)動程序啟動 I/O 并循環(huán)檢查該設(shè)備,看該設(shè)備是否完成了工作(一般會有一些二進制位用來指示設(shè)備仍在忙碌中)。當(dāng) I/O 調(diào)用完成后,設(shè)備驅(qū)動程序把數(shù)據(jù)送到指定的地方并返回。然后操作系統(tǒng)會將控制權(quán)交給調(diào)用者。這種方式稱為?忙等待(busy waiting),這種方式的缺點是要一直占據(jù) CPU,CPU 會一直輪詢 I/O 設(shè)備直到 I/O 操作完成。

  • 第二種方式是設(shè)備驅(qū)動程序啟動設(shè)備并且讓該設(shè)備在操作完成時發(fā)生中斷。設(shè)備驅(qū)動程序在這個時刻返回。操作系統(tǒng)接著在需要時阻塞調(diào)用者并安排其他工作進行。當(dāng)設(shè)備驅(qū)動程序檢測到該設(shè)備操作完成時,它發(fā)出一個?中斷?通知操作完成。

在操作系統(tǒng)中,中斷是非常重要的,所以這需要更加細致的討論一下。

如上圖所示,這是一個三步的 I/O 過程,第一步,設(shè)備驅(qū)動程序會通過寫入設(shè)備寄存器告訴控制器應(yīng)該做什么。然后,控制器啟動設(shè)備。當(dāng)控制器完成讀取或?qū)懭氡桓嬷枰獋鬏數(shù)淖止?jié)后,它會在步驟 2 中使用某些總線向中斷控制器發(fā)送信號。如果中斷控制器準(zhǔn)備好了接收中斷信號(如果正忙于一個優(yōu)先級較高的中斷,則可能不會接收),那么它就會在 CPU 的一個引腳上面聲明。這就是步驟 3

在第四步中,中斷控制器把該設(shè)備的編號放在總線上,這樣 CPU 可以讀取總線,并且知道哪個設(shè)備完成了操作(可能同時有多個設(shè)備同時運行)。

一旦 CPU 決定去實施中斷后,程序計數(shù)器和 PSW 就會被壓入到當(dāng)前堆棧中并且 CPU 會切換到內(nèi)核態(tài)。設(shè)備編號可以作為內(nèi)存的一個引用,用來尋找該設(shè)備中斷處理程序的地址。這部分內(nèi)存稱作中斷向量(interrupt vector)。一旦中斷處理程序(中斷設(shè)備的設(shè)備驅(qū)動程序的一部分)開始后,它會移除棧中的程序計數(shù)器和 PSW 寄存器,并把它們進行保存,然后查詢設(shè)備的狀態(tài)。在中斷處理程序全部完成后,它會返回到先前用戶程序尚未執(zhí)行的第一條指令,這個過程如下

  • 實現(xiàn) I/O 的第三種方式是使用特殊的硬件:直接存儲器訪問(Direct Memory Access, DMA)?芯片。它可以控制內(nèi)存和某些控制器之間的位流,而無需 CPU 的干預(yù)。CPU 會對 DMA 芯片進行設(shè)置,說明需要傳送的字節(jié)數(shù),有關(guān)的設(shè)備和內(nèi)存地址以及操作方向。當(dāng) DMA 芯片完成后,會造成中斷,中斷過程就像上面描述的那樣。我們會在后面具體討論中斷過程

當(dāng)另一個中斷處理程序正在運行時,中斷可能(并且經(jīng)常)發(fā)生在不合宜的時間。因此,CPU 可以禁用中斷,并且可以在之后重啟中斷。在 CPU 關(guān)閉中斷后,任何已經(jīng)發(fā)出中斷的設(shè)備,可以繼續(xù)保持其中斷信號處理,但是 CPU 不會中斷,直至中斷再次啟用為止。如果在關(guān)閉中斷時,已經(jīng)有多個設(shè)備發(fā)出了中斷信號,中斷控制器將決定優(yōu)先處理哪個中斷,通常這取決于事先賦予每個設(shè)備的優(yōu)先級,最高優(yōu)先級的設(shè)備優(yōu)先贏得中斷權(quán),其他設(shè)備則必須等待。

總線

上面的結(jié)構(gòu)(簡單個人計算機的組件圖)在小型計算機已經(jīng)使用了多年,并用在早期的 IBM PC 中。然而,隨著處理器核內(nèi)存變得越來越快,單個總線處理所有請求的能力也達到了上線,其中也包括 IBM PC 總線。必須放棄使用這種模式。其結(jié)果導(dǎo)致了其他總線的出現(xiàn),它們處理 I/O 設(shè)備以及 CPU 到存儲器的速度都更快。這種演變的結(jié)果導(dǎo)致了下面這種結(jié)構(gòu)的出現(xiàn)。

上圖中的 x86 系統(tǒng)包含很多總線,高速緩存、內(nèi)存、PCIe、PCI、USB、SATA 和 DMI,每條總線都有不同的傳輸速率和功能。操作系統(tǒng)必須了解所有的總線配置和管理。其中最主要的總線是?PCIe(Peripheral Component Interconnect Express)?總線。

Intel 發(fā)明的 PCIe 總線也是作為之前古老的 PCI 總線的繼承者,而古老的 PCI 總線也是為了取代古董級別的?ISA(Industry Standard Architecture)?總線而設(shè)立的。數(shù)十 Gb/s 的傳輸能力使得 PCIe 比它的前身快很多,而且它們本質(zhì)上也十分不同。直到發(fā)明 PCIe 的 2004 年,大多數(shù)總線都是并行且共享的。共享總線架構(gòu)(shared bus architeture)?表示多個設(shè)備使用一些相同的電線傳輸數(shù)據(jù)。因此,當(dāng)多個設(shè)備同時發(fā)送數(shù)據(jù)時,此時你需要一個決策者來決定誰能夠使用總線。而 PCIe 則不一樣,它使用專門的端到端鏈路。傳統(tǒng) PCI 中使用的并行總線架構(gòu)(parallel bus architecture)?表示通過多條電線發(fā)送相同的數(shù)據(jù)字。例如,在傳統(tǒng)的 PCI 總線上,一個 32 位數(shù)據(jù)通過 32 條并行的電線發(fā)送。而 PCIe 則不同,它選用了串行總線架構(gòu)(serial bus architecture)?,并通過單個連接(稱為通道)發(fā)送消息中的所有比特數(shù)據(jù),就像網(wǎng)絡(luò)數(shù)據(jù)包一樣。這樣做會簡化很多,因為不再確保所有 32 位數(shù)據(jù)在同一時刻準(zhǔn)確到達相同的目的地。通過將多個數(shù)據(jù)通路并行起來,并行性仍可以有效利用。例如,可以使用 32 條數(shù)據(jù)通道并行傳輸 32 條消息。

在上圖結(jié)構(gòu)中,CPU 通過 DDR3 總線與內(nèi)存對話,通過 PCIe 總線與外圍圖形設(shè)備 (GPU)對話,通過?DMI(Direct Media Interface)總線經(jīng)集成中心與所有其他設(shè)備對話。而集成控制中心通過串行總線與 USB 設(shè)備對話,通過 SATA 總線與硬盤和 DVD 驅(qū)動器對話,通過 PCIe 傳輸以太網(wǎng)絡(luò)幀。

不僅如此,每一個核

USB(Univversal Serial Bus)?是用來將所有慢速 I/O 設(shè)備(比如鍵盤和鼠標(biāo))與計算機相連的設(shè)備。USB 1.0 可以處理總計 12 Mb/s 的負載,而 USB 2.0 將總線速度提高到 480Mb/s ,而 USB 3.0 能達到不小于 5Gb/s 的速率。所有的 USB 設(shè)備都可以直接連接到計算機并能夠立刻開始工作,而不像之前那樣要求重啟計算機。

SCSI(Small Computer System Interface)?總線是一種高速總線,用在高速硬盤,掃描儀和其他需要較大帶寬的設(shè)備上。現(xiàn)在,它們主要用在服務(wù)器和工作站中,速度可以達到 640MB/s 。

計算機啟動過程

那么有了上面一些硬件再加上操作系統(tǒng)的支持,我們的計算機就可以開始工作了,那么計算機的啟動過程是怎樣的呢?下面只是一個簡要版的啟動過程

在每臺計算機上有一塊雙親板,也就是母板,母板也就是主板,它是計算機最基本也就是最重要的部件之一。主板一般為矩形電路板,上面安裝了組成計算機的主要電路系統(tǒng),一般有 BIOS 芯片、I/O 控制芯片、鍵盤和面板控制開關(guān)接口、指示燈插接件、擴充插槽、主板及插卡的直流電源供電接插件等元件。

在母板上有一個稱為?基本輸入輸出系統(tǒng)(Basic Input Output System, BIOS)的程序。在 BIOS 內(nèi)有底層 I/O 軟件,包括讀鍵盤、寫屏幕、磁盤 I/O 以及其他過程。如今,它被保存在閃存中,它是非易失性的,但是當(dāng) BIOS 中發(fā)現(xiàn)錯誤時,可以由操作系統(tǒng)進行更新。

在計算機啟動(booted)時,BIOS 開啟,它會首先檢查所安裝的 RAM 的數(shù)量,鍵盤和其他基礎(chǔ)設(shè)備是否已安裝并且正常響應(yīng)。接著,它開始掃描 PCIe 和 PCI 總線并找出連在上面的所有設(shè)備。即插即用的設(shè)備也會被記錄下來。如果現(xiàn)有的設(shè)備和系統(tǒng)上一次啟動時的設(shè)備不同,則新的設(shè)備將被重新配置。

藍后,BIOS 通過嘗試存儲在?CMOS?存儲器中的設(shè)備清單嘗試啟動設(shè)備

CMOS 是?Complementary Metal Oxide Semiconductor(互補金屬氧化物半導(dǎo)體)的縮寫。它是指制造大規(guī)模集成電路芯片用的一種技術(shù)或用這種技術(shù)制造出來的芯片,是電腦主板上的一塊可讀寫的?RAM?芯片。因為可讀寫的特性,所以在電腦主板上用來保存 BIOS 設(shè)置完電腦硬件參數(shù)后的數(shù)據(jù),這個芯片僅僅是用來存放數(shù)據(jù)的。

而對 BIOS 中各項參數(shù)的設(shè)定要通過專門的程序。BIOS 設(shè)置程序一般都被廠商整合在芯片中,在開機時通過特定的按鍵就可進入 BIOS 設(shè)置程序,方便地對系統(tǒng)進行設(shè)置。因此 BIOS 設(shè)置有時也被叫做 CMOS 設(shè)置。

用戶可以在系統(tǒng)啟動后進入一個 BIOS 配置程序,對設(shè)備清單進行修改。然后,判斷是否能夠從外部?CD-ROM?和 USB 驅(qū)動程序啟動,如果啟動失敗的話(也就是沒有),系統(tǒng)將從硬盤啟動,boots 設(shè)備中的第一個扇區(qū)被讀入內(nèi)存并執(zhí)行。該扇區(qū)包含一個程序,該程序通常在引導(dǎo)扇區(qū)末尾檢查分區(qū)表以確定哪個分區(qū)處于活動狀態(tài)。然后從該分區(qū)讀入第二個啟動加載程序,該加載器從活動分區(qū)中讀取操作系統(tǒng)并啟動它。

然后操作系統(tǒng)會詢問 BIOS 獲取配置信息。對于每個設(shè)備來說,會檢查是否有設(shè)備驅(qū)動程序。如果沒有,則會向用戶詢問是否需要插入?CD-ROM?驅(qū)動(由設(shè)備制造商提供)或者從 Internet 上下載。一旦有了設(shè)備驅(qū)動程序,操作系統(tǒng)會把它們加載到內(nèi)核中,然后初始化表,創(chuàng)建所需的后臺進程,并啟動登錄程序或 GUI。

操作系統(tǒng)博物館

操作系統(tǒng)已經(jīng)存在了大半個世紀(jì),在這段時期內(nèi),出現(xiàn)了各種類型的操作系統(tǒng),但并不是所有的操作系統(tǒng)都很出名,下面就羅列一些比較出名的操作系統(tǒng)

大型機操作系統(tǒng)

高端一些的操作系統(tǒng)是大型機操作系統(tǒng),這些大型操作系統(tǒng)可在大型公司的數(shù)據(jù)中心找到。這些計算機的 I/O 容量與個人計算機不同。一個大型計算機有 1000 個磁盤和數(shù)百萬 G 字節(jié)的容量是很正常,如果有這樣一臺個人計算機朋友會很羨慕。大型機也在高端 Web 服務(wù)器、大型電子商務(wù)服務(wù)站點上。

服務(wù)器操作系統(tǒng)

下一個層次是服務(wù)器操作系統(tǒng)。它們運行在服務(wù)器上,服務(wù)器可以是大型個人計算機、工作站甚至是大型機。它們通過網(wǎng)絡(luò)為若干用戶服務(wù),并且允許用戶共享硬件和軟件資源。服務(wù)器可提供打印服務(wù)、文件服務(wù)或 Web 服務(wù)。Internet 服務(wù)商運行著許多臺服務(wù)器機器,為用戶提供支持,使 Web 站點保存 Web 頁面并處理進來的請求。典型的服務(wù)器操作系統(tǒng)有 Solaris、FreeBSD、Linux 和 Windows Server 201x

多處理器操作系統(tǒng)

獲得大型計算能力的一種越來越普遍的方式是將多個 CPU 連接到一個系統(tǒng)中。依據(jù)它們連接方式和共享方式的不同,這些系統(tǒng)稱為并行計算機,多計算機或多處理器。他們需要專門的操作系統(tǒng),不過通常采用的操作系統(tǒng)是配有通信、連接和一致性等專門功能的服務(wù)器操作系統(tǒng)的變體。

個人計算機中近來出現(xiàn)了多核芯片,所以常規(guī)的臺式機和筆記本電腦操作系統(tǒng)也開始與小規(guī)模多處理器打交道,而核的數(shù)量正在與時俱進。許多主流操作系統(tǒng)比如 Windows 和 Linux 都可以運行在多核處理器上。

個人計算機系統(tǒng)

接下來一類是個人計算機操作系統(tǒng)。現(xiàn)代個人計算機操作系統(tǒng)支持多道處理程序。在啟動時,通常有幾十個程序開始運行,它們的功能是為單個用戶提供良好的支持。這類系統(tǒng)廣泛用于字處理、電子表格、游戲和 Internet 訪問。常見的例子是 Linux、FreeBSD、Windows 7、Windows 8 和蘋果公司的 OS X 。

掌上計算機操作系統(tǒng)

隨著硬件越來越小化,我們看到了平板電腦、智能手機和其他掌上計算機系統(tǒng)。掌上計算機或者?PDA(Personal Digital Assistant),個人數(shù)字助理?是一種可以握在手中操作的小型計算機。這部分市場已經(jīng)被谷歌的?Android?系統(tǒng)和蘋果的?IOS主導(dǎo)。

嵌入式操作系統(tǒng)

嵌入式操作系統(tǒng)用來控制設(shè)備的計算機中運行,這種設(shè)備不是一般意義上的計算機,并且不允許用戶安裝軟件。典型的例子有微波爐、汽車、DVD 刻錄機、移動電話以及 MP3 播放器一類的設(shè)備。所有的軟件都運行在 ROM 中,這意味著應(yīng)用程序之間不存在保護,從而獲得某種簡化。主要的嵌入式系統(tǒng)有 Linux、QNX 和 VxWorks

傳感器節(jié)點操作系統(tǒng)

有許多用途需要配置微小傳感器節(jié)點網(wǎng)絡(luò)。這些節(jié)點是一種可以彼此通信并且使用無線通信基站的微型計算機。這類傳感器網(wǎng)絡(luò)可以用于建筑物周邊保護、國土邊界保衛(wèi)、森林火災(zāi)探測、氣象預(yù)測用的溫度和降水測量等。

每個傳感器節(jié)點是一個配有 CPU、RAM、ROM 以及一個或多個環(huán)境傳感器的實實在在的計算機。節(jié)點上運行一個小型但是真是的操作系統(tǒng),通常這個操作系統(tǒng)是事件驅(qū)動的,可以響應(yīng)外部事件。

實時操作系統(tǒng)

另一類操作系統(tǒng)是實時操作系統(tǒng),這些系統(tǒng)的特征是將時間作為關(guān)鍵參數(shù)。例如,在工業(yè)過程控制系統(tǒng)中,工廠中的實時計算機必須收集生產(chǎn)過程的數(shù)據(jù)并用有關(guān)數(shù)據(jù)控制機器。如果某個動作必須要在規(guī)定的時刻發(fā)生,這就是硬實時系統(tǒng)。可以在工業(yè)控制、民用航空、軍事以及類似應(yīng)用中看到很多這樣的系統(tǒng)。另一類系統(tǒng)是?軟實時系統(tǒng),在這種系統(tǒng)中,雖然不希望偶爾違反最終時限,但仍可以接受,并不會引起任何永久性損害。數(shù)字音頻或多媒體系統(tǒng)就是這類系統(tǒng)。智能手機也是軟實時系統(tǒng)。

智能卡操作系統(tǒng)

最小的操作系統(tǒng)運行在智能卡上。智能卡是一種包含一塊 CPU 芯片的信用卡。它有非常嚴(yán)格的運行能耗和存儲空間的限制。有些卡具有單項功能,如電子支付;有些智能卡是面向 Java 的。這意味著在智能卡的 ROM 中有一個 Java 虛擬機(Java Virtual Machine, JVM)解釋器。

操作系統(tǒng)概念

大部分操作系統(tǒng)提供了特定的基礎(chǔ)概念和抽象,例如進程、地址空間、文件等,它們是需要理解的核心內(nèi)容。下面我們會簡要介紹一些基本概念,為了說明這些概念,我們會不時的從?UNIX?中提出示例,相同的示例也會存在于其他系統(tǒng)中,我們后面會進行介紹。

進程

操作系統(tǒng)一個很關(guān)鍵的概念就是?進程(Process)。進程的本質(zhì)就是操作系統(tǒng)執(zhí)行的一個程序。與每個進程相關(guān)的是地址空間(address space),這是從某個最小值的存儲位置 (通常是零) 到某個最大值的存儲位置的列表。在這個地址空間中,進程可以進行讀寫操作。地址空間中存放有可執(zhí)行程序,程序所需要的數(shù)據(jù)和它的棧。與每個進程相關(guān)的還有資源集,通常包括寄存器(registers)(寄存器一般包括程序計數(shù)器(program counter)和堆棧指針(stack pointer))、打開文件的清單、突發(fā)的報警、有關(guān)的進程清單和其他需要執(zhí)行程序的信息。你可以把進程看作是容納運行一個程序所有信息的一個容器。

對進程建立一種直觀感覺的方式是考慮建立一種多程序的系統(tǒng)。考慮下面這種情況:用戶啟動一個視頻編輯程序,指示它按照某種格式轉(zhuǎn)換視頻,然后再去瀏覽網(wǎng)頁。同時,一個檢查電子郵件的后臺進程被喚醒并開始運行,這樣,我們目前就會有三個活動進程:視頻編輯器、Web 瀏覽器和電子郵件接收程序。操作系統(tǒng)周期性的掛起一個進程然后啟動運行另一個進程,這可能是由于過去一兩秒鐘程序用完了 CPU 分配的時間片,而 CPU 轉(zhuǎn)而運行另外的程序。

像這樣暫時中斷進程后,下次應(yīng)用程序在此啟動時,必須要恢復(fù)到與中斷時刻相同的狀態(tài),這在我們用戶看起來是習(xí)以為常的事情,但是操作系統(tǒng)內(nèi)部卻做了巨大的事情。這就像和足球比賽一樣,一場完美精彩的比賽是可以忽略裁判的存在的。這也意味著在掛起時該進程的所有信息都要被保存下來。例如,進程可能打開了多個文件進行讀取。與每個文件相關(guān)聯(lián)的是提供當(dāng)前位置的指針(即下一個需要讀取的字節(jié)或記錄的編號)。當(dāng)進程被掛起時,必須要保存這些指針,以便在重新啟動進程后執(zhí)行的?read調(diào)用將能夠正確的讀取數(shù)據(jù)。在許多操作系統(tǒng)中,與一個進程有關(guān)的所有信息,除了該進程自身地址空間的內(nèi)容以外,均存放在操作系統(tǒng)的一張表中,稱為?進程表(process table),進程表是數(shù)組或者鏈表結(jié)構(gòu),當(dāng)前存在每個進程都要占據(jù)其中的一項。

所以,一個掛起的進程包括:進程的地址空間(往往稱作磁芯映像, core image,紀(jì)念過去的磁芯存儲器),以及對應(yīng)的進程表項(其中包括寄存器以及稍后啟動該進程所需要的許多其他信息)。

與進程管理有關(guān)的最關(guān)鍵的系統(tǒng)調(diào)用往往是決定著進程的創(chuàng)建和終止的系統(tǒng)調(diào)用。考慮一個典型的例子,有一個稱為?命令解釋器(command interpreter)?或?shell?的進程從終端上讀取命令。此時,用戶剛鍵入一條命令要求編譯一個程序。shell 必須先創(chuàng)建一個新進程來執(zhí)行編譯程序,當(dāng)編譯程序結(jié)束時,它執(zhí)行一個系統(tǒng)調(diào)用來終止自己的進程。

如果一個進程能夠創(chuàng)建一個或多個進程(稱為子進程),而且這些進程又可以創(chuàng)建子進程,則很容易找到進程數(shù),如下所示

上圖表示一個進程樹的示意圖,進程 A 創(chuàng)建了兩個子進程 B 和進程 C,子進程 B 又創(chuàng)建了三個子進程 D、E、F。

合作完成某些作業(yè)的相關(guān)進程經(jīng)常需要彼此通信來完成作業(yè),這種通信稱為進程間通信(interprocess communication)。我們在后面會探討進程間通信。

其他可用的進程系統(tǒng)調(diào)用包括:申請更多的內(nèi)存(或釋放不再需要的內(nèi)存),等待一個子進程結(jié)束,用另一個程序覆蓋該程序。

有時,需要向一個正在運行的進程傳遞信息,而該進程并沒有等待接收信息。例如,一個進程通過網(wǎng)絡(luò)向另一臺機器上的進程發(fā)送消息進行通信。為了保證一條消息或消息的應(yīng)答不丟失。發(fā)送者要求它所在的操作系統(tǒng)在指定的若干秒后發(fā)送一個通知,這樣如果對方尚未收到確認消息就可以進行重新發(fā)送。在設(shè)定該定時器后,程序可以繼續(xù)做其他工作。

在限定的時間到達后,操作系統(tǒng)會向進程發(fā)送一個?警告信號(alarm signal)。這個信號引起該進程暫時掛起,無論該進程正在做什么,系統(tǒng)將其寄存器的值保存到堆棧中,并開始重新啟動一個特殊的信號處理程,比如重新發(fā)送可能丟失的消息。這些信號是軟件模擬的硬件中斷,除了定時器到期之外,該信號可以通過各種原因產(chǎn)生。許多由硬件檢測出來的陷阱,如執(zhí)行了非法指令或使用了無效地址等,也被轉(zhuǎn)換成該信號并交給這個進程。

系統(tǒng)管理器授權(quán)每個進程使用一個給定的?UID(User IDentification)。每個啟動的進程都會有一個操作系統(tǒng)賦予的 UID,子進程擁有與父進程一樣的 UID。用戶可以是某個組的成員,每個組也有一個?GID(Group IDentification)。

在 UNIX 操作系統(tǒng)中,有一個 UID 是?超級用戶(superuser),或者 Windows 中的管理員(administrator),它具有特殊的權(quán)利,可以違背一些保護規(guī)則。在大型系統(tǒng)中,只有系統(tǒng)管理員掌握著那些用戶可以稱為超級用戶。

地址空間

每臺計算機都有一些主存用來保存正在執(zhí)行的程序。在一個非常簡單的操作系統(tǒng)中,僅僅有一個應(yīng)用程序運行在內(nèi)存中。為了運行第二個應(yīng)用程序,需要把第一個應(yīng)用程序移除才能把第二個程序裝入內(nèi)存。

復(fù)雜一些的操作系統(tǒng)會允許多個應(yīng)用程序同時裝入內(nèi)存中運行。為了防止應(yīng)用程序之間相互干擾(包括操作系統(tǒng)),需要有某種保護機制。雖然此機制是在硬件中實現(xiàn),但卻是由操作系統(tǒng)控制的。

上述觀點涉及對計算機主存的管理和保護。另一種同等重要并與存儲器有關(guān)的內(nèi)容是管理進程的地址空間。通常,每個進程有一些可以使用的地址集合,典型值從 0 開始直到某個最大值。一個進程可擁有的最大地址空間小于主存。在這種情況下,即使進程用完其地址空間,內(nèi)存也會有足夠的內(nèi)存運行該進程。

但是,在許多 32 位或 64 位地址的計算機中,分別有 2^32 或 2^64 字節(jié)的地址空間。如果一個進程有比計算機擁有的主存還大的地址空間,而且該進程希望使用全部的內(nèi)存,那該怎么處理?在早期的計算機中是無法處理的。但是現(xiàn)在有了一種虛擬內(nèi)存的技術(shù),正如前面講到過的,操作系統(tǒng)可以把部分地址空間裝入主存,部分留在磁盤上,并且在需要時來回交換它們。

文件

幾乎所有操作系統(tǒng)都支持的另一個關(guān)鍵概念就是文件系統(tǒng)。如前所述,操作系統(tǒng)的一項主要功能是屏蔽磁盤和其他 I/O 設(shè)備的細節(jié)特性,給程序員提供一個良好、清晰的獨立于設(shè)備的抽象文件模型。創(chuàng)建文件、刪除文件、讀文件和寫文件?都需要系統(tǒng)調(diào)用。在文件可以讀取之前,必須先在磁盤上定位和打開文件,在文件讀過之后應(yīng)該關(guān)閉該文件,有關(guān)的系統(tǒng)調(diào)用則用于完成這類操作。

為了提供保存文件的地方,大多數(shù)個人計算機操作系統(tǒng)都有目錄(directory)?的概念,從而可以把文件分組。比如,學(xué)生可以給每個課程都創(chuàng)建一個目錄,用于保存該學(xué)科的資源,另一個目錄可以存放電子郵件,再有一個目錄可以存放萬維網(wǎng)主頁。這就需要系統(tǒng)調(diào)用創(chuàng)建和刪除目錄、將已有文件放入目錄中,從目錄中刪除文件等。目錄項可以是文件或者目錄,目錄和目錄之間也可以嵌套,這樣就產(chǎn)生了文件系統(tǒng)

進程和文件層次都是以樹狀的結(jié)構(gòu)組織,但這兩種樹狀結(jié)構(gòu)有不少不同之處。一般進程的樹狀結(jié)構(gòu)層次不深(很少超過三層),而文件系統(tǒng)的樹狀結(jié)構(gòu)要深一些,通常會到四層甚至五層。進程樹層次結(jié)構(gòu)是暫時的,通常最多存在幾分鐘,而目錄層次則可能存在很長時間。進程和文件在權(quán)限保護方面也是有區(qū)別的。一般來說,父進程能控制和訪問子進程,而在文件和目錄中通常存在一種機制,使文件所有者之外的其他用戶也能訪問該文件。

目錄層結(jié)構(gòu)中的每一個文件都可以通過從目錄的頂部即?根目錄(Root directory)?開始的路徑名(path name)?來確定。絕對路徑名包含了從根目錄到該文件的所有目錄清單,它們之間用斜杠分隔符分開,在上面的大學(xué)院系文件系統(tǒng)中,文件 CS101 的路徑名是?/Faculty/Prof.Brown/Courses/CS101。最開始的斜杠分隔符代表的是根目錄 /,也就是文件系統(tǒng)的絕對路徑。

出于歷史原因,Windows 下面的文件系統(tǒng)以?\?來作為分隔符,但是 Linux 會以?/?作為分隔符。

在上面的系統(tǒng)中,每個進程會有一個?工作目錄(working directory),對于沒有以斜線開頭給出絕對地址的路徑,將在這個工作目錄下尋找。如果?/Faculty/Prof.Brown?是工作目錄,那么?/Courses/CS101?與上面給定的絕對路徑名表示的是同一個文件。進程可以通過使用系統(tǒng)調(diào)用指定新的工作目錄,從而變更其工作目錄。

在讀寫文件之前,首先需要打開文件,檢查其訪問權(quán)限。若權(quán)限許可,系統(tǒng)將返回一個小整數(shù),稱作文件描述符(file descriptor),供后續(xù)操作使用。若禁止訪問,系統(tǒng)則返回一個錯誤碼。

在 UNIX 中,另一個重要的概念是?特殊文件(special file)。提供特殊文件是為了使 I/O 設(shè)備看起來像文件一般。這樣,就像使用系統(tǒng)調(diào)用讀寫文件一樣,I/O 設(shè)備也可以通過同樣的系統(tǒng)調(diào)用進行讀寫。特殊文件有兩種,一種是塊兒特殊文件(block special file)?和?字符特殊文件(character special file)。塊特殊文件指那些由可隨機存取的塊組成的設(shè)備,如磁盤等。比如打開一個塊特殊文件,然后讀取第 4 塊,程序可以直接訪問設(shè)備的第 4 塊而不必考慮存放在該文件的文件系統(tǒng)結(jié)構(gòu)。類似的,字符特殊文件用于打印機、調(diào)制解調(diào)起和其他接受或輸出字符流的設(shè)備。按照慣例,特殊文件保存在?/dev?目錄中。例如,/devv/lp 是打印機。

還有一種與進程和文件相關(guān)的特性是管道,管道(pipe)?是一種虛文件,他可以連接兩個進程

如果 A 和 B 希望通過管道對話,他們必須提前設(shè)置管道。當(dāng)進程 A 相對進程 B 發(fā)送數(shù)據(jù)時,它把數(shù)據(jù)寫到管道上,相當(dāng)于管道就是輸出文件。這樣,在 UNIX 中兩個進程之間的通信就非常類似于普通文件的讀寫了。

保護

計算機中含有大量的信息,用戶希望能夠?qū)@些信息中有用而且重要的信息加以保護,這些信息包括電子郵件、商業(yè)計劃等,管理這些信息的安全性完全依靠操作系統(tǒng)來保證。例如,文件提供授權(quán)用戶訪問。

比如 UNIX 操作系統(tǒng),UNIX 操作系統(tǒng)通過對每個文件賦予一個 9 位二進制保護代碼,對 UNIX 中的文件實現(xiàn)保護。該保護代碼有三個位子段,一個用于所有者,一個用于與所有者同組(用戶被系統(tǒng)管理員劃分成組)的其他成員,一個用于其他人。每個字段中有一位用于讀訪問,一位用于寫訪問,一位用于執(zhí)行訪問。這些位就是著名的?rwx位。例如,保護代碼?rwxr-x--x?的含義是所有者可以讀、寫或執(zhí)行該文件,其他的組成員可以讀或執(zhí)行(但不能寫)此文件、而其他人可以執(zhí)行(但不能讀和寫)該文件。

shell

操作系統(tǒng)是執(zhí)行系統(tǒng)調(diào)用的代碼。編輯器、編譯器、匯編程序、鏈接程序、使用程序以及命令解釋符等,盡管非常重要,非常有用,但是它們確實不是操作系統(tǒng)的組成部分。下面我們著重介紹一下 UNIX 下的命令提示符,也就是?shell,shell 雖然有用,但它也不是操作系統(tǒng)的一部分,然而它卻能很好的說明操作系統(tǒng)很多特性,下面我們就來探討一下。

shell 有許多種,例如?sh、csh、ksh 以及 bash?等,它們都支持下面這些功能,最早起的 shell 可以追溯到 sh

用戶登錄時,會同時啟動一個 shell,它以終端作為標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出。首先顯示提示符(prompt),它可能是一個美元符號($),提示用戶 shell 正在等待接收命令,假如用戶輸入

date

shell 會創(chuàng)建一個子進程,并運行 date 做為子進程。在該子進程運行期間,shell 將等待它結(jié)束。在子進程完成時,shell 會顯示提示符并等待下一行輸入。

用戶可以將標(biāo)準(zhǔn)輸出重定向到一個文件中,例如

date > file

同樣的,也可以將標(biāo)準(zhǔn)輸入作為重定向

sort <file1> file2

這會調(diào)用 sort 程序來接收 file1 的內(nèi)容并把結(jié)果輸出到 file2。

可以將一個應(yīng)用程序的輸出通過管道作為另一個程序的輸入,因此有

cat file1 file2 file3 | sort > /dev/lp

這會調(diào)用 cat 應(yīng)用程序來合并三個文件,將其結(jié)果輸送到 sort 程序中并按照字典進行排序。sort 應(yīng)用程序又被重定向到 /dev/lp ,顯然這是一個打印操作。

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

我們已經(jīng)可以看到操作系統(tǒng)提供了兩種功能:為用戶提供應(yīng)用程序抽象和管理計算機資源。對于大部分在應(yīng)用程序和操作系統(tǒng)之間的交互主要是應(yīng)用程序的抽象,例如創(chuàng)建、寫入、讀取和刪除文件。計算機的資源管理對用戶來說基本上是透明的。因此,用戶程序和操作系統(tǒng)之間的接口主要是處理抽象。為了真正理解操作系統(tǒng)的行為,我們必須仔細的分析這個接口。

多數(shù)現(xiàn)代操作系統(tǒng)都有功能相同但是細節(jié)不同的系統(tǒng)調(diào)用,引發(fā)操作系統(tǒng)的調(diào)用依賴于計算機自身的機制,而且必須用匯編代碼表達。任何單 CPU 計算機一次執(zhí)行執(zhí)行一條指令。如果一個進程在用戶態(tài)下運行用戶程序,例如從文件中讀取數(shù)據(jù)。那么如果想要把控制權(quán)交給操作系統(tǒng)控制,那么必須執(zhí)行一個異常指令或者系統(tǒng)調(diào)用指令。操作系統(tǒng)緊接著需要參數(shù)檢查找出所需要的調(diào)用進程。操作系統(tǒng)緊接著進行參數(shù)檢查找出所需要的調(diào)用進程。然后執(zhí)行系統(tǒng)調(diào)用,把控制權(quán)移交給系統(tǒng)調(diào)用下面的指令。大致來說,系統(tǒng)調(diào)用就像是執(zhí)行了一個特殊的過程調(diào)用,但是只有系統(tǒng)調(diào)用能夠進入內(nèi)核態(tài)而過程調(diào)用則不能進入內(nèi)核態(tài)

為了能夠了解具體的調(diào)用過程,下面我們以?read?方法為例來看一下調(diào)用過程。像上面提到的那樣,會有三個參數(shù),第一個參數(shù)是指定文件、第二個是指向緩沖區(qū)、第三個參數(shù)是給定需要讀取的字節(jié)數(shù)。就像幾乎所有系統(tǒng)調(diào)用一樣,它通過使用與系統(tǒng)調(diào)用相同的名稱來調(diào)用一個函數(shù)庫,從而從 C 程序中調(diào)用:read。

count = read(fd,buffer,nbytes);

系統(tǒng)調(diào)用在 count 中返回實際讀出的字節(jié)數(shù)。這個值通常與 nbytes 相同,但也可能更小。比如在讀過程中遇到了文件尾的情況。

如果系統(tǒng)調(diào)用不能執(zhí)行,不管是因為無效的參數(shù)還是磁盤錯誤,count 的值都會被置成 -1,然后在全局變量?errno?中放入錯誤信號。程序應(yīng)該進場檢查系統(tǒng)調(diào)用的結(jié)果以了解是否出錯。

系統(tǒng)調(diào)用是通過一系列的步驟實現(xiàn)的,為了更清楚的說明這個概念,我們還以 read 調(diào)用為例,在準(zhǔn)備系統(tǒng)調(diào)用前,首先會把參數(shù)壓入堆棧,如下所示

C 和 C++ 編譯器使用逆序(必須把第一個參數(shù)賦值給 printf (格式字符串),放在堆棧的頂部)。第一個參數(shù)和第三個參數(shù)都是值調(diào)用,但是第二個參數(shù)通過引用傳遞,即傳遞的是緩沖區(qū)的地址(由 & 指示),而不是緩沖的內(nèi)容。然后是 C 調(diào)用系統(tǒng)庫的 read 函數(shù),這也是第四步。

在由匯編語言寫成的庫過程中,一般把系統(tǒng)調(diào)用的編號放在操作系統(tǒng)所期望的地方,如寄存器(第五步)。然后執(zhí)行一個?TRAP?指令,將用戶態(tài)切換到內(nèi)核態(tài),并在內(nèi)核中的一個固定地址開始執(zhí)行第六步。TRAP 指令實際上與過程調(diào)用指令非常相似,它們后面都跟隨一個來自遠處位置的指令,以及供以后使用的一個保存在棧中的返回地址。

TRAP 指令與過程調(diào)用指令存在兩個方面的不同

  • TRAP 指令會改變操作系統(tǒng)的狀態(tài),由用戶態(tài)切換到內(nèi)核態(tài),而過程調(diào)用不改變模式

  • 其次,TRAP 指令不能跳轉(zhuǎn)到任意地址上。根據(jù)機器的體系結(jié)構(gòu),要么跳轉(zhuǎn)到一個單固定地址上,或者指令中有一 8 位長的字段,它給定了內(nèi)存中一張表格的索引,這張表格中含有跳轉(zhuǎn)地址,然后跳轉(zhuǎn)到指定地址上。

跟隨在 TRAP 指令后的內(nèi)核代碼開始檢查系統(tǒng)調(diào)用編號,然后dispatch給正確的系統(tǒng)調(diào)用處理器,這通常是通過一張由系統(tǒng)調(diào)用編號所引用的、指向系統(tǒng)調(diào)用處理器的指針表來完成第七步。此時,系統(tǒng)調(diào)用處理器運行第八步,一旦系統(tǒng)調(diào)用處理器完成工作,控制權(quán)會根據(jù) TRAP 指令后面的指令中返回給函數(shù)調(diào)用庫第九步。這個過程接著以通常的過程調(diào)用返回的方式,返回到客戶應(yīng)用程序,這是第十步。然后調(diào)用完成后,操作系統(tǒng)還必須清除用戶堆棧,然后增加堆棧指針(increment stackpointer),用來清除調(diào)用 read 之前壓入的參數(shù)。從而完成整個 read 調(diào)用過程。

在上面的第九步中我們說道,控制可能返回 TRAP 指令后面的指令,把控制權(quán)再移交給調(diào)用者這個過程中,系統(tǒng)調(diào)用會發(fā)生阻塞,從而避免應(yīng)用程序繼續(xù)執(zhí)行。這么做是有原因的。例如,如果試圖讀鍵盤,此時并沒有任何輸入,那么調(diào)用者就必須被阻塞。在這種情形下,操作系統(tǒng)會檢查是否有其他可以運行的進程。這樣,當(dāng)有用戶輸入 時候,進程會提醒操作系統(tǒng),然后返回第 9 步繼續(xù)運行。

下面,我們會列出一些常用的?POSIX?系統(tǒng)調(diào)用,POSIX 系統(tǒng)調(diào)用大概有 100 多個,它們之中最重要的一些調(diào)用見下表

進程管理

調(diào)用說明
pid = fork()創(chuàng)建與父進程相同的子進程
pid = waitpid(pid, &statloc,options)等待一個子進程終止
s = execve(name,argv,environp)替換一個進程的核心映像
exit(status)終止進程執(zhí)行并返回狀態(tài)

文件管理

調(diào)用說明
fd = open(file, how,...)打開一個文件使用讀、寫
s = close(fd)關(guān)閉一個打開的文件
n = read(fd,buffer,nbytes)把數(shù)據(jù)從一個文件讀到緩沖區(qū)中
n = write(fd,buffer,nbytes)把數(shù)據(jù)從緩沖區(qū)寫到一個文件中
position = iseek(fd,offset,whence)移動文件指針
s = stat(name,&buf)取得文件狀態(tài)信息

目錄和文件系統(tǒng)管理

調(diào)用說明
s = mkdir(nname,mode)創(chuàng)建一個新目錄
s = rmdir(name)刪去一個空目錄
s = link(name1,name2)創(chuàng)建一個新目錄項 name2, 并指向 name1
s = unlink(name)刪去一個目錄項
s = mount(special,name,flag)安裝一個文件系統(tǒng)
s = umount(special)卸載一個文件系統(tǒng)

其他

調(diào)用說明
s = chdir(dirname)改變工作目錄
s = chmod(name,mode)修改一個文件的保護位
s = kill(pid, signal)發(fā)送信號給進程
seconds = time(&seconds)獲取從 1970 年 1 月 1 日至今的時間

上面的系統(tǒng)調(diào)用參數(shù)中有一些公共部分,例如 pid 系統(tǒng)進程 id,fd 是文件描述符,n 是字節(jié)數(shù),position 是在文件中的偏移量、seconds 是流逝時間。

從宏觀角度上看,這些系統(tǒng)調(diào)所提供的服務(wù)確定了多數(shù)操作系統(tǒng)應(yīng)該具有的功能,下面分別來對不同的系統(tǒng)調(diào)用進行解釋

用于進程管理的系統(tǒng)調(diào)用

在 UNIX 中,fork?是唯一可以在 POSIX 中創(chuàng)建進程的途徑,它創(chuàng)建一個原有進程的副本,包括所有的文件描述符、寄存器等內(nèi)容。在 fork 之后,原有進程以及副本(父與子)就分開了。在 fork 過程中,所有的變量都有相同的值,雖然父進程的數(shù)據(jù)通過復(fù)制給子進程,但是后續(xù)對其中任何一個進程的修改不會影響到另外一個。fork 調(diào)用會返回一個值,在子進程中該值為 0 ,并且在父進程中等于子進程的?進程標(biāo)識符(Process IDentified,PID)。使用返回的 PID,就可以看出來哪個是父進程和子進程。

在多數(shù)情況下, 在 fork 之后,子進程需要執(zhí)行和父進程不一樣的代碼。從終端讀取命令,創(chuàng)建一個子進程,等待子進程執(zhí)行命令,當(dāng)子進程結(jié)束后再讀取下一個輸入的指令。為了等待子進程完成,父進程需要執(zhí)行?waitpid?系統(tǒng)調(diào)用,父進程會等待直至子進程終止(若有多個子進程的話,則直至任何一個子進程終止)。waitpid 可以等待一個特定的子進程,或者通過將第一個參數(shù)設(shè)為 -1 的方式,等待任何一個比較老的子進程。當(dāng) waitpid 完成后,會將第二個參數(shù)?statloc?所指向的地址設(shè)置為子進程的退出狀態(tài)(正常或異常終止以及退出值)。有各種可使用的選項,它們由第三個參數(shù)確定。例如,如果沒有已經(jīng)退出的子進程則立刻返回。

那么 shell 該如何使用 fork 呢?在鍵入一條命令后,shell 會調(diào)用 fork 命令創(chuàng)建一個新的進程。這個子進程會執(zhí)行用戶的指令。通過使用?execve?系統(tǒng)調(diào)用可以實現(xiàn)系統(tǒng)執(zhí)行,這個系統(tǒng)調(diào)用會引起整個核心映像被一個文件所替代,該文件由第一個參數(shù)給定。下面是一個簡化版的例子說明 fork、waitpid 和 execve 的使用

#define TRUE 1/* 一直循環(huán)下去 */ while(TRUE){ /* 在屏幕上顯示提示符 */type_prompt(); /* 從終端讀取輸入 */read_command(command,parameters) /* fork 子進程 */if(fork() != 0){ /* 父代碼 *//* 等待子進程執(zhí)行完畢 */waitpid(-1, &status, 0); }else{/* 執(zhí)行命令 *//* 子代碼 */execve(command,parameters,0) } }

一般情況下,execve 有三個參數(shù):將要執(zhí)行的文件名稱,一個指向變量數(shù)組的指針,以及一個指向環(huán)境數(shù)組的指針。這里對這些參數(shù)做一個簡要的說明。

先看一個 shell 指令

cp file1 file2

此命令把 file1 復(fù)制到 file2 文件中,在 shell 執(zhí)行 fork 之后,子進程定位并執(zhí)行文件拷貝,并將源文件和目標(biāo)文件的名稱傳遞給它。

cp 的主程序(以及包含其他大多數(shù) C 程序的主程序)包含聲明

main(argc,argv,envp)

其中 argc 是命令行中參數(shù)數(shù)目的計數(shù),包括程序名稱。對于上面的例子,argc?是 3。第二個參數(shù)argv?是數(shù)組的指針。該數(shù)組的元素 i 是指向該命令行第 i 個字符串的指針。在上面的例子中,argv [0] 指向字符串 cp,argv [1] 指向字符串 file1,argv [2] 指向字符串 file2。main 的第三個參數(shù)是指向環(huán)境的指針,該環(huán)境是一個數(shù)組,含有?name = value?的賦值形式,用以將諸如終端類型以及根目錄等信息傳送給程序。這些變量通常用來確定用戶希望如何完成特定的任務(wù)(例如,使用默認打印機)。在上面的例子中,沒有環(huán)境參數(shù)傳遞給 execve ,所以環(huán)境變量是 0 ,所以 execve 的第三個參數(shù)為 0 。

可能你覺得 execve 過于復(fù)雜,這時候我要鼓勵一下你,execve 可能是 POSIX 的全部系統(tǒng)調(diào)用中最復(fù)雜的一個了,其他都比較簡單。作為一個簡單的例子,我們再來看一下?exit?,這是進程在執(zhí)行完成后應(yīng)執(zhí)行的系統(tǒng)調(diào)用。這個系統(tǒng)調(diào)用有一個參數(shù),它的退出狀態(tài)是 0 - 255 之間,它通過 waitpid 系統(tǒng)調(diào)用中的 statloc 返回給父級。

UNIX 中的進程將內(nèi)存劃分成三個部分:text segment,文本區(qū),例如程序代碼,data segment,數(shù)據(jù)區(qū),例如變量,stack segment,棧區(qū)域。數(shù)據(jù)向上增長而堆棧向下增長,如下圖所示

上圖能說明三個部分的內(nèi)存分配情況,夾在中間的是空閑區(qū),也就是未分配的區(qū)域,堆棧在需要時自動的擠壓空閑區(qū)域,不過數(shù)據(jù)段的擴展是顯示地通過系統(tǒng)調(diào)用?brk?進行的,在數(shù)據(jù)段擴充后,該系統(tǒng)調(diào)用指向一個新地址。但是,這個調(diào)用不是 POSIX 標(biāo)準(zhǔn)中定義的,對于存儲器的動態(tài)分配,鼓勵程序員使用?malloc?函數(shù),而 malloc 的內(nèi)部實現(xiàn)則不是一個適合標(biāo)準(zhǔn)化的主題,因為幾乎沒有程序員直接使用它。

用于文件管理的系統(tǒng)調(diào)用

許多系統(tǒng)調(diào)用都與文件系統(tǒng)有關(guān),要讀寫一個文件,必須先將其打開。這個系統(tǒng)調(diào)用通過絕對路徑名或指向工作目錄的相對路徑名指定要打開文件的名稱,而代碼?O_RDONLY、?O_WRONLY?或?O_RDWR?的含義分別是只讀、只寫或者兩者都可以,為了創(chuàng)建一個新文件,使用?O_CREATE?參數(shù)。然后可使用返回的文件描述符進行讀寫操作。接著,可以使用 close 關(guān)閉文件,這個調(diào)用使得文件描述符在后續(xù)的 open 中被再次使用。

最常用的調(diào)用還是?read?和?write,我們再前面探討過 read 調(diào)用,write 具有與 read 相同的參數(shù)。

盡管多數(shù)程序頻繁的讀寫文件,但是仍有一些應(yīng)用程序需要能夠隨機訪問一個文件的任意部分。與每個文件相關(guān)的是一個指向文件當(dāng)前位置的指針。在順序讀寫時,該指針通常指向要讀出(寫入)的下一個字節(jié)。Iseek?調(diào)用可以改變該位置指針的值,這樣后續(xù)的 read 或 write 調(diào)用就可以在文件的任何地方開始。

Iseek 有三個參數(shù),position = iseek(fd,offset,whence),第一個是文件描述符,第二個是文件位置,第三個是說明該文件位置是相對于文件起始位置,當(dāng)前位置還是文件的結(jié)尾。在修改了指針之后,Iseek 所返回的值是文件中的絕對位置。

UNIX 為每個文件保存了該文件的類型(普通文件、特殊文件、目錄等)、大小,最后修改時間以及其他信息,程序可以通過?stat?系統(tǒng)調(diào)用查看這些信息。s = stat(name,&buf),第一個參數(shù)指定了被檢查的文件;第二個參數(shù)是一個指針,該指針指向存放這些信息的結(jié)構(gòu)。對于一個打開的文件而言,fstat 調(diào)用完成同樣的工作。

用于目錄管理的系統(tǒng)調(diào)用

下面我們探討目錄和整個文件系統(tǒng)的系統(tǒng)調(diào)用,上面探討的是和某個文件有關(guān)的系統(tǒng)調(diào)用。mkdir?和?rmdir?分別用于創(chuàng)建s = mkdir(nname,mode)??和刪除?s = rmdir(name)?空目錄,下一個調(diào)用是?s = link(name1,name2)?它的作用是允許同一個文件以兩個或者多個名稱出現(xiàn),多數(shù)情況下是在不同的目錄中使用 link ,下面我們探討一下 link 是如何工作的

圖中有兩個用戶?ast?和?jim,每個用戶都有他自己的一個目錄和一些文件,如果 ast 要執(zhí)行一個包含下面系統(tǒng)調(diào)用的應(yīng)用程序

link("/usr/jim/memo", "/usr/ast/note");

jim 中的 memo 文件現(xiàn)在會進入到 ast 的目錄中,在 note 名稱下。此后,/usr/jim/memo和?/usr/ast/note?會有相同的名稱。

用戶目錄是保存在 /usr,/user,/home 還是其他位置,都是由本地系統(tǒng)管理員決定的。

要理解 link 是如何工作的需要清楚 link 做了什么操作。UNIX 中的每個文件都有一個獨一無二的版本,也稱作?i - number,i-編號,它標(biāo)示著不同文件的版本。這個 i - 編號是?i-nodes,i-節(jié)點?表的索引。每個文件都會表明誰擁有這個文件,這個磁盤塊的位置在哪,等等。目錄只是一個包含一組(i 編號,ASCII 名稱)對應(yīng)的文件。UNIX 中的第一個版本中,每個目錄項都會有 16 個字節(jié),2 個字節(jié)對應(yīng) i - 編號和 14 個字節(jié)對應(yīng)其名稱。現(xiàn)在需要一個更復(fù)雜的結(jié)構(gòu)需要支持長文件名,但是從概念上講一個目錄仍是一系列(i - 編號,ASCII 名稱)的集合。在上圖中,mail?的 i - 編號為 16,依此類推。link 只是利用某個已有文件的 i - 編號,創(chuàng)建一個新目錄項(也許用一個新名稱)。在上圖 b 中,你會發(fā)現(xiàn)有兩個相同的 70 i - 編號的文件,因此它們需要有相同的文件。如果其中一個使用了?unlink?系統(tǒng)調(diào)用的話,其中一個會被移除,另一個將保留。如果兩個文件都移除了,則 UNIX 會發(fā)現(xiàn)該文件不存在任何沒有目錄項(i - 節(jié)點中的一個域記錄著指向該文件的目錄項),就會把該文件從磁盤中移除。

就像我們上面提到過的那樣,mount?系統(tǒng)?s = mount(special,name,flag)?調(diào)用會將兩個文件系統(tǒng)合并為一個。通常的情況是將根文件系統(tǒng)分布在硬盤(子)分區(qū)上,并將用戶文件分布在另一個(子)分區(qū)上,該根文件系統(tǒng)包含常用命令的二進制(可執(zhí)行)版本和其他使用頻繁的文件。然后,用戶就會插入可讀取的 USB 硬盤。

通過執(zhí)行 mount 系統(tǒng)調(diào)用,USB 文件系統(tǒng)可以被添加到根文件系統(tǒng)中,

如果用 C 語言來執(zhí)行那就是

mount("/dev/sdb0","/mnt",0)

這里,第一個參數(shù)是 USB 驅(qū)動器 0 的塊特殊文件名稱,第二個參數(shù)是被安裝在樹中的位置,第三個參數(shù)說明將要安裝的文件系統(tǒng)是可讀寫的還是只讀的。

當(dāng)不再需要一個文件系統(tǒng)時,可以使用 umount 移除之。

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

除了進程、文件、目錄系統(tǒng)調(diào)用,也存在其他系統(tǒng)調(diào)用的情況,下面我們來探討一下。我們可以看到上面其他系統(tǒng)調(diào)用只有四種,首先來看第一個 chdir,chdir 調(diào)用更改當(dāng)前工作目錄,在調(diào)用

chdir("/usr/ast/test");

后,打開 xyz 文件,會打開?/usr/ast/test/xyz?文件,工作目錄的概念消除了總是需要輸入長文件名的需要。

在 UNIX 系統(tǒng)中,每個文件都會有保護模式,這個模式會有一個讀-寫-執(zhí)行位,它用來區(qū)分所有者、組和其他成員。chmod?系統(tǒng)調(diào)用提供改變文件模式的操作。例如,要使一個文件除了對所有者之外的用戶可讀,你可以執(zhí)行

chmod("file",0644);

kill?系統(tǒng)調(diào)用是用戶和用戶進程發(fā)送信號的方式,如果一個進程準(zhǔn)備好捕捉一個特定的信號,那么在信號捕捉之前,會運行一個信號處理程序。如果進程沒有準(zhǔn)備好捕捉特定的信號,那么信號的到來會殺掉該進程(此名字的由來)。

POSIX 定義了若干時間處理的進程。例如,time?以秒為單位返回當(dāng)前時間,0 對應(yīng)著 1970 年 1 月 1 日。在一臺 32 位字的計算機中,time 的最大值是 (2^32) - 1 秒,這個數(shù)字對應(yīng) 136 年多一點。所以在 2106 年,32 位的 UNIX 系統(tǒng)會發(fā)飆。如果讀者現(xiàn)在有 32 位 UNIX 系統(tǒng),建議在 2106 年更換位 64 位操作系統(tǒng)(偷笑~)。

Win 32 API

上面我們提到的都是 UNIX 系統(tǒng)調(diào)用,現(xiàn)在我們來聊聊 Win 32 中的系統(tǒng)調(diào)用。Windows 和 UNIX 在各自的編程方式上有著根本的不同。UNIX 程序由執(zhí)行某些操作或執(zhí)行其他操作的代碼組成,進行系統(tǒng)調(diào)用以執(zhí)行某些服務(wù)。Windows 系統(tǒng)則不同,Windows 應(yīng)用程序通常是由事件驅(qū)動的。主程序會等待一些事件發(fā)生,然后調(diào)用程序去處理。最簡單的事件處理是鍵盤敲擊和鼠標(biāo)滑過,或者是鼠標(biāo)點擊,或者是插入 USB 驅(qū)動,然后操作系統(tǒng)調(diào)用處理器去處理事件,更新屏幕和更新程序內(nèi)部狀態(tài)。這是與 UNIX 不同的設(shè)計風(fēng)格。

當(dāng)然,Windows 也有系統(tǒng)調(diào)用。在 UNIX 中,系統(tǒng)調(diào)用(比如 read)和系統(tǒng)調(diào)用所使用的調(diào)用庫(例如 read)幾乎是一對一的關(guān)系。而在 Windows 中,情況則大不相同。首先,函數(shù)庫的調(diào)用和實際的系統(tǒng)調(diào)用幾乎是不對應(yīng)的。微軟定義了一系列過程,稱為?Win32應(yīng)用編程接口(Application Programming Interface),程序員通過這套標(biāo)準(zhǔn)的接口來實現(xiàn)系統(tǒng)調(diào)用。這個接口支持從 Windows 95 版本以來所有的 Windows 版本。

Win32 API 調(diào)用的數(shù)量是非常巨大的,有數(shù)千個多。但這些調(diào)用并不都是在內(nèi)核態(tài)的模式下運行時,有一些是在用戶態(tài)的模型下運行。Win32 API 有大量的調(diào)用,用來管理視窗、幾何圖形、文本、字體、滾動條、對話框、菜單以及 GUI 的其他功能。為了使圖形子系統(tǒng)在內(nèi)核態(tài)下運行,需要系統(tǒng)調(diào)用,否則就只有函數(shù)庫調(diào)用。

我們把關(guān)注點放在和 Win32 系統(tǒng)調(diào)用中來,我們可以簡單看一下 Win32 API 中的系統(tǒng)調(diào)用和 UNIX 中有什么不同(并不是所有的系統(tǒng)調(diào)用)

上表中是 UNIX 調(diào)用大致對應(yīng)的 Win32 API 系統(tǒng)調(diào)用,簡述一下上表。CreateProcess?用于創(chuàng)建一個新進程,它把 UNIX 中的 fork 和 execve 兩個指令合成一個,一起執(zhí)行。它有許多參數(shù)用來指定新創(chuàng)建進程的性質(zhì)。Windows 中沒有類似 UNIX 中的進程層次,所以不存在父進程和子進程的概念。在進程創(chuàng)建之后,創(chuàng)建者和被創(chuàng)建者是平等的。WaitForSingleObject?用于等待一個事件,等待的事件可以是多種可能的事件。如果有參數(shù)指定了某個進程,那么調(diào)用者將等待指定的進程退出,這通過?ExitProcess?來完成。

然后是 6 個文件操作,在功能上和 UNIX 的調(diào)用類似,然而在參數(shù)和細節(jié)上是不同的。和 UNIX 中一樣,文件可以打開,讀取,寫入,關(guān)閉。SetFilePointer?和?GetFileAttributesEx?設(shè)置文件的位置并取得文件的屬性。

Windows 中有目錄,目錄分別用?CreateDirectory?以及?RemoveDirectory?API 調(diào)用創(chuàng)建和刪除。也有對當(dāng)前的目錄的標(biāo)記,這可以通過?SetCurrentDirectory?來設(shè)置。使用GetLocalTime?可獲得當(dāng)前時間。

Win32 接口中沒有文件的鏈接、文件系統(tǒng)的 mount、umount 和 stat ,當(dāng)然, Win32 中也有大量 UNIX 中沒有的系統(tǒng)調(diào)用,特別是對 GUI 的管理和調(diào)用。

操作系統(tǒng)結(jié)構(gòu)

下面我們會探討操作系統(tǒng)的幾種結(jié)構(gòu),主要包括單體結(jié)構(gòu)、分層系統(tǒng)、微內(nèi)核、客戶 - 服務(wù)端系統(tǒng)、虛擬機和外核等。下面以此來探討一下

單體系統(tǒng)

到目前為止,在大多數(shù)系統(tǒng)中,整個系統(tǒng)在內(nèi)核態(tài)以單一程序的方式運行。整個操作系統(tǒng)是以程序集合來編寫的,鏈接在一塊形成一個大的二進制可執(zhí)行程序。使用此技術(shù)時,如果系統(tǒng)中的每個過程都提供了前者所需的一些有用的計算,則它可以自由調(diào)用任何其他過程。在單體系統(tǒng)中,調(diào)用任何一個所需要的程序都非常高效,但是上千個不受限制的彼此調(diào)用往往非常臃腫和笨拙,而且單體系統(tǒng)必然存在單體問題,那就是只要系統(tǒng)發(fā)生故障,那么任何系統(tǒng)和應(yīng)用程序?qū)⒉豢捎?#xff0c;這往往是災(zāi)難性的。

在單體系統(tǒng)中構(gòu)造實際目標(biāo)程序時,會首先編譯所有單個過程(或包含這些過程的文件),然后使用系統(tǒng)鏈接器將它們?nèi)拷壎ǖ揭粋€可執(zhí)行文件中

對于單體系統(tǒng),往往有下面幾種建議

  • 需要有一個主程序,用來調(diào)用請求服務(wù)程序

  • 需要一套服務(wù)過程,用來執(zhí)行系統(tǒng)調(diào)用

  • 需要一套服務(wù)程序,用來輔助服務(wù)過程調(diào)用

在單體系統(tǒng)中,對于每個系統(tǒng)調(diào)用都會有一個服務(wù)程序來保障和運行。需要一組實用程序來彌補服務(wù)程序需要的功能,例如從用戶程序中獲取數(shù)據(jù)。可將各種過程劃分為一個三層模型

除了在計算機初啟動時所裝載的核心操作系統(tǒng)外,許多操作系統(tǒng)還支持額外的擴展。比如 I/O 設(shè)備驅(qū)動和文件系統(tǒng)。這些部件可以按需裝載。在 UNIX 中把它們叫做?共享庫(shared library),在 Windows 中則被稱為?動態(tài)鏈接庫(Dynamic Link Library,DLL)。他們的擴展名為?.dll,在?C:\Windows\system32?目錄下存在 1000 多個 DLL 文件,所以不要輕易刪除 C 盤文件,否則可能就炸了哦。

分層系統(tǒng)

分層系統(tǒng)使用層來分隔不同的功能單元。每一層只與該層的上層和下層通信。每一層都使用下面的層來執(zhí)行其功能。層之間的通信通過預(yù)定義的固定接口通信。

分層系統(tǒng)是由?E.W.Dijkstar?和他的學(xué)生在荷蘭技術(shù)學(xué)院所開發(fā)的 THE 系統(tǒng)。

把上面單體系統(tǒng)進一步通用化,就變?yōu)榱艘粋€層次式結(jié)構(gòu)的操作系統(tǒng),它的上層軟件都是在下層軟件的基礎(chǔ)之上構(gòu)建的。該系統(tǒng)分為六層,如下所示

層號功能
5操作員
4用戶程序
3輸入 / 輸出管理
2操作員 - 進程通信
1存儲器和磁鼓管理
0處理器分配和多道程序編程

處理器在 0 層運行,當(dāng)中斷發(fā)生或定時器到期時,由該層完成進程切換;在第 0 層之上,系統(tǒng)由一些連續(xù)的進程組成,編寫這些進程時不用再考慮在單處理器上多進程運行的細節(jié)。內(nèi)存管理在第 1 層,它分配進程的主存空間。第 1 層軟件保證一旦需要訪問某一頁面,該頁面必定已經(jīng)在內(nèi)存中,并且在頁面不需要的時候?qū)⑵湟瞥觥?/p>

第 2 層處理進程與操作員控制臺(即用戶)之間的通信。第 3 層管理 I/O 設(shè)備和相關(guān)的信息流緩沖區(qū)。第 4 層是用戶程序?qū)?#xff0c;用戶程序不用考慮進程、內(nèi)存、控制臺或 I/O 設(shè)備管理等細節(jié)。系統(tǒng)操作員在第 5 層。

微內(nèi)核

在分層方式中,設(shè)計者要確定在哪里劃分?內(nèi)核-用戶?的邊界。傳統(tǒng)上,所有的層都在內(nèi)核中,但是這樣做沒有必要。事實上,盡可能減少內(nèi)核態(tài)中功能可能是更好的做法。因為內(nèi)核中的錯誤很難處理,一旦內(nèi)核態(tài)中出錯誤會拖累整個系統(tǒng)。

所以,為了實現(xiàn)高可靠性,將操作系統(tǒng)劃分成小的、層級之間能夠更好定義的模塊是很有必要的,只有一個模塊 --- 微內(nèi)核 --- 運行在內(nèi)核態(tài),其余模塊可以作為普通用戶進程運行。由于把每個設(shè)備驅(qū)動和文件系統(tǒng)分別作為普通用戶進程,這些模塊中的錯誤雖然會使這些模塊崩潰,但是不會使整個系統(tǒng)死機。

MINIX 3?是微內(nèi)核的代表作,它的具體結(jié)構(gòu)如下

在內(nèi)核的外部,系統(tǒng)的構(gòu)造有三層,它們都在用戶態(tài)下運行,最底層是設(shè)備驅(qū)動器。由于它們都在用戶態(tài)下運行,所以不能物理的訪問 I/O 端口空間,也不能直接發(fā)出 I/O 命令。相反,為了能夠?qū)?I/O 設(shè)備編程,驅(qū)動器構(gòu)建一個結(jié)構(gòu),指明哪個參數(shù)值寫到哪個 I/O 端口,并聲稱一個內(nèi)核調(diào)用,這樣就完成了一次調(diào)用過程。

位于用戶態(tài)的驅(qū)動程序上面是服務(wù)器層,包含有服務(wù)器,它們完成操作系統(tǒng)的多數(shù)工作。由一個或多個文件服務(wù)器管理著文件系統(tǒng),進程管理器創(chuàng)建、銷毀和管理進程。服務(wù)器中有一個特殊的服務(wù)器稱為?再生服務(wù)器(reincarnation server),它的任務(wù)就是檢查服務(wù)器和驅(qū)動程序的功能是否正確,一旦檢查出來錯誤,它就會補上去,無需用戶干預(yù)。這種方式使得系統(tǒng)具有可恢復(fù)性,并具有較高的可靠性。

微內(nèi)核中的內(nèi)核還具有一種?機制?與?策略?分離的思想。比如系統(tǒng)調(diào)度,一個比較簡單的調(diào)度算法是,對每個進程賦予一個優(yōu)先級,并讓內(nèi)核執(zhí)行具有最高優(yōu)先級的進程。這里,內(nèi)核機制就是尋找最高的優(yōu)先級進程并運行。而策略(賦予進程優(yōu)先級)可以在用戶態(tài)中的進程完成。在這種模式中,策略和機制是分離的,從而使內(nèi)核變得更小。

客戶 - 服務(wù)器模式

微內(nèi)核思想的策略是把進程劃分為兩類:服務(wù)器,每個服務(wù)器用來提供服務(wù);客戶端,使用這些服務(wù)。這個模式就是所謂的?客戶-服務(wù)器模式。

客戶 - 服務(wù)器模式會有兩種載體,一種情況是一臺計算機既是客戶又是服務(wù)器,在這種方式下,操作系統(tǒng)會有某種優(yōu)化;但是普遍情況下是客戶端和服務(wù)器在不同的機器上,它們通過局域網(wǎng)或廣域網(wǎng)連接。

客戶通過發(fā)送消息與服務(wù)器通信,客戶端并不需要知道這些消息是在本地機器上處理,還是通過網(wǎng)絡(luò)被送到遠程機器上處理。對于客戶端而言,這兩種情形是一樣的:都是發(fā)送請求并得到回應(yīng)。

越來越多的系統(tǒng),包括家里的 PC,都成為客戶端,而在某地運行的大型機器則成為服務(wù)器。許多 web 就是以這種方式運行的。一臺 PC 向某個服務(wù)器請求一個 Web 頁面,服務(wù)器把 Web 頁面返回給客戶端,這就是典型的客服 - 服務(wù)器模式

文章參考:

《現(xiàn)代操作系統(tǒng)》第四版

https://baike.baidu.com/item/ 操作系統(tǒng) / 192?fr=aladdin

《Modern Operating System》forth edition

http://faculty.cs.niu.edu/~hutchins/csci360/hchnotes/psw.htm

https://www.computerhope.com/jargon/c/clockcyc.htm

《B 站 - 操作系統(tǒng)》

https://www.bilibili.com/video/av9555596?from=search&seid=8107077283516919308

https://en.wikipedia.org/wiki/System_call

http://c.biancheng.net/cpp/html/238.html

http://www.dossier-andreas.net/software_architecture/layers.html

推薦閱讀: 超實用:10 款開發(fā)必備的 VS Code 插件!漲姿勢:10 大主宰世界的牛逼算法!飛機上一般是什么操作系統(tǒng)?墻裂推薦!B 站上的 Python 學(xué)習(xí)資源用了這么久,原來 GitHub 還有這種騷操作?

總結(jié)

以上是生活随笔為你收集整理的当初我要是这么学操作系统就好了(附思维导图)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

天天躁日日躁狠狠躁免费麻豆 | 无套内谢的新婚少妇国语播放 | 女人被爽到呻吟gif动态图视看 | 成 人影片 免费观看 | 亚洲一区二区三区播放 | 国产精品鲁鲁鲁 | 国产又粗又硬又大爽黄老大爷视 | 亚洲啪av永久无码精品放毛片 | 精品一区二区三区无码免费视频 | 国产成人无码午夜视频在线观看 | 欧美精品在线观看 | 男人和女人高潮免费网站 | 桃花色综合影院 | 夜夜躁日日躁狠狠久久av | 对白脏话肉麻粗话av | 日韩少妇内射免费播放 | 国产精品香蕉在线观看 | 中文字幕乱码中文乱码51精品 | 国产一区二区不卡老阿姨 | 国精品人妻无码一区二区三区蜜柚 | 亚洲国产高清在线观看视频 | 欧美日韩综合一区二区三区 | 一本精品99久久精品77 | 黑森林福利视频导航 | 暴力强奷在线播放无码 | 蜜桃臀无码内射一区二区三区 | 国产成人精品一区二区在线小狼 | 十八禁真人啪啪免费网站 | 国产成人无码午夜视频在线观看 | 亚洲精品国产品国语在线观看 | 亚洲精品久久久久久久久久久 | 中文字幕人成乱码熟女app | 美女黄网站人色视频免费国产 | 国产免费无码一区二区视频 | 国产三级精品三级男人的天堂 | 国内揄拍国内精品少妇国语 | 久久久精品456亚洲影院 | 国产成人无码av片在线观看不卡 | 无码人妻黑人中文字幕 | 亚洲啪av永久无码精品放毛片 | 丰满人妻一区二区三区免费视频 | 一本色道久久综合亚洲精品不卡 | 国产熟妇高潮叫床视频播放 | 国产精品香蕉在线观看 | 色噜噜亚洲男人的天堂 | 国产成人一区二区三区在线观看 | 性欧美熟妇videofreesex | 久久综合激激的五月天 | 2019午夜福利不卡片在线 | 久久久久免费看成人影片 | 久久久久久av无码免费看大片 | 日产国产精品亚洲系列 | 日韩亚洲欧美中文高清在线 | 偷窥村妇洗澡毛毛多 | 爱做久久久久久 | 亚洲精品成人av在线 | 乌克兰少妇xxxx做受 | 国产麻豆精品精东影业av网站 | 四十如虎的丰满熟妇啪啪 | 草草网站影院白丝内射 | 亚洲爆乳精品无码一区二区三区 | 婷婷综合久久中文字幕蜜桃三电影 | 东京热一精品无码av | aⅴ亚洲 日韩 色 图网站 播放 | 国产一区二区三区日韩精品 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 麻豆av传媒蜜桃天美传媒 | 国产av人人夜夜澡人人爽麻豆 | 日韩人妻无码一区二区三区久久99 | 久久国语露脸国产精品电影 | 在线а√天堂中文官网 | 久久亚洲日韩精品一区二区三区 | 女人被男人躁得好爽免费视频 | 亚洲爆乳大丰满无码专区 | 四虎影视成人永久免费观看视频 | 少妇一晚三次一区二区三区 | 欧美人与物videos另类 | 成熟人妻av无码专区 | 青青青爽视频在线观看 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 未满成年国产在线观看 | 亚洲一区二区三区在线观看网站 | 牲欲强的熟妇农村老妇女 | 中文字幕精品av一区二区五区 | 熟妇激情内射com | 欧美人与禽zoz0性伦交 | 女人和拘做爰正片视频 | 无套内谢的新婚少妇国语播放 | 一本色道久久综合亚洲精品不卡 | 六十路熟妇乱子伦 | 少妇人妻大乳在线视频 | 国产三级精品三级男人的天堂 | 亚洲精品美女久久久久久久 | 精品无码av一区二区三区 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产亚洲视频中文字幕97精品 | 国产明星裸体无码xxxx视频 | 久久久久人妻一区精品色欧美 | 高清国产亚洲精品自在久久 | 国产av一区二区三区最新精品 | 乱中年女人伦av三区 | 俄罗斯老熟妇色xxxx | 精品欧美一区二区三区久久久 | 在线а√天堂中文官网 | 中文字幕乱码人妻二区三区 | 日韩视频 中文字幕 视频一区 | 老熟女乱子伦 | 久久五月精品中文字幕 | 蜜臀aⅴ国产精品久久久国产老师 | 精品人妻av区 | 无码乱肉视频免费大全合集 | 麻豆国产丝袜白领秘书在线观看 | 性生交片免费无码看人 | 四虎国产精品一区二区 | 无套内谢老熟女 | 午夜精品久久久久久久久 | 丰满少妇女裸体bbw | 精品久久8x国产免费观看 | 国产性生交xxxxx无码 | 国产精品第一国产精品 | 男人的天堂av网站 | 综合激情五月综合激情五月激情1 | 亚洲熟妇色xxxxx欧美老妇y | 国内少妇偷人精品视频 | 久热国产vs视频在线观看 | 亚洲人成影院在线观看 | 天堂无码人妻精品一区二区三区 | 台湾无码一区二区 | 亚洲呦女专区 | 最近中文2019字幕第二页 | 日韩av无码一区二区三区 | 亚洲熟熟妇xxxx | 性色欲情网站iwww九文堂 | 欧美亚洲国产一区二区三区 | 国产手机在线αⅴ片无码观看 | 亚洲欧美日韩成人高清在线一区 | 无码吃奶揉捏奶头高潮视频 | www国产精品内射老师 | 免费无码午夜福利片69 | 亚洲日本在线电影 | 欧美日韩在线亚洲综合国产人 | 欧美人与禽zoz0性伦交 | 男人的天堂2018无码 | 少妇性荡欲午夜性开放视频剧场 | 国产亚洲精品精品国产亚洲综合 | 国精品人妻无码一区二区三区蜜柚 | 国产在线无码精品电影网 | 亚洲区欧美区综合区自拍区 | 少妇性荡欲午夜性开放视频剧场 | 正在播放老肥熟妇露脸 | 色综合久久久无码网中文 | 99久久人妻精品免费二区 | 亚洲日韩av一区二区三区四区 | 国精产品一品二品国精品69xx | 久久综合激激的五月天 | 久久婷婷五月综合色国产香蕉 | 丝袜美腿亚洲一区二区 | 国产精品高潮呻吟av久久 | 桃花色综合影院 | 国产人妖乱国产精品人妖 | 久久zyz资源站无码中文动漫 | 亚洲成在人网站无码天堂 | 免费人成网站视频在线观看 | 无码精品国产va在线观看dvd | 免费国产成人高清在线观看网站 | 97夜夜澡人人爽人人喊中国片 | 偷窥日本少妇撒尿chinese | 漂亮人妻洗澡被公强 日日躁 | 亚洲精品综合五月久久小说 | 一本色道久久综合狠狠躁 | 麻豆果冻传媒2021精品传媒一区下载 | 男女下面进入的视频免费午夜 | 国产亚洲视频中文字幕97精品 | 国产凸凹视频一区二区 | 亚洲熟妇自偷自拍另类 | 99精品久久毛片a片 | 牛和人交xxxx欧美 | 少妇一晚三次一区二区三区 | 中文字幕av无码一区二区三区电影 | 东京热男人av天堂 | 精品无码国产一区二区三区av | 色综合久久中文娱乐网 | 99久久婷婷国产综合精品青草免费 | 18无码粉嫩小泬无套在线观看 | 国产午夜亚洲精品不卡下载 | 青青青爽视频在线观看 | 国产香蕉尹人综合在线观看 | 欧美日本免费一区二区三区 | 亚洲欧洲日本综合aⅴ在线 | 无码av中文字幕免费放 | 久久综合狠狠综合久久综合88 | 日日躁夜夜躁狠狠躁 | 成人女人看片免费视频放人 | 国内精品久久久久久中文字幕 | 国产人妻大战黑人第1集 | 人妻少妇被猛烈进入中文字幕 | 亚洲色欲久久久综合网东京热 | 精品久久久中文字幕人妻 | 国产成人精品无码播放 | 少妇性荡欲午夜性开放视频剧场 | 人妻互换免费中文字幕 | 高清国产亚洲精品自在久久 | 18黄暴禁片在线观看 | 色欲综合久久中文字幕网 | 久久综合香蕉国产蜜臀av | 久久综合久久自在自线精品自 | 一个人免费观看的www视频 | 免费人成在线观看网站 | 水蜜桃亚洲一二三四在线 | 成人欧美一区二区三区黑人 | √天堂中文官网8在线 | 亚洲区小说区激情区图片区 | 爽爽影院免费观看 | 性欧美熟妇videofreesex | 久久精品人妻少妇一区二区三区 | 久在线观看福利视频 | 欧美国产亚洲日韩在线二区 | 欧洲熟妇色 欧美 | 精品aⅴ一区二区三区 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲 另类 在线 欧美 制服 | 久久综合激激的五月天 | 在教室伦流澡到高潮hnp视频 | 夜精品a片一区二区三区无码白浆 | 欧美激情一区二区三区成人 | 亚洲人成影院在线无码按摩店 | 亚洲最大成人网站 | 伊人久久大香线焦av综合影院 | 国产精品多人p群无码 | 熟女少妇在线视频播放 | 爆乳一区二区三区无码 | 欧美老人巨大xxxx做受 | 国产亚洲精品久久久久久 | 粗大的内捧猛烈进出视频 | 国产亚洲人成在线播放 | 午夜免费福利小电影 | 亚洲欧美综合区丁香五月小说 | 亚洲成av人片在线观看无码不卡 | 欧美人与牲动交xxxx | 亚洲欧美日韩国产精品一区二区 | 国产精品亚洲lv粉色 | 亚洲欧美国产精品专区久久 | 呦交小u女精品视频 | 成人毛片一区二区 | 装睡被陌生人摸出水好爽 | 性生交大片免费看女人按摩摩 | 久久久久免费看成人影片 | 国产人妻久久精品二区三区老狼 | 国产日产欧产精品精品app | 亲嘴扒胸摸屁股激烈网站 | 国精品人妻无码一区二区三区蜜柚 | 无码一区二区三区在线 | 成人免费视频视频在线观看 免费 | 国产热a欧美热a在线视频 | 国产艳妇av在线观看果冻传媒 | 宝宝好涨水快流出来免费视频 | 无码中文字幕色专区 | 国产极品美女高潮无套在线观看 | 成人毛片一区二区 | 久久综合香蕉国产蜜臀av | 性欧美熟妇videofreesex | 欧美阿v高清资源不卡在线播放 | 国产色精品久久人妻 | 妺妺窝人体色www在线小说 | 女人被男人躁得好爽免费视频 | 亚洲精品成人av在线 | 麻花豆传媒剧国产免费mv在线 | 久久五月精品中文字幕 | 成人三级无码视频在线观看 | 欧美熟妇另类久久久久久多毛 | 一本久道久久综合狠狠爱 | 久久午夜无码鲁丝片 | 午夜男女很黄的视频 | 强开小婷嫩苞又嫩又紧视频 | 久久99精品国产麻豆 | 亚洲国精产品一二二线 | 欧美丰满熟妇xxxx性ppx人交 | 三级4级全黄60分钟 | 国产精品美女久久久网av | 人妻体内射精一区二区三四 | 欧美成人高清在线播放 | 一本一道久久综合久久 | 国产精品人人爽人人做我的可爱 | 国产午夜福利100集发布 | 四十如虎的丰满熟妇啪啪 | 精品无码一区二区三区的天堂 | aⅴ亚洲 日韩 色 图网站 播放 | 人人妻人人澡人人爽欧美一区九九 | 午夜嘿嘿嘿影院 | 99久久精品无码一区二区毛片 | 55夜色66夜色国产精品视频 | 天天躁夜夜躁狠狠是什么心态 | 初尝人妻少妇中文字幕 | 人人妻人人澡人人爽人人精品浪潮 | 亚洲高清偷拍一区二区三区 | 国产亚洲tv在线观看 | 亚洲中文字幕在线观看 | 成人一区二区免费视频 | 无码人妻丰满熟妇区毛片18 | 久久99精品国产麻豆 | 亚洲日本va午夜在线电影 | 国产综合色产在线精品 | 狠狠亚洲超碰狼人久久 | 国内精品人妻无码久久久影院 | 国产成人精品久久亚洲高清不卡 | 亚洲日本va中文字幕 | 欧美国产日韩亚洲中文 | 日本高清一区免费中文视频 | 成人女人看片免费视频放人 | 国产精品办公室沙发 | 麻豆蜜桃av蜜臀av色欲av | 国产精品久久久久7777 | 亚洲精品美女久久久久久久 | 国产香蕉97碰碰久久人人 | 中文字幕 亚洲精品 第1页 | 青青草原综合久久大伊人精品 | 国产亚洲精品久久久久久久久动漫 | 国产乱码精品一品二品 | 精品欧洲av无码一区二区三区 | 天天拍夜夜添久久精品大 | 国产麻豆精品一区二区三区v视界 | 久久久久成人精品免费播放动漫 | 日韩精品a片一区二区三区妖精 | 日本一卡2卡3卡四卡精品网站 | 大乳丰满人妻中文字幕日本 | 久久无码专区国产精品s | 香港三级日本三级妇三级 | 色综合久久久无码网中文 | 高中生自慰www网站 | 精品人人妻人人澡人人爽人人 | 国产热a欧美热a在线视频 | 少妇性l交大片欧洲热妇乱xxx | 国产亚洲欧美日韩亚洲中文色 | 亚洲精品国产精品乱码视色 | 国产97人人超碰caoprom | av无码久久久久不卡免费网站 | aa片在线观看视频在线播放 | 久久人人爽人人爽人人片ⅴ | 最近免费中文字幕中文高清百度 | 精品 日韩 国产 欧美 视频 | 午夜精品一区二区三区在线观看 | yw尤物av无码国产在线观看 | 欧美激情综合亚洲一二区 | 亚洲综合无码一区二区三区 | 国产国产精品人在线视 | 色一情一乱一伦一区二区三欧美 | 成人综合网亚洲伊人 | 自拍偷自拍亚洲精品被多人伦好爽 | 人妻少妇精品无码专区动漫 | 久久久精品成人免费观看 | 任你躁在线精品免费 | 麻豆国产97在线 | 欧洲 | 四虎影视成人永久免费观看视频 | 国产精品人人妻人人爽 | 成人综合网亚洲伊人 | 国产精品第一国产精品 | 国产av无码专区亚洲a∨毛片 | 亚洲の无码国产の无码步美 | 欧美日韩久久久精品a片 | 婷婷色婷婷开心五月四房播播 | 日韩人妻少妇一区二区三区 | 十八禁视频网站在线观看 | 377p欧洲日本亚洲大胆 | 久久精品国产一区二区三区肥胖 | 亚洲精品国产a久久久久久 | 亚洲天堂2017无码中文 | 疯狂三人交性欧美 | 亚洲精品久久久久久久久久久 | 亚洲娇小与黑人巨大交 | 国产综合色产在线精品 | 国产人妻精品午夜福利免费 | 蜜桃视频插满18在线观看 | 丰满护士巨好爽好大乳 | 国产精品永久免费视频 | 亚洲人交乣女bbw | 无码av最新清无码专区吞精 | 黑人大群体交免费视频 | 久久久久久久女国产乱让韩 | 国产成人亚洲综合无码 | 免费人成网站视频在线观看 | 日产精品99久久久久久 | 亚洲精品午夜无码电影网 | 野狼第一精品社区 | 日韩在线不卡免费视频一区 | 欧美性生交xxxxx久久久 | 日日鲁鲁鲁夜夜爽爽狠狠 | 亚洲精品一区二区三区在线观看 | 特大黑人娇小亚洲女 | 18精品久久久无码午夜福利 | 999久久久国产精品消防器材 | 欧美性生交活xxxxxdddd | 18精品久久久无码午夜福利 | 中文字幕人妻丝袜二区 | 日本肉体xxxx裸交 | 青草青草久热国产精品 | 性色欲网站人妻丰满中文久久不卡 | 人人妻人人澡人人爽欧美一区九九 | 国产9 9在线 | 中文 | 中文精品久久久久人妻不卡 | 亚洲成a人片在线观看无码 | 精品久久久无码中文字幕 | 国产日产欧产精品精品app | 国产精品久久久久影院嫩草 | 国产一区二区三区精品视频 | 永久免费观看国产裸体美女 | 青青青手机频在线观看 | 日日橹狠狠爱欧美视频 | 成人动漫在线观看 | 日韩 欧美 动漫 国产 制服 | 亚洲欧洲日本综合aⅴ在线 | 婷婷五月综合激情中文字幕 | 最新国产乱人伦偷精品免费网站 | 久久久久久a亚洲欧洲av冫 | 波多野结衣高清一区二区三区 | 俺去俺来也在线www色官网 | 国产免费无码一区二区视频 | 午夜成人1000部免费视频 | 久久久国产精品无码免费专区 | 日韩精品久久久肉伦网站 | 久久人人爽人人爽人人片av高清 | 2019午夜福利不卡片在线 | 中文字幕乱码亚洲无线三区 | 午夜精品久久久久久久久 | 人人爽人人澡人人高潮 | 国产精品怡红院永久免费 | 亚洲一区二区三区含羞草 | 亚洲国产欧美日韩精品一区二区三区 | 国产舌乚八伦偷品w中 | 四虎国产精品一区二区 | 日韩在线不卡免费视频一区 | 午夜福利试看120秒体验区 | 亚洲国产欧美日韩精品一区二区三区 | 人妻尝试又大又粗久久 | 久久这里只有精品视频9 | 欧美大屁股xxxxhd黑色 | 国产电影无码午夜在线播放 | 激情内射日本一区二区三区 | 少妇人妻大乳在线视频 | 亚洲精品国产a久久久久久 | 久久成人a毛片免费观看网站 | 国产精品亚洲lv粉色 | 搡女人真爽免费视频大全 | 在线播放免费人成毛片乱码 | 午夜理论片yy44880影院 | 欧美精品无码一区二区三区 | 网友自拍区视频精品 | 色一情一乱一伦 | 一本久道高清无码视频 | 成人无码精品一区二区三区 | 国产成人无码av一区二区 | 99久久人妻精品免费一区 | 亚洲国产av美女网站 | 无码国产乱人伦偷精品视频 | 日本大香伊一区二区三区 | 亚洲区小说区激情区图片区 | 国产成人精品无码播放 | 夜夜影院未满十八勿进 | 偷窥日本少妇撒尿chinese | 老子影院午夜伦不卡 | 人妻熟女一区 | 又黄又爽又色的视频 | 国产精品第一区揄拍无码 | 巨爆乳无码视频在线观看 | 免费乱码人妻系列无码专区 | 日日噜噜噜噜夜夜爽亚洲精品 | 久久天天躁狠狠躁夜夜免费观看 | 亚洲中文字幕在线观看 | 乱人伦人妻中文字幕无码久久网 | 国产精品99爱免费视频 | 亚洲精品久久久久久一区二区 | 久久久久久av无码免费看大片 | 给我免费的视频在线观看 | 人人妻人人藻人人爽欧美一区 | 秋霞成人午夜鲁丝一区二区三区 | 欧美精品一区二区精品久久 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 中文字幕中文有码在线 | 欧美35页视频在线观看 | 国产激情一区二区三区 | 亚洲色欲久久久综合网东京热 | 欧美怡红院免费全部视频 | 国产精品.xx视频.xxtv | 夜夜高潮次次欢爽av女 | www国产亚洲精品久久网站 | 人妻无码αv中文字幕久久琪琪布 | 欧美真人作爱免费视频 | 天天拍夜夜添久久精品大 | av在线亚洲欧洲日产一区二区 | 中文无码精品a∨在线观看不卡 | 性生交大片免费看女人按摩摩 | 又大又黄又粗又爽的免费视频 | 欧美丰满老熟妇xxxxx性 | 日本一区二区更新不卡 | 国产亚洲精品久久久久久国模美 | 免费观看的无遮挡av | 亚洲国产精品一区二区第一页 | 亚洲综合伊人久久大杳蕉 | 性欧美疯狂xxxxbbbb | 久久www免费人成人片 | 综合人妻久久一区二区精品 | 精品无码一区二区三区的天堂 | 国产激情无码一区二区app | 久久亚洲a片com人成 | 亚洲中文字幕无码一久久区 | 久久99热只有频精品8 | 国产精品高潮呻吟av久久 | 乱人伦中文视频在线观看 | 成人试看120秒体验区 | 欧美日韩一区二区综合 | 麻豆成人精品国产免费 | 水蜜桃av无码 | 无码人妻丰满熟妇区毛片18 | 一二三四在线观看免费视频 | 欧美一区二区三区 | 久久久久成人精品免费播放动漫 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 成人精品天堂一区二区三区 | 九月婷婷人人澡人人添人人爽 | 亚洲日本一区二区三区在线 | 无遮无挡爽爽免费视频 | 国产特级毛片aaaaaa高潮流水 | 亚洲国产av精品一区二区蜜芽 | 美女极度色诱视频国产 | 131美女爱做视频 | 欧美日韩亚洲国产精品 | 18精品久久久无码午夜福利 | 小sao货水好多真紧h无码视频 | 福利一区二区三区视频在线观看 | 久久综合九色综合97网 | 日本丰满熟妇videos | 日韩人妻无码中文字幕视频 | 中文亚洲成a人片在线观看 | 永久黄网站色视频免费直播 | 亚洲人成影院在线观看 | 久久无码专区国产精品s | 精品国产一区二区三区四区 | 国产精品人人妻人人爽 | 青青久在线视频免费观看 | 人人妻人人澡人人爽人人精品浪潮 | 在线精品亚洲一区二区 | 日本丰满护士爆乳xxxx | 久久久久se色偷偷亚洲精品av | 香港三级日本三级妇三级 | 无码纯肉视频在线观看 | 精品无人区无码乱码毛片国产 | 亚洲中文字幕成人无码 | 日本肉体xxxx裸交 | 亚洲一区二区三区 | 日本一卡二卡不卡视频查询 | 日本一卡2卡3卡四卡精品网站 | 无码午夜成人1000部免费视频 | 欧美人与禽猛交狂配 | √天堂资源地址中文在线 | а√天堂www在线天堂小说 | 国内丰满熟女出轨videos | 国产精品无码一区二区三区不卡 | 婷婷综合久久中文字幕蜜桃三电影 | 欧美第一黄网免费网站 | 男人和女人高潮免费网站 | 蜜臀aⅴ国产精品久久久国产老师 | www成人国产高清内射 | 伊人久久婷婷五月综合97色 | 亚洲成色在线综合网站 | 久久亚洲中文字幕精品一区 | 久久久久免费看成人影片 | 日本欧美一区二区三区乱码 | 2020最新国产自产精品 | 日本一区二区三区免费播放 | 久精品国产欧美亚洲色aⅴ大片 | 国产sm调教视频在线观看 | 欧美一区二区三区视频在线观看 | 亚洲中文字幕在线观看 | 欧美freesex黑人又粗又大 | 国产乡下妇女做爰 | 亚洲爆乳精品无码一区二区三区 | √天堂中文官网8在线 | 久久久久国色av免费观看性色 | 大肉大捧一进一出好爽视频 | 国产免费久久久久久无码 | 捆绑白丝粉色jk震动捧喷白浆 | 精品 日韩 国产 欧美 视频 | 狂野欧美性猛xxxx乱大交 | 特黄特色大片免费播放器图片 | 久久午夜夜伦鲁鲁片无码免费 | 国产女主播喷水视频在线观看 | 欧美日韩视频无码一区二区三 | 熟妇女人妻丰满少妇中文字幕 | 无码午夜成人1000部免费视频 | 高潮毛片无遮挡高清免费视频 | 九九久久精品国产免费看小说 | 亚洲の无码国产の无码影院 | 任你躁国产自任一区二区三区 | 2020久久香蕉国产线看观看 | 亚洲国产成人av在线观看 | 激情五月综合色婷婷一区二区 | 国产极品视觉盛宴 | 亚洲国产精品无码一区二区三区 | 国产一区二区不卡老阿姨 | 日本一卡2卡3卡四卡精品网站 | 中文字幕乱码亚洲无线三区 | 国产精品理论片在线观看 | 亚洲а∨天堂久久精品2021 | 国产超碰人人爽人人做人人添 | 女人被男人爽到呻吟的视频 | 久久综合久久自在自线精品自 | 亚洲一区二区三区偷拍女厕 | 丰满少妇熟乱xxxxx视频 | 99久久婷婷国产综合精品青草免费 | 成年女人永久免费看片 | 天天做天天爱天天爽综合网 | 亚无码乱人伦一区二区 | 麻豆成人精品国产免费 | 丰满岳乱妇在线观看中字无码 | 131美女爱做视频 | 国产午夜精品一区二区三区嫩草 | 又湿又紧又大又爽a视频国产 | 国产高清av在线播放 | 国产特级毛片aaaaaaa高清 | 精品国产一区二区三区av 性色 | 欧洲精品码一区二区三区免费看 | 亚洲熟妇自偷自拍另类 | 色情久久久av熟女人妻网站 | 成人片黄网站色大片免费观看 | 色欲久久久天天天综合网精品 | 日本又色又爽又黄的a片18禁 | 久久久久成人片免费观看蜜芽 | 亚洲精品中文字幕乱码 | 中国女人内谢69xxxx | 国产精品久久久久久亚洲毛片 | 国产在热线精品视频 | 高清国产亚洲精品自在久久 | 国产精品久久国产三级国 | 性欧美牲交xxxxx视频 | 久久99精品久久久久婷婷 | 亚洲精品国偷拍自产在线麻豆 | 熟妇人妻激情偷爽文 | 久久久国产精品无码免费专区 | 午夜精品久久久内射近拍高清 | 色欲久久久天天天综合网精品 | www国产精品内射老师 | 国产绳艺sm调教室论坛 | 在线观看欧美一区二区三区 | 免费无码一区二区三区蜜桃大 | 人妻互换免费中文字幕 | 国产亚洲精品久久久久久大师 | 国产精品久久久一区二区三区 | 正在播放老肥熟妇露脸 | 88国产精品欧美一区二区三区 | 色妞www精品免费视频 | 国产明星裸体无码xxxx视频 | 97色伦图片97综合影院 | 日韩视频 中文字幕 视频一区 | 日产国产精品亚洲系列 | 成年美女黄网站色大免费视频 | 免费国产成人高清在线观看网站 | 美女张开腿让人桶 | 国产精品无码永久免费888 | 午夜男女很黄的视频 | 国产人妻精品一区二区三区不卡 | 亚洲国产成人av在线观看 | 亚洲va欧美va天堂v国产综合 | 人人爽人人澡人人高潮 | 欧美第一黄网免费网站 | 一区二区传媒有限公司 | 无码人妻少妇伦在线电影 | 99久久亚洲精品无码毛片 | 大肉大捧一进一出视频出来呀 | 免费看少妇作爱视频 | 日本肉体xxxx裸交 | 免费无码一区二区三区蜜桃大 | 精品久久久久久人妻无码中文字幕 | 在线观看欧美一区二区三区 | 日本一卡2卡3卡四卡精品网站 | 久久婷婷五月综合色国产香蕉 | 久久久久亚洲精品男人的天堂 | 99精品国产综合久久久久五月天 | 中文字幕日韩精品一区二区三区 | 麻豆国产人妻欲求不满 | 色婷婷av一区二区三区之红樱桃 | 99在线 | 亚洲 | 1000部夫妻午夜免费 | 亚洲熟妇自偷自拍另类 | 亚洲自偷精品视频自拍 | 成人免费视频视频在线观看 免费 | 在线а√天堂中文官网 | 久久精品女人的天堂av | 国产人妻精品午夜福利免费 | 亚洲经典千人经典日产 | 内射后入在线观看一区 | 伊人久久大香线蕉av一区二区 | 人人妻人人澡人人爽欧美一区九九 | 无码av最新清无码专区吞精 | 欧美怡红院免费全部视频 | 少妇高潮一区二区三区99 | 欧美刺激性大交 | 国产明星裸体无码xxxx视频 | 在线欧美精品一区二区三区 | 亚洲精品成人福利网站 | 少妇人妻大乳在线视频 | 日欧一片内射va在线影院 | 亚洲日韩乱码中文无码蜜桃臀网站 | 欧美老人巨大xxxx做受 | 国产乱人伦偷精品视频 | 帮老师解开蕾丝奶罩吸乳网站 | 久久精品人妻少妇一区二区三区 | 国产精品永久免费视频 | 久久精品人人做人人综合 | 亚洲小说春色综合另类 | 国产猛烈高潮尖叫视频免费 | 女人色极品影院 | 无码福利日韩神码福利片 | 77777熟女视频在线观看 а天堂中文在线官网 | 中文字幕无码日韩欧毛 | 亚洲 欧美 激情 小说 另类 | 夜精品a片一区二区三区无码白浆 | 精品国偷自产在线视频 | 无码纯肉视频在线观看 | 色婷婷综合中文久久一本 | 国产亚洲日韩欧美另类第八页 | 国产精品毛多多水多 | 女人被爽到呻吟gif动态图视看 | av小次郎收藏 | 无套内射视频囯产 | 玩弄人妻少妇500系列视频 | 婷婷丁香五月天综合东京热 | 国产九九九九九九九a片 | 亚洲综合在线一区二区三区 | 日本护士毛茸茸高潮 | 色诱久久久久综合网ywww | 2020久久香蕉国产线看观看 | 日本熟妇乱子伦xxxx | 青青久在线视频免费观看 | 无套内谢老熟女 | 人妻少妇精品视频专区 | 国产亚洲美女精品久久久2020 | 乱人伦人妻中文字幕无码久久网 | 国产av无码专区亚洲a∨毛片 | 人妻插b视频一区二区三区 | av香港经典三级级 在线 | 国产一区二区三区影院 | 性欧美牲交在线视频 | 久久99精品久久久久久动态图 | 欧美人与禽zoz0性伦交 | 国产深夜福利视频在线 | 秋霞成人午夜鲁丝一区二区三区 | 东京热无码av男人的天堂 | 无码av岛国片在线播放 | 亚洲第一网站男人都懂 | 亚洲呦女专区 | 日日碰狠狠丁香久燥 | 亚洲中文字幕无码一久久区 | 丰满岳乱妇在线观看中字无码 | 激情爆乳一区二区三区 | 日韩av激情在线观看 | 中文字幕av日韩精品一区二区 | 国内揄拍国内精品少妇国语 | 亚洲欧美日韩国产精品一区二区 | 鲁一鲁av2019在线 | 中文字幕人妻丝袜二区 | 蜜臀aⅴ国产精品久久久国产老师 | 无码av免费一区二区三区试看 | 少妇太爽了在线观看 | 人妻夜夜爽天天爽三区 | 色综合天天综合狠狠爱 | 在线观看国产一区二区三区 | 亚洲精品综合五月久久小说 | 欧美xxxx黑人又粗又长 | 国产亚洲精品久久久久久国模美 | 特黄特色大片免费播放器图片 | 国产精品久久久久影院嫩草 | 丰满妇女强制高潮18xxxx | 无码人妻黑人中文字幕 | 精品久久久久香蕉网 | 精品成在人线av无码免费看 | www成人国产高清内射 | 福利一区二区三区视频在线观看 | 精品国产一区av天美传媒 | 亚洲中文字幕va福利 | 露脸叫床粗话东北少妇 | 色妞www精品免费视频 | 老熟女重囗味hdxx69 | 亚洲精品国产精品乱码视色 | 成熟女人特级毛片www免费 | 少妇人妻av毛片在线看 | 欧美一区二区三区视频在线观看 | 亚洲狠狠婷婷综合久久 | 国内揄拍国内精品人妻 | 精品久久久久久人妻无码中文字幕 | 色综合天天综合狠狠爱 | 乱码av麻豆丝袜熟女系列 | www国产亚洲精品久久久日本 | 麻豆人妻少妇精品无码专区 | 东京无码熟妇人妻av在线网址 | 欧美精品国产综合久久 | 性欧美大战久久久久久久 | 久久久久成人片免费观看蜜芽 | 在线视频网站www色 | 一区二区三区高清视频一 | 亚洲精品美女久久久久久久 | 高清无码午夜福利视频 | 国产精品成人av在线观看 | 牲欲强的熟妇农村老妇女 | 色一情一乱一伦 | 黑人粗大猛烈进出高潮视频 | 欧美日本精品一区二区三区 | 久激情内射婷内射蜜桃人妖 | 综合网日日天干夜夜久久 | 一二三四社区在线中文视频 | 欧美三级a做爰在线观看 | 亚洲精品综合五月久久小说 | 中文字幕久久久久人妻 | 日日碰狠狠丁香久燥 | 成人免费无码大片a毛片 | 在线成人www免费观看视频 | 久久精品国产亚洲精品 | 野外少妇愉情中文字幕 | 大色综合色综合网站 | 亚洲一区二区三区播放 | 夜精品a片一区二区三区无码白浆 | 波多野结衣乳巨码无在线观看 | 狠狠躁日日躁夜夜躁2020 | aa片在线观看视频在线播放 | 熟妇人妻无乱码中文字幕 | 精品久久久无码人妻字幂 | 国产特级毛片aaaaaa高潮流水 | 中国女人内谢69xxxxxa片 | 欧美变态另类xxxx | 国产成人精品三级麻豆 | 日本精品人妻无码免费大全 | 97se亚洲精品一区 | 国产小呦泬泬99精品 | 5858s亚洲色大成网站www | 蜜臀av无码人妻精品 | 国产精品亚洲а∨无码播放麻豆 | 久久久精品欧美一区二区免费 | 狠狠色丁香久久婷婷综合五月 | 99riav国产精品视频 | 一本无码人妻在中文字幕免费 | 国产精品人人妻人人爽 | 极品尤物被啪到呻吟喷水 | 中文字幕乱码中文乱码51精品 | 精品无码国产一区二区三区av | 大屁股大乳丰满人妻 | 精品一区二区不卡无码av | 日本www一道久久久免费榴莲 | 久久精品国产亚洲精品 | 久久99久久99精品中文字幕 | 精品国产成人一区二区三区 | 激情内射日本一区二区三区 | 丰满人妻一区二区三区免费视频 | 小泽玛莉亚一区二区视频在线 | 福利一区二区三区视频在线观看 | 国产成人综合美国十次 | 理论片87福利理论电影 | 精品无码av一区二区三区 | 国产成人精品视频ⅴa片软件竹菊 | 一本久道高清无码视频 | 精品少妇爆乳无码av无码专区 | 久久久精品国产sm最大网站 | 内射老妇bbwx0c0ck | 国产手机在线αⅴ片无码观看 | 日本一本二本三区免费 | 人妻少妇精品视频专区 | 成人欧美一区二区三区 | 欧美日韩一区二区免费视频 | 性开放的女人aaa片 | 亚洲精品久久久久中文第一幕 | 国产乱子伦视频在线播放 | 成人精品视频一区二区三区尤物 | 精品一区二区三区无码免费视频 | 亚洲精品久久久久中文第一幕 | 99久久精品国产一区二区蜜芽 | 亚洲色成人中文字幕网站 | 天海翼激烈高潮到腰振不止 | 激情内射日本一区二区三区 | 色综合久久88色综合天天 | 麻豆md0077饥渴少妇 | 日本护士毛茸茸高潮 | 国产无遮挡又黄又爽免费视频 | 正在播放老肥熟妇露脸 | 午夜嘿嘿嘿影院 | 窝窝午夜理论片影院 | 国产精品高潮呻吟av久久4虎 | 国产成人无码午夜视频在线观看 | 国产人妻精品午夜福利免费 | 欧美真人作爱免费视频 | 强辱丰满人妻hd中文字幕 | 我要看www免费看插插视频 | 麻豆国产丝袜白领秘书在线观看 | 欧美性猛交内射兽交老熟妇 | 亚洲爆乳精品无码一区二区三区 | 欧美自拍另类欧美综合图片区 | 夜夜影院未满十八勿进 | 1000部啪啪未满十八勿入下载 | 一本一道久久综合久久 | 久久综合香蕉国产蜜臀av | 一本色道婷婷久久欧美 | 亚洲天堂2017无码中文 | а√天堂www在线天堂小说 | 国产激情无码一区二区 | 夜精品a片一区二区三区无码白浆 | 噜噜噜亚洲色成人网站 | 三上悠亚人妻中文字幕在线 | 国产凸凹视频一区二区 | 精品无码av一区二区三区 | 国产又粗又硬又大爽黄老大爷视 | 亚洲国产欧美国产综合一区 | 亚洲性无码av中文字幕 | 高清不卡一区二区三区 | 中文字幕无码日韩专区 | 日本va欧美va欧美va精品 | 欧美 亚洲 国产 另类 | 青青青爽视频在线观看 | 欧美色就是色 | 国产无遮挡吃胸膜奶免费看 | 亚洲精品一区国产 | 少妇久久久久久人妻无码 | 欧美三级a做爰在线观看 | 国产麻豆精品一区二区三区v视界 | 少妇性l交大片欧洲热妇乱xxx | 国产精品欧美成人 | 久久99精品国产.久久久久 | 真人与拘做受免费视频 | 色诱久久久久综合网ywww | 亚洲狠狠婷婷综合久久 | 国产成人精品无码播放 | 亚洲一区二区三区国产精华液 | 娇妻被黑人粗大高潮白浆 | 成人免费视频一区二区 | 美女极度色诱视频国产 | 日韩精品无码一本二本三本色 | 国产又爽又猛又粗的视频a片 | 国产av久久久久精东av | 亚洲综合在线一区二区三区 | 日本免费一区二区三区最新 | 女人被男人爽到呻吟的视频 | 少妇的肉体aa片免费 | 国产av剧情md精品麻豆 | 精品无码国产一区二区三区av | 天堂亚洲2017在线观看 | 国产亚洲人成在线播放 | 麻花豆传媒剧国产免费mv在线 | 亚洲狠狠婷婷综合久久 | 奇米影视7777久久精品人人爽 | 在线成人www免费观看视频 | 亚洲一区av无码专区在线观看 | 丰满少妇高潮惨叫视频 | 亚洲午夜无码久久 | 男女超爽视频免费播放 | 欧美乱妇无乱码大黄a片 | 国产真实伦对白全集 | 男女性色大片免费网站 | 欧美人与牲动交xxxx | 欧美怡红院免费全部视频 | 欧洲熟妇精品视频 | 精品亚洲成av人在线观看 | 亚洲精品中文字幕 | 99精品久久毛片a片 | 97精品国产97久久久久久免费 | 人妻插b视频一区二区三区 | 女高中生第一次破苞av | 国产国产精品人在线视 | 玩弄人妻少妇500系列视频 | 99久久久国产精品无码免费 | 中文字幕+乱码+中文字幕一区 | 伊在人天堂亚洲香蕉精品区 | a在线亚洲男人的天堂 | 国产激情艳情在线看视频 | 亚洲天堂2017无码中文 | 日本大香伊一区二区三区 | 欧美人与牲动交xxxx | 国产精品视频免费播放 | 大胆欧美熟妇xx | 久久久精品456亚洲影院 | 久久精品中文闷骚内射 | 蜜桃av抽搐高潮一区二区 | 日本www一道久久久免费榴莲 | 久久人人爽人人爽人人片av高清 | 亚洲中文字幕av在天堂 | 精品厕所偷拍各类美女tp嘘嘘 | 亚洲国产精华液网站w | 国产精品无码一区二区桃花视频 | 国产sm调教视频在线观看 | 国产麻豆精品一区二区三区v视界 | 亚洲一区二区三区在线观看网站 | 国产无av码在线观看 | 久久亚洲国产成人精品性色 | 伊人久久婷婷五月综合97色 | 国产午夜亚洲精品不卡 | 激情内射亚州一区二区三区爱妻 | 奇米影视7777久久精品 | 精品无码一区二区三区的天堂 | 人妻无码αv中文字幕久久琪琪布 | 性色欲情网站iwww九文堂 | 国产 浪潮av性色四虎 | 国产高清不卡无码视频 | 女人被爽到呻吟gif动态图视看 | 一个人看的www免费视频在线观看 | 亚洲а∨天堂久久精品2021 | 久久精品99久久香蕉国产色戒 | 亚洲成a人片在线观看无码3d | 欧美精品一区二区精品久久 | 欧美xxxxx精品 | 亚洲人交乣女bbw | 精品久久久中文字幕人妻 | 久久综合狠狠综合久久综合88 | 丰满少妇女裸体bbw | 99久久无码一区人妻 | 国产成人无码区免费内射一片色欲 | av无码久久久久不卡免费网站 | 久久久久久久久蜜桃 | 久久久久人妻一区精品色欧美 | 澳门永久av免费网站 | 色 综合 欧美 亚洲 国产 | 中文毛片无遮挡高清免费 | 亚洲狠狠色丁香婷婷综合 | 久久久精品456亚洲影院 | 大肉大捧一进一出视频出来呀 | 欧美一区二区三区 | 鲁一鲁av2019在线 | 国产成人综合色在线观看网站 | 国产精品久久久久久久影院 | 日本熟妇大屁股人妻 | 动漫av网站免费观看 | 国产又爽又猛又粗的视频a片 | 久久亚洲国产成人精品性色 | 一区二区传媒有限公司 | 中文毛片无遮挡高清免费 | 国产激情无码一区二区 | 亚洲色大成网站www | 亚洲乱码国产乱码精品精 | 久久99精品国产.久久久久 | 成人亚洲精品久久久久 | 初尝人妻少妇中文字幕 | 久久久精品国产sm最大网站 | 中文字幕乱码亚洲无线三区 | 少妇高潮喷潮久久久影院 | 日欧一片内射va在线影院 | 99久久人妻精品免费一区 | 国产9 9在线 | 中文 | 高中生自慰www网站 | 久久国内精品自在自线 | 欧美激情内射喷水高潮 | 中文字幕无码日韩欧毛 | 亚洲中文无码av永久不收费 | 亚洲熟妇自偷自拍另类 | a在线观看免费网站大全 | 亚洲色偷偷男人的天堂 | 欧美国产亚洲日韩在线二区 | 蜜臀aⅴ国产精品久久久国产老师 | 成年女人永久免费看片 | 久久精品中文闷骚内射 | 国产午夜视频在线观看 | 精品久久久久香蕉网 | 国产精品毛多多水多 | 国产亚洲视频中文字幕97精品 | 国产精品久久久久久亚洲影视内衣 | 欧美丰满熟妇xxxx性ppx人交 | 蜜臀aⅴ国产精品久久久国产老师 | 无套内射视频囯产 | 国产精品久久国产精品99 | 人人澡人人透人人爽 | 国产偷自视频区视频 | 精品无码一区二区三区爱欲 | 岛国片人妻三上悠亚 | 国产成人人人97超碰超爽8 | 曰韩无码二三区中文字幕 | 久久zyz资源站无码中文动漫 | 日本免费一区二区三区最新 | 国产成人综合在线女婷五月99播放 | 蜜桃视频韩日免费播放 | 欧美怡红院免费全部视频 | 精品国精品国产自在久国产87 | 成人片黄网站色大片免费观看 | 亚洲国产午夜精品理论片 | 久久精品丝袜高跟鞋 | 日韩精品无码免费一区二区三区 | 欧美真人作爱免费视频 | 亚洲の无码国产の无码步美 | 亚洲综合在线一区二区三区 | 久久久久成人片免费观看蜜芽 | 性生交大片免费看女人按摩摩 | 久久国语露脸国产精品电影 | 人人超人人超碰超国产 | 中文字幕无码av激情不卡 | 丰满护士巨好爽好大乳 | 国产精品二区一区二区aⅴ污介绍 | 小鲜肉自慰网站xnxx | 一本久道久久综合狠狠爱 | 久久精品一区二区三区四区 | 免费人成网站视频在线观看 | 最新国产乱人伦偷精品免费网站 | 亚洲精品国产精品乱码视色 | 丰满诱人的人妻3 | 国产偷国产偷精品高清尤物 | 中文字幕无码日韩专区 | 亚洲人成人无码网www国产 | 97夜夜澡人人双人人人喊 | 亚洲性无码av中文字幕 | 天天爽夜夜爽夜夜爽 | 久久综合给合久久狠狠狠97色 | 国产人成高清在线视频99最全资源 | 红桃av一区二区三区在线无码av | 国产激情艳情在线看视频 | 亚洲欧洲日本综合aⅴ在线 | 亚洲人成影院在线观看 | 欧美日韩亚洲国产精品 | 亚洲精品成人福利网站 | 国产人成高清在线视频99最全资源 | 婷婷五月综合缴情在线视频 | 国产高清av在线播放 | 国产成人av免费观看 | 一个人看的www免费视频在线观看 | 小sao货水好多真紧h无码视频 | 人人爽人人澡人人高潮 | 久久精品人妻少妇一区二区三区 | 亚洲第一网站男人都懂 | 成人精品视频一区二区三区尤物 | 激情五月综合色婷婷一区二区 | 久久97精品久久久久久久不卡 | 少女韩国电视剧在线观看完整 | 国产精品无套呻吟在线 | 无码播放一区二区三区 | 天堂在线观看www | 日韩精品一区二区av在线 | 人妻无码αv中文字幕久久琪琪布 | 中文字幕无线码免费人妻 | 日本大香伊一区二区三区 | 又大又黄又粗又爽的免费视频 | 动漫av网站免费观看 | 东北女人啪啪对白 | 欧美精品一区二区精品久久 | 波多野结衣乳巨码无在线观看 | 久久99热只有频精品8 | 东京无码熟妇人妻av在线网址 | 成年美女黄网站色大免费全看 | 国产亚洲欧美在线专区 | 福利一区二区三区视频在线观看 | 日本高清一区免费中文视频 | 国产婷婷色一区二区三区在线 | 人人澡人人透人人爽 | 亚洲啪av永久无码精品放毛片 | 久久 国产 尿 小便 嘘嘘 | 国产成人精品必看 | 好男人社区资源 | 鲁一鲁av2019在线 | 亚洲熟妇色xxxxx欧美老妇 | 精品无码国产一区二区三区av | 18禁黄网站男男禁片免费观看 | 日本精品少妇一区二区三区 | 一个人免费观看的www视频 | 国产精品99爱免费视频 | 欧美精品无码一区二区三区 | 99久久精品无码一区二区毛片 | 88国产精品欧美一区二区三区 | 国产熟妇高潮叫床视频播放 | 日本肉体xxxx裸交 | 国产精品高潮呻吟av久久 | 中文亚洲成a人片在线观看 | 国语精品一区二区三区 | 中文字幕无码av激情不卡 | 2019午夜福利不卡片在线 | 色欲久久久天天天综合网精品 | 麻豆国产97在线 | 欧洲 | 色综合久久久无码中文字幕 | 荫蒂添的好舒服视频囗交 | 日本www一道久久久免费榴莲 | 男女超爽视频免费播放 | 波多野结衣一区二区三区av免费 | 天天躁日日躁狠狠躁免费麻豆 | 中文字幕 亚洲精品 第1页 | 又粗又大又硬毛片免费看 | 无码成人精品区在线观看 | 精品无码国产自产拍在线观看蜜 | 中文字幕av无码一区二区三区电影 | 久久久无码中文字幕久... | 亚洲成熟女人毛毛耸耸多 | 国产做国产爱免费视频 | 日韩av无码中文无码电影 | 特级做a爰片毛片免费69 | 中国大陆精品视频xxxx | 日韩人妻无码中文字幕视频 | 蜜桃臀无码内射一区二区三区 | 丰满人妻被黑人猛烈进入 | 十八禁真人啪啪免费网站 | 亚洲中文字幕无码中文字在线 | 中文字幕无码av波多野吉衣 | 国产人成高清在线视频99最全资源 | 成人一区二区免费视频 | 欧美丰满熟妇xxxx | 国产乱人无码伦av在线a | 成人亚洲精品久久久久 | 国产精品久久久久久久9999 | 精品无码成人片一区二区98 | 女人和拘做爰正片视频 | 欧美35页视频在线观看 | 国产肉丝袜在线观看 | 无码成人精品区在线观看 | 欧美刺激性大交 | 熟女俱乐部五十路六十路av | 无码人中文字幕 | 熟妇人妻中文av无码 | 日韩人妻系列无码专区 | 久久综合九色综合欧美狠狠 | 日本精品高清一区二区 | yw尤物av无码国产在线观看 | 国产艳妇av在线观看果冻传媒 | 欧美人与善在线com | 亚洲欧美色中文字幕在线 | 中文字幕无码免费久久9一区9 | 免费看少妇作爱视频 | 中文字幕乱码人妻二区三区 | 国产精品亚洲lv粉色 | 偷窥日本少妇撒尿chinese | 国产成人无码区免费内射一片色欲 | 亚洲成熟女人毛毛耸耸多 | 亚洲无人区一区二区三区 | 国产激情精品一区二区三区 | 久久亚洲日韩精品一区二区三区 | 久久综合色之久久综合 | 狂野欧美激情性xxxx | 国产精品无码一区二区三区不卡 | 午夜精品一区二区三区的区别 | 牲欲强的熟妇农村老妇女视频 | 国产美女精品一区二区三区 | 日日摸夜夜摸狠狠摸婷婷 | 国产色视频一区二区三区 | 日韩亚洲欧美中文高清在线 | 欧美乱妇无乱码大黄a片 | 亚洲国产午夜精品理论片 | 蜜桃视频韩日免费播放 | 精品国偷自产在线视频 | 东北女人啪啪对白 | 亚洲精品中文字幕久久久久 | 无码吃奶揉捏奶头高潮视频 | 欧美乱妇无乱码大黄a片 | 自拍偷自拍亚洲精品10p | 国产精品va在线播放 | 自拍偷自拍亚洲精品被多人伦好爽 | 超碰97人人射妻 | 亚洲成av人综合在线观看 | 久久精品99久久香蕉国产色戒 | 我要看www免费看插插视频 | 色欲综合久久中文字幕网 | 丰满人妻一区二区三区免费视频 | 国产熟女一区二区三区四区五区 | 欧美真人作爱免费视频 | 国产成人av免费观看 | 精品乱码久久久久久久 | 久久久成人毛片无码 | 日本熟妇大屁股人妻 | 国产高清不卡无码视频 | 无码国内精品人妻少妇 | 国产97人人超碰caoprom | 婷婷色婷婷开心五月四房播播 | 久久久婷婷五月亚洲97号色 | 久激情内射婷内射蜜桃人妖 | 欧洲vodafone精品性 | a片免费视频在线观看 | 日本饥渴人妻欲求不满 | 乱人伦中文视频在线观看 | 日韩少妇白浆无码系列 | 免费无码的av片在线观看 | 伦伦影院午夜理论片 | 国内精品人妻无码久久久影院蜜桃 | 久久久久成人片免费观看蜜芽 | 成人亚洲精品久久久久软件 | 国产片av国语在线观看 | 国产亚洲精品久久久久久久久动漫 | 亚洲一区二区三区在线观看网站 | 精品一二三区久久aaa片 | 色综合久久久无码中文字幕 | 国产精品无码成人午夜电影 | 久久综合香蕉国产蜜臀av | 国产精品18久久久久久麻辣 | 国产激情一区二区三区 | 亚洲伊人久久精品影院 | aⅴ在线视频男人的天堂 | 精品国精品国产自在久国产87 | 丰满妇女强制高潮18xxxx | 日日摸日日碰夜夜爽av | √天堂资源地址中文在线 | 亚洲精品国产精品乱码视色 | 天堂а√在线地址中文在线 | 国产av人人夜夜澡人人爽麻豆 | 久久久久久九九精品久 | 中文字幕中文有码在线 | 亚洲精品国产品国语在线观看 | 性色欲情网站iwww九文堂 | 亲嘴扒胸摸屁股激烈网站 | 波多野结衣高清一区二区三区 | √天堂资源地址中文在线 | 99riav国产精品视频 | 中文精品久久久久人妻不卡 | 国产在线精品一区二区高清不卡 | 影音先锋中文字幕无码 | 精品无码一区二区三区的天堂 | 99久久久无码国产aaa精品 | 在线精品国产一区二区三区 | 妺妺窝人体色www在线小说 | 无码av免费一区二区三区试看 | 国产在线一区二区三区四区五区 | 国产高清不卡无码视频 | 日韩av激情在线观看 | 色欲久久久天天天综合网精品 | 久久aⅴ免费观看 | 国产精品高潮呻吟av久久4虎 | 老司机亚洲精品影院无码 | 久久久婷婷五月亚洲97号色 | 蜜臀aⅴ国产精品久久久国产老师 | 亚洲爆乳精品无码一区二区三区 | 99久久精品无码一区二区毛片 | 未满小14洗澡无码视频网站 | 在教室伦流澡到高潮hnp视频 | 1000部夫妻午夜免费 | 扒开双腿疯狂进出爽爽爽视频 | 久久综合给久久狠狠97色 | 九月婷婷人人澡人人添人人爽 | 久久国产精品精品国产色婷婷 | 色噜噜亚洲男人的天堂 | 又粗又大又硬毛片免费看 | 性色av无码免费一区二区三区 | 亚洲精品成人福利网站 | 久久久国产一区二区三区 | 天堂а√在线地址中文在线 | 国产亚洲精品久久久久久国模美 | 人妻插b视频一区二区三区 | 67194成是人免费无码 | 爆乳一区二区三区无码 | 久久五月精品中文字幕 | 精品国精品国产自在久国产87 | 国产莉萝无码av在线播放 | 无码人妻丰满熟妇区五十路百度 | 精品久久久久久人妻无码中文字幕 | 亚洲精品久久久久久一区二区 | 国产人妻人伦精品1国产丝袜 | 国产av无码专区亚洲a∨毛片 | 亚洲精品国产第一综合99久久 | 色婷婷香蕉在线一区二区 | 亚洲国产精品毛片av不卡在线 | 2019nv天堂香蕉在线观看 | 一本久道久久综合狠狠爱 | 日本大乳高潮视频在线观看 | 少妇无码吹潮 | 久久aⅴ免费观看 | 在线播放无码字幕亚洲 | 中文字幕av日韩精品一区二区 | 欧美人与禽zoz0性伦交 | 伊人久久大香线焦av综合影院 | 亚洲国产成人a精品不卡在线 | 国产成人无码av在线影院 | 中文字幕无码av波多野吉衣 | 精品久久久久久人妻无码中文字幕 | 99精品国产综合久久久久五月天 | 亚洲国产精品毛片av不卡在线 | 色偷偷人人澡人人爽人人模 | 国产成人精品视频ⅴa片软件竹菊 | 青青草原综合久久大伊人精品 | 久久综合给久久狠狠97色 | 亚洲成a人一区二区三区 | 强伦人妻一区二区三区视频18 | 全球成人中文在线 | 人妻天天爽夜夜爽一区二区 | 日日碰狠狠丁香久燥 | 日日摸天天摸爽爽狠狠97 | 人妻无码久久精品人妻 | 亚洲无人区一区二区三区 | 老司机亚洲精品影院无码 | 亲嘴扒胸摸屁股激烈网站 | 精品日本一区二区三区在线观看 | 亚洲最大成人网站 | 中文字幕人妻无码一区二区三区 | 99er热精品视频 | 国产精品手机免费 | 亚洲一区二区三区偷拍女厕 | 亚洲中文字幕在线无码一区二区 | 日本大乳高潮视频在线观看 | 夜夜高潮次次欢爽av女 | 精品一区二区不卡无码av | 永久黄网站色视频免费直播 | 国产极品美女高潮无套在线观看 | 狠狠色噜噜狠狠狠狠7777米奇 | 男女性色大片免费网站 | 亚洲狠狠婷婷综合久久 | 国产免费观看黄av片 | 人妻体内射精一区二区三四 | 久久综合给久久狠狠97色 | 丰满少妇女裸体bbw | 日日夜夜撸啊撸 | 国产亚洲人成a在线v网站 | 欧洲精品码一区二区三区免费看 | 少妇人妻大乳在线视频 | 国产成人无码a区在线观看视频app | 午夜精品一区二区三区在线观看 | 巨爆乳无码视频在线观看 | 亚洲精品一区二区三区大桥未久 | 粉嫩少妇内射浓精videos | v一区无码内射国产 | 成熟女人特级毛片www免费 | 成 人 网 站国产免费观看 | 日本www一道久久久免费榴莲 | 伊人色综合久久天天小片 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 久久无码中文字幕免费影院蜜桃 | 桃花色综合影院 | 国产精品igao视频网 | 久久精品一区二区三区四区 | √8天堂资源地址中文在线 | 无码午夜成人1000部免费视频 | 免费男性肉肉影院 | 夜先锋av资源网站 | 又黄又爽又色的视频 | 久久久久久a亚洲欧洲av冫 | 亚洲爆乳精品无码一区二区三区 | 国产精品-区区久久久狼 | 亚洲自偷精品视频自拍 | 正在播放东北夫妻内射 | 亚洲成色www久久网站 | 亚洲区小说区激情区图片区 | 天天摸天天透天天添 | 午夜精品久久久久久久久 | 黑人巨大精品欧美黑寡妇 | 国产人妻精品一区二区三区 | 久青草影院在线观看国产 | 国产精品理论片在线观看 | 免费人成在线观看网站 | 亚洲色成人中文字幕网站 | www国产亚洲精品久久久日本 | 青青青手机频在线观看 | 999久久久国产精品消防器材 | 国产亚洲精品久久久久久 | 中文字幕av日韩精品一区二区 | 巨爆乳无码视频在线观看 | 免费观看又污又黄的网站 | 中文字幕无线码 | 日韩精品成人一区二区三区 | 中文字幕无码日韩欧毛 | 鲁鲁鲁爽爽爽在线视频观看 | 国产成人无码av一区二区 | 亚洲精品一区二区三区大桥未久 | 亚洲中文字幕成人无码 | 国产三级精品三级男人的天堂 | 亚洲人成网站在线播放942 | 欧美精品无码一区二区三区 | 国产 浪潮av性色四虎 | 国产午夜福利100集发布 | 亚洲色无码一区二区三区 | 久久无码专区国产精品s | 高潮毛片无遮挡高清免费 | 精品熟女少妇av免费观看 | 天天做天天爱天天爽综合网 | 天天燥日日燥 | 精品人妻人人做人人爽夜夜爽 | 特级做a爰片毛片免费69 | 成人免费视频在线观看 | 亚洲精品一区国产 | 久久97精品久久久久久久不卡 | 中文字幕无线码免费人妻 | 无遮挡啪啪摇乳动态图 | 国产精品国产自线拍免费软件 | 女人高潮内射99精品 | 欧美激情综合亚洲一二区 | 国产又粗又硬又大爽黄老大爷视 | 性做久久久久久久久 | 亚洲国产成人a精品不卡在线 | 久久综合网欧美色妞网 | 亚洲精品欧美二区三区中文字幕 | 成人一区二区免费视频 | 丰满少妇女裸体bbw | 在教室伦流澡到高潮hnp视频 | 伊人久久大香线焦av综合影院 | 少妇高潮一区二区三区99 | 少妇的肉体aa片免费 | 图片小说视频一区二区 | 欧美自拍另类欧美综合图片区 | 纯爱无遮挡h肉动漫在线播放 | 麻豆国产丝袜白领秘书在线观看 | 国产成人无码av片在线观看不卡 | 特黄特色大片免费播放器图片 | 无码人妻少妇伦在线电影 | 亚洲精品无码人妻无码 | 日韩人妻系列无码专区 | 成人精品视频一区二区三区尤物 | 国产精品毛多多水多 | 亚洲色欲久久久综合网东京热 | 妺妺窝人体色www在线小说 | 青草青草久热国产精品 | 无码人妻精品一区二区三区下载 | 精品无人区无码乱码毛片国产 | 国产精品18久久久久久麻辣 | 婷婷六月久久综合丁香 | 国产黑色丝袜在线播放 | 国精产品一品二品国精品69xx | 国内精品久久毛片一区二区 | 人人妻人人澡人人爽欧美一区 | 国产另类ts人妖一区二区 | 少妇太爽了在线观看 | 中文精品无码中文字幕无码专区 | 国产精品久久久久久久9999 | 麻豆av传媒蜜桃天美传媒 | 亚洲综合另类小说色区 | 欧美日韩视频无码一区二区三 | 亚洲精品一区三区三区在线观看 | 三级4级全黄60分钟 | 亚洲日本va午夜在线电影 | 欧美日韩精品 | 少妇性l交大片欧洲热妇乱xxx | 精品国产一区二区三区av 性色 | 国产成人午夜福利在线播放 | 久久午夜夜伦鲁鲁片无码免费 | 国产国产精品人在线视 | 无码帝国www无码专区色综合 | 精品久久久久久人妻无码中文字幕 | 久久久www成人免费毛片 | 乱码午夜-极国产极内射 | 中文亚洲成a人片在线观看 | 亚洲一区二区三区香蕉 | 亚洲熟悉妇女xxx妇女av | 国产乱人伦av在线无码 | 亚洲精品久久久久久久久久久 | 玩弄人妻少妇500系列视频 | 中文精品久久久久人妻不卡 | 老熟妇仑乱视频一区二区 | 99国产欧美久久久精品 | 亚洲日韩中文字幕在线播放 | 日本丰满护士爆乳xxxx | 久久久久亚洲精品中文字幕 | 美女极度色诱视频国产 | 亚洲熟熟妇xxxx | 久久久久久九九精品久 | 粉嫩少妇内射浓精videos | 婷婷六月久久综合丁香 | 在线а√天堂中文官网 | 亚洲 日韩 欧美 成人 在线观看 | 久久久亚洲欧洲日产国码αv | 玩弄人妻少妇500系列视频 | 少妇邻居内射在线 | 熟妇人妻激情偷爽文 | 丰满肥臀大屁股熟妇激情视频 | 老太婆性杂交欧美肥老太 | 99精品无人区乱码1区2区3区 | 天下第一社区视频www日本 | 荡女精品导航 | 亚洲精品中文字幕乱码 | 大肉大捧一进一出视频出来呀 | 国产va免费精品观看 | www国产精品内射老师 | 午夜福利不卡在线视频 | 国产精品久久久久久久9999 | 亚洲熟妇色xxxxx欧美老妇y | 亚洲精品综合一区二区三区在线 | 亚洲无人区午夜福利码高清完整版 | 在线视频网站www色 | 东京无码熟妇人妻av在线网址 | 亚洲热妇无码av在线播放 | 中文字幕 人妻熟女 | 日日摸夜夜摸狠狠摸婷婷 | 亚洲精品久久久久久一区二区 | 少妇被黑人到高潮喷出白浆 | 野狼第一精品社区 | 午夜时刻免费入口 | 狂野欧美激情性xxxx | 在线a亚洲视频播放在线观看 | 国产精品久久国产三级国 | 亚洲中文字幕在线观看 | 亚洲成a人片在线观看无码3d | 国产国产精品人在线视 | 国产美女精品一区二区三区 | 强伦人妻一区二区三区视频18 | 国产熟妇高潮叫床视频播放 | 国产一区二区不卡老阿姨 | 久久综合给久久狠狠97色 | 性色av无码免费一区二区三区 | 久久国产精品_国产精品 | 成人无码精品一区二区三区 | 在线亚洲高清揄拍自拍一品区 | 久久精品国产日本波多野结衣 | 巨爆乳无码视频在线观看 | 国产美女精品一区二区三区 | 久久五月精品中文字幕 | 中国大陆精品视频xxxx | 国产av无码专区亚洲a∨毛片 | 性欧美大战久久久久久久 | 国产成人综合美国十次 | 色偷偷人人澡人人爽人人模 | 综合人妻久久一区二区精品 | 初尝人妻少妇中文字幕 | 精品久久久久久人妻无码中文字幕 | 久久亚洲日韩精品一区二区三区 | 黄网在线观看免费网站 | 中文精品久久久久人妻不卡 | 国产精品久久久久久亚洲影视内衣 | 国产精品久久久久无码av色戒 | 人人澡人人透人人爽 | 亚洲熟熟妇xxxx | 欧美xxxx黑人又粗又长 | 狠狠综合久久久久综合网 | 丰满肥臀大屁股熟妇激情视频 | 久久久无码中文字幕久... | 国产在线aaa片一区二区99 | 欧美 丝袜 自拍 制服 另类 | 性欧美videos高清精品 | 国産精品久久久久久久 | 丰满少妇熟乱xxxxx视频 | 免费国产黄网站在线观看 | 无码av最新清无码专区吞精 | 99久久亚洲精品无码毛片 | 日韩人妻系列无码专区 | 午夜成人1000部免费视频 | 国产超碰人人爽人人做人人添 | 无码国产色欲xxxxx视频 | 色老头在线一区二区三区 | 亚洲s色大片在线观看 | 天天躁夜夜躁狠狠是什么心态 | 亚洲成a人片在线观看日本 | 亚洲小说图区综合在线 | 亚洲色大成网站www国产 | 日韩少妇白浆无码系列 | 国产亚洲精品久久久久久大师 | 人人澡人摸人人添 | 99久久精品无码一区二区毛片 | 丰满岳乱妇在线观看中字无码 | 亚洲啪av永久无码精品放毛片 | 亚洲中文字幕成人无码 | 久久国产自偷自偷免费一区调 | 亚洲一区二区三区四区 | 激情国产av做激情国产爱 | 77777熟女视频在线观看 а天堂中文在线官网 | 精品久久久久香蕉网 | 成年美女黄网站色大免费全看 | 亚洲国产精品久久久天堂 | 精品国产国产综合精品 | 成人精品一区二区三区中文字幕 | 牲欲强的熟妇农村老妇女 | 国产乱人伦偷精品视频 | 国精产品一品二品国精品69xx | 国精产品一区二区三区 | 亚洲精品国产a久久久久久 | 国产乱人伦av在线无码 | 性欧美大战久久久久久久 | 亚拍精品一区二区三区探花 | 久久zyz资源站无码中文动漫 | 日韩人妻系列无码专区 | 久久久久久久久蜜桃 | 国产亚洲精品久久久久久久久动漫 | 久久99国产综合精品 | 巨爆乳无码视频在线观看 | 久久精品国产一区二区三区肥胖 | 精品欧美一区二区三区久久久 | 国产精品国产三级国产专播 | 中文字幕人妻无码一区二区三区 | 成年美女黄网站色大免费视频 | 日韩人妻无码一区二区三区久久99 | 亚洲精品一区三区三区在线观看 | 国内精品久久久久久中文字幕 | 亚洲人亚洲人成电影网站色 | 无码午夜成人1000部免费视频 | 国产亚洲精品久久久闺蜜 | 亚洲 激情 小说 另类 欧美 | 国产精品视频免费播放 | 久久午夜无码鲁丝片秋霞 | 日本在线高清不卡免费播放 | 国产真实乱对白精彩久久 | 国内精品久久久久久中文字幕 | 欧美精品无码一区二区三区 | 免费观看又污又黄的网站 | 中文字幕乱码人妻无码久久 | 国产精品人妻一区二区三区四 | 十八禁视频网站在线观看 | 国产xxx69麻豆国语对白 | 久久久久久久人妻无码中文字幕爆 | 亚洲中文字幕无码一久久区 | 精品人妻中文字幕有码在线 | 欧美日韩在线亚洲综合国产人 | 中文字幕乱码人妻无码久久 | 乱码av麻豆丝袜熟女系列 |