13用戶觀點

本節簡要介紹了UNIX係統的高級功能,例如文件係統,處理環境和構建塊原始詞(例如,管道)。後來的章節將詳細探討這些功能的內核支持。

1.3.1文件係統

UNIX文件係統的特征是

•分層結構,

•對文件數據的一致處理,

•創建和刪除文件的能力,

•文件的動態增長,

•文件數據的保護,

•將外圍設備(例如終端和磁帶單元)作為文件處理。

文件係統被組織為帶有單個根節點的樹,稱為root(書麵“/”);文件的每個非葉節點係統結構是文件的目錄,樹的葉節點上的文件是目錄,常規文件或特殊設備文件。文件的名稱由一個路徑名給出,該名稱描述了如何在文件係統層次結構中找到文件,路徑名是由斜杠字符隔開的組件名稱的序列;一個組件是一係列字符

ttyoo ttyol passwd ttyoo ttyol passwd

圖1.2。示例文件係統樹指定一個文件名,該文件名稱在上一個(目錄)組件中包含的文件名,完整的路徑名以斜杠字符開始,並指定可以通過在文件係統root啟動並跨越文件樹的文件中找到的文件遵循導致路徑名的連續組件名稱的分支。因此,路徑名稱“/etc/passWD”,“/bin/who”和“/usr/src/cmd/who.c”指定圖1.2中所示的樹中的文件,但“/bin/passwd”和“/usr/src/date.c”不要。路徑名不必從root開始,但可以通過省略路徑名中的初始斜杠來指定相對於執行過程的當前目錄。因此,從目錄“/dev”開始,路徑名“ ttyol”指定了完整路徑名為“/dev/ttyol”的文件。

UNIX係統中的程序不了解內核存儲文件數據的內部格式,將數據視為一個未形式的字節流。程序可以按照他們的意願來解釋字節流,但是解釋與操作係統如何存儲數據無關。因此,訪問文件中數據的語法是由係統定義的,並且對於所有程序都是相同的,但是數據的語義是由程序強加的。例如,文本格式程序Troff希望在每條文本末端找到“新線”字符,並且係統會計程序ACCTCOM希望找到固定的長度記錄。這兩個程序都使用相同的係統服務來訪問文件中的數據作為字節流,在內部,它們將流將流解析為合適的格式。如果任何一個程序都發現格式不正確,則負責采取適當的措施。

在這方麵,目錄類似於常規文件;該係統將目錄中的數據視為字節流,但數據包含可預測格式中目錄中文件的名稱,以便操作係統和程序(例如)

IS(列出文件的名稱和屬性)可以在目錄中發現文件。

訪問文件的權限由與文件相關的訪問權限控製。可以獨立設置訪問權限以控製三個用戶類的讀,寫和執行權限:文件所有者,文件組和其他所有人。如果目錄ACCCSS權限允許,則用戶可以創建文件。新創建的文件是文件係統目錄結構的葉節點。

對於用戶,Unix係統將設備視為文件。由特殊設備文件指定的設備在文件係統目錄結構中占據節點位置。在訪問常規文件時使用的ACCCSS設備與他們使用的語法相同;閱讀和寫作設備的語義在很大程度上與閱讀和編寫常規文件相同。設備的保護方式與普通文件的保護方式相同:通過正確設置其(文件)訪問權限。因為設備名稱看起來像常規文件的名稱,並且由於相同的操作適用於設備和常規文件,因此大多數程序不必內部知道它們操作的文件類型。

例如,考慮圖1.3中的C程序,該程序製作了現有文件的新副本。假設該程序的可執行版本的名稱是複製。終端處的用戶通過鍵入複製old old newfile來調用程序,其中oldfile是現有文件的名稱,而newfile是新文件的名稱。該係統調用MAIN,將ARGC作為列表ARGV中的參數數量提供,並初始化數組ARGV的每個成員以指向用戶添加的參數。在上麵的示例中,argc是3,argvfo]指向字符字符串副本(程序名稱通常是oth參數),arg \'[l]指向字符字符串oldfile,而argv [2]指向字符字符串newfile。然後,該程序檢查是否已使用適當數量的參數調用。如果是這樣,它將為文件OldFile調用打開的係統調用“僅讀取”,如果係統調用成功,請調用創建係統調用以創建NewFile。新創建的文件上的權限模式將為0666(八進製),使所有用戶訪問該文件進行讀取和寫作。所有係統呼叫返回 - 失敗1; if the open or creat calls fail, the program prints a message and calls the exit system call with return status 1, terminating its execution and indicating that something went wrong.

打開和創建係統調用返回一個稱為文件描述符的整數,該程序將其用於後續引用對文件。然後,該程序調用了循環的子例程副本,調用讀取係統調用以讀取現有文件中的字符的緩衝區價值,並調用寫入係統調用以將數據寫入新文件。讀取係統調用將返回字節讀取的數量,當該字節達到文件末尾時返回0。當程序遇到文件末尾或讀取係統調用時有一些錯誤時,該程序將完成循環(未檢查寫入錯誤)。然後,它從複製返回並帶有返回狀態0的退出,表明程序成功完成。

#include char bufferl2048];

繼續在這裏閱讀:21 UNIX操作係統的體係結構

本文是否有幫助?

+3 0

讀者的問題

  • 厄休拉
    UNIX的特征是以下哪個?
    3天前
    1. 多任務
    2. 便攜的
    3. 多用戶
    4. 分層文件係統
    5. 安全
    6. 腳本語言支持
    • 伽利略
      UNIX操作係統的功能是什麼?
      3個月前
      1. 多用戶:UNIX是一個多用戶操作係統,允許多個遠程用戶同時將其安全地登錄到單個係統。
      2. 多任務:UNIX允許多個程序同時運行。
      3. 安全性:UNIX具有強大的安全係統,使黑客難以訪問該係統或惡意用戶造成損害。
      4. 可移植性:UNIX設計為可移植,這意味著它可以輕鬆地適應不同的硬件平台。
      5. 可靠性:UNIX以其可靠性而聞名,這意味著它可以日複一日可靠地使用,而不必擔心係統故障。ob体育赛事
      6. 編程:UNIX提供了一個強大的編程環境,該環境使用戶可以開發可以在係統上運行的程序和應用程序。