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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

操作系统的极简教程(二)

發布時間:2025/3/21 windows 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统的极简教程(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

操作系統博物館

操作系統已經存在了大半個世紀,在這段時期內,出現了各種類型的操作系統,但并不是所有的操作系統都很出名,下面就羅列一些比較出名的操作系統

大型機操作系統

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

服務器操作系統

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

多處理器操作系統

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

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

個人計算機系統

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

掌上計算機操作系統

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

嵌入式操作系統

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

傳感器節點操作系統

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

每個傳感器節點是一個配有 CPU、RAM、ROM 以及一個或多個環境傳感器的實實在在的計算機。節點上運行一個小型但是真是的操作系統,通常這個操作系統是事件驅動的,可以響應外部事件。

實時操作系統

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

智能卡操作系統

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

操作系統概念

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

進程

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

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

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

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

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

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

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

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

其他可用的進程系統調用包括:申請更多的內存(或釋放不再需要的內存),等待一個子進程結束,用另一個程序覆蓋該程序。

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

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

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

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

地址空間

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

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

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

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

文件

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

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

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

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

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

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

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

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

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

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

保護

計算機中含有大量的信息,用戶希望能夠對這些信息中有用而且重要的信息加以保護,這些信息包括電子郵件、商業計劃等,管理這些信息的安全性完全依靠操作系統來保證。例如,文件提供授權用戶訪問。

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

shell

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

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

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

date

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

用戶可以將標準輸出重定向到一個文件中,例如

date > file

同樣的,也可以將標準輸入作為重定向

sort <file1> file2

這會調用 sort 程序來接收 file1 的內容并把結果輸出到 file2。

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

cat file1 file2 file3 | sort > /dev/lp

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

系統調用

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

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

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

count = read(fd,buffer,nbytes);

系統調用在 count 中返回實際讀出的字節數。這個值通常與 nbytes 相同,但也可能更小。比如在讀過程中遇到了文件尾的情況。

如果系統調用不能執行,不管是因為無效的參數還是磁盤錯誤,count 的值都會被置成 -1,然后在全局變量?errno?中放入錯誤信號。程序應該進場檢查系統調用的結果以了解是否出錯。

系統調用是通過一系列的步驟實現的,為了更清楚的說明這個概念,我們還以 read 調用為例,在準備系統調用前,首先會把參數壓入堆棧,如下所示

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

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

TRAP 指令與過程調用指令存在兩個方面的不同

  • TRAP 指令會改變操作系統的狀態,由用戶態切換到內核態,而過程調用不改變模式

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

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

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

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

進程管理

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

文件管理

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

目錄和文件系統管理

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

其他

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

上面的系統調用參數中有一些公共部分,例如 pid 系統進程 id,fd 是文件描述符,n 是字節數,position 是在文件中的偏移量、seconds 是流逝時間。

從宏觀角度上看,這些系統調所提供的服務確定了多數操作系統應該具有的功能,下面分別來對不同的系統調用進行解釋

用于進程管理的系統調用

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

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

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

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

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

先看一個 shell 指令

cp file1 file2

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

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

main(argc,argv,envp)

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

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

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

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

用于文件管理的系統調用

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

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

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

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

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

用于目錄管理的系統調用

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

圖中有兩個用戶?ast?和?jim,每個用戶都有他自己的一個目錄和一些文件,如果 ast 要執行一個包含下面系統調用的應用程序

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

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

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

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

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

通過執行 mount 系統調用,USB 文件系統可以被添加到根文件系統中,

如果用 C 語言來執行那就是

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

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

當不再需要一個文件系統時,可以使用 umount 移除之。

其他系統調用

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

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

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

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

chmod("file",0644);

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

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

Win 32 API

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

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

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

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

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

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

Windows 中有目錄,目錄分別用?CreateDirectory?以及?RemoveDirectory?API 調用創建和刪除。也有對當前的目錄的標記,這可以通過?SetCurrentDirectory?來設置。使用GetLocalTime?可獲得當前時間。

Win32 接口中沒有文件的鏈接、文件系統的 mount、umount 和 stat ,當然, Win32 中也有大量 UNIX 中沒有的系統調用,特別是對 GUI 的管理和調用。

操作系統結構

下面我們會探討操作系統的幾種結構,主要包括單體結構、分層系統、微內核、客戶-服務端系統、虛擬機和外核等。下面以此來探討一下

單體系統

到目前為止,在大多數系統中,整個系統在內核態以單一程序的方式運行。整個操作系統是以程序集合來編寫的,鏈接在一塊形成一個大的二進制可執行程序。使用此技術時,如果系統中的每個過程都提供了前者所需的一些有用的計算,則它可以自由調用任何其他過程。在單體系統中,調用任何一個所需要的程序都非常高效,但是上千個不受限制的彼此調用往往非常臃腫和笨拙,而且單體系統必然存在單體問題,那就是只要系統發生故障,那么任何系統和應用程序將不可用,這往往是災難性的。

在單體系統中構造實際目標程序時,會首先編譯所有單個過程(或包含這些過程的文件),然后使用系統鏈接器將它們全部綁定到一個可執行文件中

對于單體系統,往往有下面幾種建議

  • 需要有一個主程序,用來調用請求服務程序

  • 需要一套服務過程,用來執行系統調用

  • 需要一套服務程序,用來輔助服務過程調用

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

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

分層系統

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

分層系統是由?E.W.Dijkstar?和他的學生在荷蘭技術學院所開發的 THE 系統。

把上面單體系統進一步通用化,就變為了一個層次式結構的操作系統,它的上層軟件都是在下層軟件的基礎之上構建的。該系統分為六層,如下所示

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

處理器在 0 層運行,當中斷發生或定時器到期時,由該層完成進程切換;在第 0 層之上,系統由一些連續的進程組成,編寫這些進程時不用再考慮在單處理器上多進程運行的細節。內存管理在第 1 層,它分配進程的主存空間。第 1 層軟件保證一旦需要訪問某一頁面,該頁面必定已經在內存中,并且在頁面不需要的時候將其移出。

第 2 層處理進程與操作員控制臺(即用戶)之間的通信。第 3 層管理 I/O 設備和相關的信息流緩沖區。第 4 層是用戶程序層,用戶程序不用考慮進程、內存、控制臺或 I/O 設備管理等細節。系統操作員在第 5 層。

微內核

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

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

MINIX 3?是微內核的代表作,它的具體結構如下

在內核的外部,系統的構造有三層,它們都在用戶態下運行,最底層是設備驅動器。由于它們都在用戶態下運行,所以不能物理的訪問 I/O 端口空間,也不能直接發出 I/O 命令。相反,為了能夠對 I/O 設備編程,驅動器構建一個結構,指明哪個參數值寫到哪個 I/O 端口,并聲稱一個內核調用,這樣就完成了一次調用過程。

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

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

客戶-服務器模式

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

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

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

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

文章參考:

《現代操作系統》第四版

https://baike.baidu.com/item/操作系統/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站-操作系統》

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

總結

以上是生活随笔為你收集整理的操作系统的极简教程(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

99精品久久精品一区二区 | 日本性xxx | 欧美大荫蒂xxx | 丁香 婷婷 激情 | 天天天干天天天操 | 蜜臀91丨九色丨蝌蚪老版 | 色综合久久网 | 日日天天av | 亚洲天堂精品视频 | 久草在线高清 | 中文字幕在线播放日韩 | 黄色软件视频网站 | 女人18毛片a级毛片一区二区 | 91精品国产一区二区三区 | 人人搞人人干 | 天天综合中文 | 国内一级片在线观看 | 国产亚洲免费的视频看 | 日本一区二区三区视频在线播放 | 在线观看黄网站 | 国产亚洲久久 | aaa日本高清在线播放免费观看 | 久久精品欧美一区二区三区麻豆 | 国产精品免费看 | 日韩字幕 | 在线看毛片网站 | 一区二区精 | 91视频高清 | 久久久久久久亚洲精品 | 69夜色精品国产69乱 | 亚洲精品系列 | 国产录像在线观看 | 国产一级不卡毛片 | 丰满少妇一级 | 热久久国产 | 肉色欧美久久久久久久免费看 | 麻豆精品视频在线观看免费 | 99热精品国产一区二区在线观看 | 天天在线视频色 | 日韩免费视频观看 | 国产在线观看黄 | 日韩欧美视频免费看 | 亚洲成人精品在线 | 亚洲成av人片在线观看无 | 91精品色 | www黄色 | 日韩av一区二区在线影视 | 国产成人精品av | 久久视频在线观看中文字幕 | 国产精品99久久久精品免费观看 | 99精品在线免费观看 | 成人精品一区二区三区中文字幕 | 91视频com| 国产成人三级在线播放 | 日本中文字幕免费观看 | 久久黄色成人 | av性在线| av无限看 | 色中色资源站 | 国产精品一区二区av影院萌芽 | 亚洲天堂网站 | 久久久免费高清视频 | 久久不射电影院 | 国产精品免费在线 | 99视频精品 | 天天天干夜夜夜操 | 国产精品久久久久久超碰 | а天堂中文最新一区二区三区 | 成人av动漫在线 | 久久久午夜精品理论片中文字幕 | 免费视频xnxx com | 五月天久久婷 | 日本黄色免费电影网站 | 日日夜夜干 | 欧美韩日在线 | 超碰999| 在线观看日韩视频 | 免费视频久久久久久久 | 毛片网在线 | 久久精品欧美一区二区三区麻豆 | 视频在线观看国产 | 国产又粗又猛又黄视频 | 天天射天天干天天插 | 日韩在线免费视频观看 | 奇米影视777影音先锋 | 国产精品门事件 | 国产一区在线视频观看 | 9992tv成人免费看片 | 91人人揉日日捏人人看 | 国产精品久久久久国产精品日日 | 福利视频导航网址 | 中文字幕综合在线 | 97国产精品亚洲精品 | 人人爽人人爽人人片av | 999国内精品永久免费视频 | 亚洲综合色播 | 国产精品久久久久久电影 | 日韩大片在线 | 亚洲精品视频在线观看免费视频 | 国产福利在线免费 | 久久草网站 | 最新中文字幕 | 亚洲影视资源 | 99久久精品免费视频 | 中文字幕精品三级久久久 | 国产丝袜高跟 | 日本天天操 | 国产精品免费av | 欧洲一区二区三区精品 | 99热在线观看免费 | 久久久久久毛片 | 国内视频 | 一性一交视频 | 狠狠gao | 一本一本久久a久久精品综合小说 | 高清一区二区三区 | 久久精品国产美女 | 亚洲另类在线视频 | 中文字幕在线观看视频一区二区三区 | 国产91精品一区二区 | 国产亚洲精品成人 | 天堂av在线免费 | av成人免费在线 | 99热都是精品 | 又紧又大又爽精品一区二区 | 特级黄录像视频 | 亚洲精品在线一区二区 | 天天干,狠狠干 | 国产精品久久久久久久久久久免费 | 国产在线视频一区 | 中文字幕第一 | 久久网站最新地址 | 97精品在线视频 | 久久不射网站 | 欧美黑吊大战白妞欧美 | 日韩最新av | 日日躁夜夜躁xxxxaaaa | 欧美另类调教 | 中文字幕五区 | 99九九热只有国产精品 | 国产不卡在线看 | 国内一级片在线观看 | 超碰人人干人人 | 久久综合亚洲鲁鲁五月久久 | 精品国产免费一区二区三区五区 | 国产视频精品视频 | 丁香五月亚洲综合在线 | av免费在线免费观看 | 99色在线视频 | 国产v在线观看 | 91桃色国产在线播放 | 国产精品 欧美 日韩 | av青草 | 在线观看免费视频你懂的 | 456免费视频| 免费看的黄色网 | 丁香婷婷激情五月 | 黄色亚洲在线 | 午夜黄色一级片 | 精品免费| 在线天堂中文www视软件 | 有码视频在线观看 | 久久久久久久av麻豆果冻 | 日韩经典一区二区三区 | 久久人人爽人人爽人人 | 一级黄色a视频 | 成人中文字幕av | 黄色精品一区二区 | 日韩在线无 | 丝袜av一区 | 一区二区三区免费网站 | 91九色最新 | 新版资源中文在线观看 | 亚洲高清久久久 | 免费av小说 | 中文十次啦 | 亚洲理论片在线观看 | av东方在线 | 久久高视频| 黄色av观看| 欧美另类69 | 在线亚州 | 超碰在线网 | 色资源网免费观看视频 | 国产精品乱码久久久久 | 毛片美女网站 | 免费午夜视频在线观看 | 91在线看视频 | 欧美极品裸体 | 亚洲闷骚少妇在线观看网站 | 精品国偷自产国产一区 | 亚洲精品视频一二三 | 丰满少妇一级 | 国产精品成人一区二区 | 亚洲欧美国产视频 | 久久综合久久久 | 草樱av | 丁香综合| 亚洲欧美日本一区二区三区 | 精品视频国产一区 | 日日夜夜狠狠干 | 久久婷五月 | 精品国产一二区 | 九九久久久 | 91丨九色丨高潮 | www黄免费 | 中文字幕日韩无 | 色妞色视频一区二区三区四区 | 国产免费专区 | 在线观看免费av网 | 亚洲精品无 | 中国一级片在线 | 久久久久久久久久久精 | 久久久久久久福利 | 国产精品原创av片国产免费 | 国产精品手机在线播放 | 一本一本久久aa综合精品 | 日韩乱码中文字幕 | 在线日韩av | 美女在线免费观看视频 | 一区二区精品久久 | 精品福利网 | 国产一区麻豆 | 在线午夜电影神马影院 | 成人久久国产 | 91精品久久久久久综合五月天 | 亚洲视频综合在线 | 99久久久国产精品美女 | 一级片视频免费观看 | 亚洲黄色大片 | 久久av电影| 国内外成人在线视频 | 日韩电影中文字幕 | 亚洲狠狠操 | www.com久久 | 亚洲少妇自拍 | 在线看中文字幕 | 最新av在线播放 | 精品综合久久久 | 亚洲激情 欧美激情 | 免费观看视频黄 | 又黄又爽的视频在线观看网站 | 久久久午夜精品福利内容 | 97狠狠干 | 91日本在线播放 | 日韩欧美大片免费观看 | 国产va在线 | av一级在线观看 | 婷婷激情久久 | 日韩在线观看第一页 | av色综合网| 激情久久伊人 | 色婷婷www | 黄色三几片 | 亚洲精品1区2区3区 超碰成人网 | 91视频网址入口 | 国产99久久久国产精品 | 天天干天天操天天做 | 91探花系列在线播放 | 99精品视频免费看 | 日韩伦理片一区二区三区 | av解说在线观看 | 波多野结衣电影久久 | 成人av在线看 | 国产一区二区在线免费视频 | 欧美成人手机版 | 久久视频一区 | 欧美国产一区在线 | 国产视频一| 久久激情五月丁香伊人 | 99精品国产免费久久久久久下载 | 国产69精品久久app免费版 | 免费人人干 | 欧美性生活久久 | 久久午夜电影 | av.com在线| 美女天天操 | 日韩大片免费观看 | 久久人人爽爽人人爽人人片av | 一区二区不卡在线观看 | 一区二区三区在线免费播放 | 91精品免费在线观看 | 又污又黄的网站 | 国产99久久久久 | 欧美另类高清 | 97天天干| 奇人奇案qvod| 国产专区视频 | 亚洲激色 | 97超碰资源 | 99视频在线免费观看 | 久久久电影网站 | 精品在线99 | 天天综合人人 | 天堂av官网| 免费黄色一区 | 国产精品com | 又黄又爽又湿又无遮挡的在线视频 | 三级动态视频在线观看 | 亚洲国内精品 | 毛片的网址 | 一 级 黄 色 片免费看的 | 亚洲精品玖玖玖av在线看 | 手机在线视频福利 | 日韩在线网址 | 毛片美女网站 | 97高清视频 | 国产精品一区二区三区四 | 色综合久久五月天 | 97视频人人澡人人爽 | 亚洲人成精品久久久久 | 97人人超碰在线 | 99久久精品国产免费看不卡 | 夜色资源站国产www在线视频 | 少妇高潮流白浆在线观看 | 伊人久久av| 国产精品欧美久久久久三级 | www.eeuss影院av撸 | 日韩免费视频在线观看 | 99精品免费久久久久久久久日本 | 免费观看成人av | 日韩黄色av网站 | 亚洲国产一区二区精品专区 | 国产操在线 | 亚州精品成人 | 日韩在线视频二区 | 91在线视频观看免费 | 国产一区二区三区免费观看视频 | 国产福利a | 午夜成人免费电影 | 亚洲一级片av | 免费在线观看成人av | 久久午夜网 | 麻豆视频成人 | 最近免费中文字幕大全高清10 | 精品亚洲一区二区 | 国产中出在线观看 | 一区二区不卡高清 | 黄色成人av在线 | 正在播放国产精品 | 中文字幕在线播放日韩 | 日韩精品在线免费观看 | 日韩在线视频网站 | 天天操人人要 | 久久久久亚洲天堂 | 亚洲综合欧美激情 | 91视频在线网址 | 91久久国产综合精品女同国语 | 久久免费av | 欧美十八 | 欧美日韩中 | 久久超级碰 | 欧美一区二区在线看 | av网址最新 | 国产午夜精品久久 | 黄色免费网站大全 | 天天插伊人| 色爽网站 | 日日夜夜精品免费 | 一区二区三区 亚洲 | 五月天丁香视频 | 欧美激情视频一二三区 | 日韩一区二区在线免费观看 | 精品国产伦一区二区三区观看方式 | 日日噜噜噜噜夜夜爽亚洲精品 | 六月婷操 | 欧美午夜激情网 | 久久亚洲成人网 | 国产小视频在线免费观看 | 婷婷在线色 | 视频在线观看一区 | 日本在线精品视频 | 99一区二区三区 | 久草网在线观看 | 免费情趣视频 | 国产成人三级在线观看 | 日本精品视频在线播放 | 成人一级在线观看 | 国产精品免费一区二区三区在线观看 | 国产一区久久久 | 97超碰精品| 丁香六月五月婷婷 | 丁香五香天综合情 | 精品av在线播放 | 久久精品一二区 | 天天操天天操天天 | 97狠狠干| 天天干天天操天天射 | 男女激情片在线观看 | 九七在线视频 | 色姑娘综合网 | 亚洲成a人片在线观看网站口工 | 久久免费av电影 | 日韩欧美在线第一页 | 国产精品国产三级国产不产一地 | 久久情侣偷拍 | 99久久www免费 | 欧美久久久 | 国产精品久久婷婷六月丁香 | 中文字幕日本特黄aa毛片 | 亚洲成人av一区 | 亚洲撸撸 | 欧美另类成人 | 美女视频免费精品 | 在线国产激情视频 | 国产网红在线观看 | 久久黄色a级片 | 欧美午夜精品久久久久久孕妇 | 久热免费在线观看 | 日韩精品一卡 | 日日干av | 日日干激情五月 | 国产在线观看地址 | 天天拍天天色 | 亚洲一区日韩精品 | 中文字幕视频播放 | 综合五月婷婷 | 中文字幕麻豆 | 免费在线观看a v | 久久精彩免费视频 | 五月婷婷视频在线观看 | 国产麻豆精品一区二区 | 国产特级毛片aaaaaaa高清 | 色国产精品 | 亚洲精品国产自产拍在线观看 | 日韩最新在线视频 | 91女子私密保健养生少妇 | 超级碰碰碰免费视频 | 亚洲欧美日韩精品一区二区 | 亚州免费视频 | 中文字幕乱码电影 | 中文字幕一区二区三区四区在线视频 | 成人aⅴ视频| 亚洲人成影院在线 | 999精品网| 超碰在线观看97 | av免费片 | 91精品资源 | av一级一片 | av在线官网 | 欧美精品久久99 | 91精品婷婷国产综合久久蝌蚪 | 久久久久久久久久久高潮一区二区 | 最近中文字幕免费av | 二区精品视频 | 一区二区三区久久 | 狠狠的干狠狠的操 | 午夜视频在线观看一区 | 蜜臀av性久久久久蜜臀av | 久久99视频免费观看 | 2024国产精品视频 | 久久私人影院 | 欧美久久久久 | 在线综合 亚洲 欧美在线视频 | 人成电影网| 日韩精品免费在线播放 | 精品一区二区6 | 午夜影院一级 | 91成人网在线观看 | 中文字幕一区二区三区在线播放 | 五月婷婷丁香激情 | 91精品久久久久久久久久入口 | 麻豆一区二区 | 久草观看视频 | 免费看国产一级片 | 国产精品久久久av | 日韩免费电影网站 | 日韩精品视频网站 | 亚洲乱亚洲乱亚洲 | 27xxoo无遮挡动态视频 | 日韩精品一区二区三区在线视频 | 91精品啪| 亚洲专区一二三 | 在线免费观看视频一区二区三区 | 粉嫩高清一区二区三区 | 国产视频一区二区在线观看 | 色噜噜在线观看视频 | 久草国产在线 | 国产又粗又硬又爽的视频 | 超碰人人91 | 一区二区三区动漫 | 国产精品成人久久久久久久 | 国产精品国产三级在线专区 | 日韩视频1 | 亚洲精品国产品国语在线 | 国内久久精品视频 | 中文字幕在线观看资源 | 国产日韩欧美在线一区 | 亚洲黄色免费在线看 | 午夜精品中文字幕 | 四虎在线永久免费观看 | www久久com| 亚洲天堂激情 | 黄色一级大片在线观看 | 欧洲亚洲女同hd | a级国产片 | 成年人免费电影在线观看 | 日本论理电影 | 黄色毛片一级片 | 国产成人av网站 | 午夜精品久久久久久久99无限制 | av女优中文字幕在线观看 | 最近字幕在线观看第一季 | www.综合网.com| 激情五月伊人 | 91人人射 | 色偷偷男人的天堂av | 久久影视精品 | 亚洲欧美偷拍另类 | 最新av在线网址 | 久久dvd | 在线播放亚洲激情 | 在线观看深夜福利 | 久久免费毛片 | 激情欧美在线观看 | 欧美综合在线视频 | 在线免费观看视频一区二区三区 | 色99视频 | 天天综合网在线 | 日本中文在线播放 | 懂色av一区二区三区蜜臀 | 亚洲国产精品500在线观看 | 色www免费视频 | 亚洲成人xxx | 久久99日韩 | 在线观看亚洲专区 | 免费黄色av | 天天操天天怕 | 中文字幕123区 | 国产破处视频在线播放 | 五月婷社区 | 成人免费 在线播放 | 亚洲视频久久 | 在线免费看黄色 | 在线成人一区二区 | 男女激情片在线观看 | 人人精品久久 | 精品产品国产在线不卡 | 国产精品亚洲精品 | 就要干b | 国产午夜精品一区二区三区嫩草 | 精品久久久久久亚洲综合网 | 成人黄色av免费在线观看 | 国产亚洲精品久久久久久电影 | 久久精品成人热国产成 | 国产又粗又长的视频 | 少妇超碰在线 | 又黄又爽的视频在线观看网站 | 一区二区三区四区五区在线 | 操操日 | 久久99精品久久久久久久久久久久 | 在线观看视频国产 | 精品国产伦一区二区三区免费 | 狠狠狠色丁香综合久久天下网 | 国产精品中文字幕在线 | 天天se天天cao天天干 | 91成人在线视频观看 | 欧美一二三区在线观看 | 中文字幕精品在线 | 黄色的视频网站 | 久草综合在线观看 | 天天干,天天操 | 婷婷伊人五月天 | 成人福利av | 最新av在线免费观看 | 国产精品免费久久久久久 | 中文字幕之中文字幕 | 久久久久久蜜桃一区二区 | 在线免费看片 | 国产一区二区在线免费播放 | 成人免费在线观看电影 | 久久久免费观看视频 | 91视频大全| 999久久国产精品免费观看网站 | 亚洲一区二区三区四区在线视频 | 色婷婷成人网 | 久热色超碰 | 国产裸体bbb视频 | 国产精品久久久久久av | 天天草天天爽 | 超碰人人草人人 | 国产精品成人免费一区久久羞羞 | 天天干天天玩天天操 | 色婷婷在线视频 | 中文字幕在线一二 | 欧洲精品久久久久毛片完整版 | 亚洲一区二区三区毛片 | 久久99精品一区二区三区三区 | 一区三区视频在线观看 | 精品久久久久久久久中文字幕 | 精品日本视频 | 日韩一级片观看 | 91九色porny在线 | 国产精品九九久久久久久久 | 精品亚洲男同gayvideo网站 | 91网站在线视频 | 日韩专区在线播放 | 激情五月婷婷激情 | 天天爱天天操 | 久草免费在线观看 | 国产资源精品 | 在线免费观看视频一区二区三区 | 亚洲国产视频a | 亚州av网站 | 中文字字幕在线 | 亚洲一区精品人人爽人人躁 | 亚洲春色成人 | 国产一级片毛片 | 久久九九影视网 | 韩日在线一区 | 在线精品在线 | 91chinese在线 | 欧美另类激情 | 久久99热精品这里久久精品 | 久久久精品在线观看 | 久久桃花网 | 丁香综合激情 | 亚洲精品777 | 日韩v在线 | 国产精品理论在线观看 | 色综合久久网 | 91免费看黄| 黄色av电影一级片 | 色网免费观看 | 久久av一区二区三区亚洲 | 日韩激情免费视频 | 99在线精品视频观看 | 五月天网站在线 | 日韩高清在线一区二区 | 国产高清在线不卡 | 91精品国产乱码久久 | 国产精品一区二区久久精品爱涩 | 超碰人人乐 | 久久午夜精品视频 | 天天色天天射综合网 | 久久影视精品 | 亚洲成人在线免费 | 国产精品第72页 | 色五月情 | 成人一级视频在线观看 | 狠狠色噜噜狠狠狠合久 | 久久久久免费精品国产小说色大师 | 日韩精品免费 | 黄色av免费在线 | 超碰公开在线观看 | 成人午夜影视 | 国产精品乱码高清在线看 | 狠狠干.com | 麻豆传媒在线免费看 | 天天操天天干天天 | 亚洲一区av | 天天操·夜夜操 | 日韩在线观看三区 | 国产精品久久久久久久久久久杏吧 | 97国产情侣爱久久免费观看 | 久久69精品久久久久久久电影好 | 亚洲欧洲精品一区二区精品久久久 | 国产成人一区二区在线观看 | 日韩av一卡二卡三卡 | 激情文学综合丁香 | 日韩成人高清在线 | 中文字幕黄色网 | 久久精品一区二区三区视频 | 国产三级午夜理伦三级 | av在线一级 | 午夜电影av| 中文字幕在线播放日韩 | 午夜在线免费观看视频 | 麻豆首页 | 91精品久久久久久综合五月天 | 婷婷在线播放 | 免费av电影网站 | 免费看毛片网站 | 欧美日韩视频观看 | 又黄又刺激视频 | 久久精品免费电影 | 中文字幕在线观看完整版 | 91精品国产自产老师啪 | 日本精品在线看 | 国产理伦在线 | 欧美日本在线观看视频 | 日韩成片 | 日韩网站在线看片你懂的 | 免费福利在线观看 | 一本色道久久综合亚洲二区三区 | 欧美日韩视频在线播放 | 免费av视屏| 夜夜夜草| 天堂v中文 | 丁香婷婷综合色啪 | 国产成人av在线影院 | 玖玖爱免费视频 | 麻豆 free xxxx movies hd | 97精品国产97久久久久久久久久久久 | 国产 欧美 在线 | 国产资源免费在线观看 | a视频在线观看免费 | 国产精品6999成人免费视频 | 99精品欧美一区二区三区 | 国产成人99久久亚洲综合精品 | 在线你懂 | 婷婷激情久久 | 亚洲精品视频国产 | 在线观看免费一区 | 91在线视频免费91 | 91九色国产在线 | 69视频网站 | 国产亚洲精品中文字幕 | 日韩欧美在线观看 | 精品一二三区 | 日韩精品一区二区三区第95 | 精品久久久99 | 狠狠躁夜夜躁人人爽视频 | 国产视频在线一区二区 | 又黄又爽又刺激的视频 | 日韩在线不卡视频 | 最新av中文字幕 | 国产精品久久久久999 | 日韩av资源站 | 久草视频在线播放 | 久久国产精品99久久久久久丝袜 | 欧美激情精品久久久久久免费 | 亚洲天堂在线观看完整版 | 黄色网www | 免费视频一区二区 | 午夜精品一二三区 | 欧美色综合| 狠狠躁夜夜躁人人爽超碰91 | 日韩大片在线免费观看 | 成人丝袜| 久久久久久久av | 国产视频一区在线播放 | 一区二区三区四区五区在线视频 | 久久中文字幕导航 | 99re亚洲国产精品 | 色七七亚洲影院 | 中文理论片 | 色婷婷综合久色 | 黄色av影视 | 四虎8848免费高清在线观看 | 免费又黄又爽视频 | 99久久久久成人国产免费 | 久久综合激情 | 人人澡超碰碰97碰碰碰软件 | 久久精品人 | 一区二区三区四区精品视频 | 久久成人综合视频 | 欧美一级视频免费看 | 九九九热精品 | 日本一区二区三区免费观看 | a黄色片| 日韩黄色中文字幕 | 亚洲欧洲成人 | 久久精品波多野结衣 | 欧美精品在线观看 | 久久tv| 四虎在线免费 | 少妇bbbb揉bbbb日本 | 日韩欧美在线视频一区二区 | 天天爱综合| 日本h视频在线观看 | 欧美一级片免费在线观看 | 国产精品自产拍在线观看 | 97在线观看免费观看 | 色网站黄 | 成人av片免费观看app下载 | 婷婷伊人综合亚洲综合网 | a午夜电影| 99久久综合狠狠综合久久 | 黄色毛片在线 | 美女网站视频免费黄 | 国产精品久久久久永久免费观看 | 91在线观看视频网站 | 射九九 | 97成人精品区在线播放 | 色精品视频 | 中文字幕在线观看视频一区二区三区 | 欧美污在线观看 | 久草网在线视频 | 国产精品久久久久永久免费观看 | 中文字幕在线一区二区三区 | 一区 二区电影免费在线观看 | 亚洲天堂视频在线 | 成人理论电影 | 国产成人免费在线 | 91九色精品女同系列 | 天天舔天天射天天操 | 美女网站在线 | 九九视频这里只有精品 | 亚洲高清在线视频 | 狠狠狠狠狠狠 | 亚洲成人免费观看 | 玖草影院 | 国产精品aⅴ | 久久99精品国产麻豆宅宅 | 久草网免费 | 成人午夜剧场在线观看 | 免费精品视频在线 | 欧美日韩高清一区 | 高清av免费一区中文字幕 | 免费在线色 | 日韩综合精品 | 国产美女视频免费观看的网站 | 国产伦精品一区二区三区四区视频 | 一区二区三区四区五区在线 | 日本一区二区三区免费观看 | 国产尤物一区二区三区 | 精品在线免费观看 | 黄色片免费看 | 欧美一级免费黄色片 | 亚洲综合国产精品 | 国产不卡免费av | 激情视频一区二区 | 97国产情侣爱久久免费观看 | 久久中文字幕导航 | 最近日本韩国中文字幕 | 日韩久久片 | 99国产精品 | 美腿丝袜一区二区三区 | 久久96国产精品久久99漫画 | 少妇搡bbb | 午夜久久福利 | 三上悠亚一区二区在线观看 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 久久久美女 | 亚洲精品视频偷拍 | 久久av一区二区三区亚洲 | 西西444www大胆无视频 | 欧美贵妇性狂欢 | 97在线精品国自产拍中文 | 欧美福利视频一区 | 激情婷婷丁香 | 成人免费中文字幕 | 在线观看黄色国产 | 精品久久九九 | 中文字幕有码在线观看 | 综合婷婷| 色综合天天干 | 成人一级免费电影 | 国产精品视频 | 欧美最新大片在线看 | 久久人人爽人人爽 | 久久精品一二三区白丝高潮 | 国产精品video爽爽爽爽 | 亚洲免费国产视频 | 久久理论片 | 狠狠操91| 国产韩国精品一区二区三区 | 91视频 - v11av | 国产a精品 | 激情婷婷在线 | 四虎成人网 | 精品久久亚洲 | 欧美成人xxxx| 永久免费观看视频 | 久久艹国产视频 | 99久久99久久精品免费 | 国产一级视频免费看 | 成人在线免费视频观看 | 激情网五月婷婷 | 伊人夜夜 | 亚洲国产精品99久久久久久久久 | 国产精品久久久久久久午夜片 | 99国产精品久久久久久久久久 | 国产一区二区中文字幕 | 在线免费黄色毛片 | 国产123区在线观看 国产精品麻豆91 | 一级片在线 | 91丨九色丨蝌蚪丨对白 | 手机在线看片日韩 | 欧美国产日韩久久 | 网站在线观看日韩 | 成人va在线观看 | 欧美午夜久久久 | 在线观看网站你懂的 | 国产色久 | 射久久久| 国产一区二区三区网站 | 精品视频成人 | 日韩精品第1页 | 欧美性视频网站 | 天天天天天天天天操 | av动图 | 久久免费99精品久久久久久 | 国产一区二区三区免费在线 | 日本中文乱码卡一卡二新区 | 中文字幕亚洲欧美日韩 | 中文字幕观看在线 | 伊人开心激情 | 久久人人爽爽 | 99国产精品免费网站 | 国产精品欧美一区二区三区不卡 | 国产麻豆精品传媒av国产下载 | 欧美久久久久久久久久久 | 九九九热精品免费视频观看网站 | 国产高清av免费在线观看 | 日日爱视频 | 久久av在线播放 | 国产高清视频在线免费观看 | 国产91免费观看 | 92国产精品久久久久首页 | 国产精品三级视频 | 成人国产精品免费观看 | 国产精品久久视频 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 日韩电影一区二区在线观看 | 欧洲av不卡 | 91精品国产自产91精品 | 中文字幕中文字幕 | 91视频久久久久久 | 欧美久久久久久久久 | 欧美一级电影片 | 久久久九九 | 999视频网 | 色婷婷av国产精品 | 久久影视一区二区 | 91av综合| 国产69精品久久app免费版 | 日韩中文字幕国产精品 | 粉嫩av一区二区三区入口 | www亚洲一区| 精品久久九九 | 免费在线一区二区三区 | 午夜电影 电影 | 国产黄在线播放 | 91在线视频免费 | 精品视频在线播放 | 91av在线电影 | 中文字幕一区二区三区四区 | 9ⅰ精品久久久久久久久中文字幕 | 亚洲一区欧美激情 | www欧美xxxx | 日日夜夜天天人人 | 亚洲九九影院 | 91激情小视频| 99精品视频在线观看 | 欧美肥妇free | 91九色porny蝌蚪主页 | 五月婷婷综合久久 | 久久久精品网站 | 免费黄色av电影 | 夜色资源站国产www在线视频 | 伊人久久精品久久亚洲一区 | 999久久久精品视频 日韩高清www | 久久er99热精品一区二区三区 | 久久爱综合 | 午夜视频免费 | 最新日韩在线 | 精品久久久久久亚洲 | 亚洲一本视频 | www.狠狠插.com | adc在线观看| 久久与婷婷 | 福利电影久久 | 亚洲精品黄色在线观看 | 九色琪琪久久综合网天天 | 成年人在线观看网站 | 91麻豆国产福利在线观看 | 九九免费精品视频在线观看 | 国产只有精品 | 最近中文字幕mv免费高清在线 | 99精品免费久久久久久日本 | 超碰在线最新地址 | 天天操夜夜操天天射 | 日韩在线视频观看免费 | 99久久这里只有精品 | 欧美日韩首页 | 五月天激情综合 | 日本女人逼 | 色视频网站在线观看一=区 a视频免费在线观看 | 天天干,天天射,天天操,天天摸 | 欧美日韩亚洲在线观看 | 伊人久久电影网 | 精品欧美乱码久久久久久 | 99久久精品国产免费看不卡 | 日韩免费播放 | 日本久久久精品视频 | 国产成人精品亚洲a | 国产91aaa| h网站免费在线观看 | .精品久久久麻豆国产精品 亚洲va欧美 | 色吧久久| 香蕉视频18| 最新极品jizzhd欧美 | 片网站 | japanesexxxhd奶水 91在线精品一区二区 | 91丨九色丨蝌蚪丰满 | 久久成人亚洲欧美电影 | 二区在线播放 | 国产精品一区二区av日韩在线 | 成年人在线观看 | 麻豆视频入口 | 国产1区2区3区精品美女 | 亚一亚二国产专区 | 91亚洲精品在线 | 日本黄色免费观看 | 色婷婷综合久久久中文字幕 | 国产高清不卡在线 |