UNIX 作為一個歷史悠久且影響深遠的作業系統,其核心設計理念和技術特性至今仍被廣泛應用。從最初的 Bell Labs 發展至今,UNIX 的多工、多使用者以及可攜性等特性使其成為伺服器、工作站以及嵌入式系統等多種平台的首選。其模組化設計也使得系統維護和擴充更加便捷,而豐富的命令列工具和程式開發環境則為開發者提供了強大的生產力工具。理解 UNIX 系統的核心概念對於系統管理員、開發者以及任何需要與 UNIX 環境互動的技術人員都至關重要,這有助於更有效地利用系統資源、開發高效的應用程式以及維護系統的穩定性和安全性。隨著技術的發展,UNIX 的設計理念和核心技術也持續演進,影響著現代作業系統的發展方向,並在雲端運算、大資料處理等新興領域持續發揮重要作用。
UNIX 系統的基本概念
段落標題:UNIX 系統的歷史與特點
UNIX 作業系統自誕生以來,已經成為許多專業技術人員的首選工具。其歷史可追溯至上世紀六七十年代,當時 Bell Labs 的研究人員開發了一個簡單且高效的多使用者作業系統。UNIX 的成功在於其設計原則的簡潔性和靈活性,這些特性使得它能夠在各種硬體平台上執行,並且能夠支援多工和多使用者環境。
段落標題:UNIX 的核心特點
UNIX 作業系統具有許多獨特的特點,這些特點使其成為一個強大且靈活的作業系統。以下是一些主要的特點:
次段落標題:可攜性(Portability)
UNIX 的可攜性是其設計的一大亮點。這意味著它可以在不同的硬體平台上執行,而不需要大量修改。這一特性使得 UNIX 成為跨平台開發的理想選擇。
次段落標題:多工(Multi-tasking)
UNIX 支援多工處理,能夠同時執行多個程式。這使得使用者可以在同一時間內進行多項任務,提高了工作效率。
次段落標題:多使用者(Multi-user)
UNIX 是一個多使用者作業系統,允許多個使用者同時登入並使用系統資源。這在學術機構和企業環境中尤為重要。
次段落標題:裝置獨立(Device independence)
UNIX 使用一致的介面來存取不同型別的裝置,這使得程式開發者不需要為每種裝置編寫專門的驅動程式。
次段落標題:模組化(Modularity)
UNIX 的設計是模組化的,這意味著系統中的各個部分可以獨立開發和維護。這不僅提高了系統的穩定性,也使得更新和升級變得更加容易。
次段落標題:網路功能(Networking)
從最初設計開始,UNIX 就考慮到了網路功能。它支援多種網路協定,並且可以輕鬆地與其他系統進行通訊。
次段落標題:工具與實用程式(Tools and utilities)
UNIX 提供了豐富的命令列工具和實用程式,這些工具可以幫助使用者完成各種任務,從檔案管理到網路診斷應有盡有。
次段落標題:安全性(Security)
UNIX 擁有嚴格的許可權管理機制,確保只有授權使用者才能存取系統資源。這在保護敏感資料和防止未經授權的存取方面起到了重要作用。
段落標題:UNIX 系統架構
UNIX 系統架構可以分為幾個主要部分:
次段落標題:核心
內核是 UNIX 系統的核心部分,負責管理硬體資源和程式排程。它提供了一個穩定且高效的環境來執行應用程式。
次段落標題:程式
程式是 UNIX 系統中的基本執行單位。每個程式都有一個唯一的程式 ID(PID),並且可以透過程式控制塊(PCB)來管理其狀態和資源。
次段落標題:檔案系統
UNIX 使用層次化的檔案系統來組織資料。檔案和目錄以樹狀結構存在,方便使用者進行檔案管理和操作。
段落標題:UNIX 程式開發環境
次段落標題:個人環境
每個使用者在 UNIX 系統中都有一個專屬的工作環境,包括自己的主目錄和組態檔案。這使得每個使用者可以根據自己的需求進行自定義。
次段落標題:時分分享環境
UNIX 支援時分分享技術,允許多個使用者同時使用系統資源。這大大提高了系統的利用率和效率。
段落標題:客戶端-伺服器環境
UNIX 系統經常被用作伺服器端作業系統,提供各種服務給客戶端電腦。這種架構使得資源分享和遠端存取變得可能。
段落標題:檔案與目錄
次段落標題:檔案
檔案是 UNIX 系統中最基本的資料單位。它們可以儲存文字、二進位制資料或其他型別的資料。
次段落標題:路徑名稱
路徑名稱是指向檔案或目錄的一系列目錄名稱。它可以是相對路徑或絕對路徑。
次段落標題:檔案型別
UNIX 支援多種檔案型別,包括普通檔案、目錄、符號鏈結、通訊端等。
段落標題:重要的 UNIX 目錄
UNIX 系統中有一些重要的目錄,例如 /etc
、/var
、/usr
和 /home
。這些目錄中儲存著系統組態檔案、變數資料、應用程式和使用者資料等。
測試技能
- 問答:
- UNIX 作業系統最初由哪家公司開發?
- 哪些特點使得 UNIX 能夠在不同硬體平台上執行?
- UNIX 的多工處理功能如何提高工作效率?
- 心得:
請思考並回答以下問題:
- UNIX 的模組化設計如何影響系統更新和升級?
- 在學術機構或企業環境中, UNIX 的多使用者特性有何優勢?
- 安全性在 UNIX 中扮演著什麼樣的角色?
練習評估
- 請列出五個常見的 UNIX 命令列工具並說明它們的功能。
- 描述一下 UNIX 中程式控制塊(PCB)的作用。
- 舉例說明如何在 UNIX 中設定許可權管理機制來保護敏感資料。
- 比較 Unix 和 Windows 作業系統在資源分享方面有哪些不同?
UNIX 系統基本概念
UNIX 是一款強大的作業系統,最初由貝爾實驗室(Bell Labs)開發,並在多年來不斷發展。由於其穩定性、多使用者及多工作環境,UNIX 在科學、工程及學術社群中非常受歡迎,適用於伺服器、桌面電腦及筆記型電腦。UNIX 系統分為兩部分:程式和服務,以及支援這些程式和服務的作業系統。UNIX 系統模型的主要控制概念是檔案和程式。本章將探討這些控制實體的架構和概覽。
本章目錄
本章將涵蓋以下主題:
- UNIX 的歷史
- UNIX 的特色
- UNIX 作業系統的架構
- UNIX 程式設計環境
- UNIX 程式
- 檔案和程式控制實體的處理
- UNIX 檔案系統
學習目標
完成本章後,讀者將能夠:
- 理解使 UNIX 成為受歡迎作業系統的特色。
- 掌握每個層級的架構和執行原理。
- 學習 UNIX 程式設計環境。
- 掌握檔案和程式的基本概念。
UNIX 的歷史
1965 年,貝爾實驗室與麻省理工學院(MIT)和通用電氣(General Electric)合作開發了一種名為 Multics(Multiplexed Instruction Computing Service)的新作業系統。Multics 的主要特點包括多使用者、多處理器和多層次(階層化)檔案系統等先進功能。
1969 年,Ken Thompson、Dennis Ritchie 和其他在 Multics 工作的程式設計師,在 PDP-7 上設計並實作了第一個版本的 UNIX 檔案系統。之後,Brian Kernighan 增加了一些工具並將其命名為 UNIX。最初的 UNIX 主要使用組合語言撰寫。
1971 年,這個系統在具有 16KB 記憶體的 PDP-11 上實作,其中有 8KB 用於使用者程式和一個容量為 512KB 的磁碟。UNIX 的設計具有以下特點,吸引了研究人員的興趣:
- 程式設計師環境。
- 簡單的使用者介面。
- 簡單的工具可以組合成強大的功能。
- 階層化檔案系統。
- 一致的裝置介面。
- 支援多使用者和多工。
UNIX 的特色
UNIX 作為一個受歡迎的作業系統,因其獨特且有用的特點而廣受好評:
測試
UNIX 被視為可移植性強大的作業系統。由於大部分程式碼是用 C 語言撰寫,並且只有很小的一部分是用組合語言撰寫,因此可以輕鬆地從一個硬體環境移植到另一個硬體環境,只要有標準編譯器即可。這使得 UNIX 能夠在不同硬體上執行。
應用程式介面允許許多不同型別的應用程式在不需要撰寫組合語言程式碼的情況下輕鬆地在 UNIX 下實作。這些應用程式相對於跨多個供應商硬體平台具有良好的可移植性。
多工
這是透過智慧地將 CPU 時間分割給所有任務來管理。每個任務根據其優先順序獲得時間槽。使用者可以同時列印檔案並執行 C 語言程式。使用者不必等待一個應用結束才能開始另一個。一個巨大的檔案可以在背景中排序,同時在前景中進行另一項工作。
多使用者
UNIX 環境設計允許多名使用者同時工作,因此他們可以分享硬碟、CPU、記憶體、印表機和檔案等硬體和軟體資源。每名使用者都有機會平等地分享資源,同時防止他們鎖定其他人員的資源。
器材無關性
在 UNIX 中,輸入/輸出裝置被視為普通檔案。來自檔案和裝置的輸入和輸出使用稱為間接 (<, >, «, ») 的設計功能來處理,而不需要詳細瞭解裝置規格。程式的輸入可以來自任何檔案或裝置,而輸出可以去往任何檔案或裝置。
模組化
UNIX 核心由模組組成,系統管理員可以自定義它以僅包括通常所需的模組。如果稍後需要新功能,則可以向核心新增相應模組並重新組態或重建它。
網路功能
最初網路功能未整合到 UNIX 系統中。網路功能是在 BSD UNIX 和 At&T UNIX 分離後增加進去。網路功能允許使用者登入到遠端系統。取得遠端系統存取許可權後,使用者可以根據授予許可權使用 UNIX 命令來使用系統資源。標準通訊協定 TCP/IP 用於存取其他系統資源。UNIX 還支援網路檔案系統,允許使用者存取另一個網路上的檔案。
UNIX 程式設計環境
UNIX 提供了一個強大且靈活的程式設計環境,開發人員可以利用其豐富的工具和資源來建立高效且可靠的應用程式。以下是一些關鍵工具:
# Python 程式設計範例:簡單的 Hello World
print("Hello, World!")
內容解密:
上述範例展示了一個簡單的 Python 程式設計範例:print("Hello, World!")
。這行程式碼會輸出「Hello, World!」到終端機或控制檯上。
# Python 程式設計範例:讀取檔案內容
with open('example.txt', 'r') as file:
content = file.read()
print(content)
內容解密:
上述範例展示瞭如何使用 Python 語言讀取檔案內容:with open('example.txt', 'r') as file:
行開啟了一個名為 example.txt
的檔案進行讀取操作;content = file.read()
行讀取該檔案中的所有內容;最後 print(content)
行將讀取到內容輸出到終端機上。
Unix Process
Unix 中的「Process」是指正在執行中的程式例項。每當一個新程式啟動時,Unix 作業系統會建立一個新程式來執行該程式。程式是獨立執行的一組指令流動單元與它所需資源(如記憶體空間、檔案控制程式碼)。
# Bash 程式設計範例:建立一個新程式並執行命令
echo "Starting a new process"
sleep 5 &
echo "Process started with PID $!"
內容解密:
上述範例展示瞭如何在 Bash 指令碼中建立一個新程式並執行命令:echo "Starting a new process"
行顯示開始訊息;sleep 5 &
行啟動了一個新程式並等待5秒鐘;echo "Process started with PID $!"
行顯示新程式ID。
# Bash 程式設計範例:查詢當前所有程式狀態
ps aux
內容解密:
上述範例展示瞭如何查詢當前所有程式狀態:ps aux
命令顯示目前正在執行所有程式及其詳細狀態資訊。
檔案與程式控制實體處理
Unix 作業系統中的檔案與程式是兩種最基本且重要概念之一。「File」是指儲存於永久儲存裝置上的資料單元,「Process」則是正在執行中的指令集合。
檔案處理
Unix 作業系統中的「File」包含各種資料格式如文字檔案、二進位制檔案等。「File」通常儲存於永久儲存裝置如硬碟或SSD中。「File」亦包含了目錄檔案,這種檔案儲存著對應目錄中的檔案列表資料。
# Bash 編寫範例:建立資料夾並建立一些檔案範例
mkdir example_directory
touch example_directory/file1.txt example_directory/file2.txt example_directory/file3.txt
內容解密:
上述範例展示瞭如何在 Bash 中建立目錄並生成一些檔案:mkdir example_directory
行建立了一個名為 example_directory
的目錄;touch example_directory/file1.txt example_directory/file2.txt example_directory/file3.txt
行分別建立三個空白文字檔案放置在該目錄下。
Unix File System
Unix 作業系統中的檔案系統以樹形結構組織檔案與目錄結構。 檔案系統樹根從根目錄 “/” 開始, 下級目錄層級結構越來越深以此表示不同目錄下包含各種檔案與資料內容。
/usr/bin/bash # /usr/bin 下有一個bash命令執行指令碼.
/etc/passwd # /etc 下有一個passwd命令執行指令碼.
/home/user/document.txt # /home/user 下有一個名為document.txt 的檔案.
內容解密:
上述樹狀結構展示了 Unix 作業系統中常見的一些路徑及其代表意義:
/usr/bin/bash # /usr/bin 下有一個bash命令執行指令碼. 用於提供常見命令及應用.
/etc/passwd # /etc 下有一個passwd命令執行指令碼. 用於儲存使用者資訊。
/home/user/document.txt # /home/user 下有一個名為document.txt 的檔案. 用於儲存個人資料與設定。