Linux操作系統概述
操作系統在整個計算機系統所處的位置
操作系統執行C程序的過程
一個簡單的C程序在操作系統下運行,操作系統的執行過程是怎樣到的?
文件名:test.c
#include <stdio.h>
main()
{
printf("Hello world\n");
return 0;
}
用戶對這個程序編譯並鏈接
gcc test.c -o test
形成一個可執行的二進制文件test,在Linux下執行該程序./test
執行過程如下:
- 用戶告訴操作系統執行test。
- 操作系統通過文件名在磁盤找到該程序
- 檢查可執行代碼首部,找出代碼和數據存放的地址
- 文件系統找到第一個磁盤塊
- 操作系統建立程序的執行環境
- 操作系統把程序從磁盤裝入內存,並跳到程序開始處執行
- 操作系統檢查字符串的位置是否正確
- 操作系統找到字符串被送往的設備
- 操作系統將字符串送往輸出設備窗口系統確定這是一個合法的操作,然後將字符串轉換成像素
- 窗口系統將像素寫入存儲映像區
- 視頻硬件將像素表示轉換成一組模擬信號控制顯示器(重畫屏幕)
- 顯示器發射電子束,最後在屏幕上看到Hello world。
操作系統的組成
從操作系統設計者的角度考慮,一個操作系統必須包含以下幾部分
(1)操作系統接口
(2)CPU管理
(3)內存管理
(4)設備管理
(5)文件管理
用一組簡單的公式來描述操作系統的組成要素
操作系統 = 內核+系統程序
系統程序 = 編譯環境+API(應用程序接口)+AUI(用戶接口)
編譯環境 = 編譯程序+連接程序+裝載程序
API = 系統調用+語言函數庫(C、C++、Java等)
AUI =shell + 系統服務例程(如X服務器等)+應用程序(瀏覽器、字處理、編輯器等)
整個軟件系統:
軟件系統 = 操作系統+AUI
操作系統最底層的組件是內核,其上層大撿了許多系統程序。
系統程序包括三個部分,分別是編譯環境,應用程序接口和用戶接口。
編譯環境包括彙編、C等高級語言編譯程序、連接程序和裝載程序,這些程序負責將文本格式的程序語言
轉變爲機器能識別和裝載的機器代碼。
應用程序接口(API)包含內核提供的系統調用接口和語言庫。系統調用是爲了能讓應用程序使用內核提
供的服務;語言庫函數則是爲了方便應用程序開發,所以將一些常用的基礎功能預先編譯以供使用,比如對C語言來說有常用的C庫等。
用戶接口(AUI)包括shell、系統服務程序和常用的應用程序。
操作系統標準POSIX
POSIX表示可移植操作系統接口。該標準由IEEE制定,並由國際標準化組織接受爲國際標準。任何操作系統只要符合POSIX 1003.1這一標準,就可以運行UNIX程序