一、 Linux的誕生
Linux的興起可以說是Internet創造的一個奇跡。 1991年初,當年輕的芬蘭大學生Linus Torvalds在開始其Linux 操作系統的設計時,他的目的只不過是想看一看Intel 386存儲 管理硬體是怎樣工作的,而絕對沒有想到這一舉動會在計算機界 產生如此重大的影響。他的設計進展得很順利,只花了幾個月時 間就在一台Intel 386微機上完成了一個類似於Unix 的操作系統, 這就是最早的Linux版本。1991年底,Linus Torvalds首次在Internet 上發布了基於Intel 386體系結構的Linux源代碼,從此以後,奇跡開始 發生了。由於Linux具有結構清晰、功能簡捷等特點,許多大專院校的學 生和科研機構的研究人員紛紛把它作為學 習和研究的對象。他們在更正原 有Linux版本中錯誤的同時,也不斷地為Linux增加新的功能。在眾多熱心者的 努力下,Linux逐漸成為一個穩定可靠、功能完善的操作系統。一些軟體公司, 如Red Hat、InfoMagic等也不失時機地推出了自己的以Linux為核心的操作系統 版本,這大大推動了Linux的商品化。在一些大的計算機公司的支持下,Linux還 被移植到以Alpha APX、PowerPC、Mips及Sparc等為處理機的系統上。Linux的使 用日益廣泛,其影響力直逼Unix。
Linux的成功得益於如下因素:
(1) 具有良好的開放性。Linux及其生成工具的源代碼均可通過Internet免費獲取,linux愛 好者能非常 容易地建立一個Linux開發平台。
(2) Internet的普及使熱心於Linux的開發者們能進行高效、快捷的交流,從而為Linux 創造了一個優良的分布式開發環境。
(3) Linux具有很強的適應性,能適應各種不同的硬體平台。
Linux的版本更新很快。在短短的七年時間里,其版本已升至2.1.x。這里之所以用"x"表示,是因為 x的值變化太快,很難准確地定位它的值。這也從側面反映了從事Linux的研究者之多。不過,Linux用得最 多的版本還是2.0.30,許多商品化的操作系統都以它為核心。
二、 Linux的主要特點
作為一個操作系統,Linux幾乎滿足當今Unix操作系統的所有要求,因此,它具有Unix操作系統的基本 特徵。
1.符合POSIX 1003.1標准
POSIX 1003.1標準定義了一個最小的Unix操作系統介面,任何操作系統只有符合這一標准,才有可能運 行Unix程序。考慮到Unix具有豐富的應用程序,當今絕大多數操作系統都把滿足POSIX 1003.1標准作為實現 目標,Linux也不例外,它完全支持POSIX 1003.1標准。另外,為了使Unix System V和BSD上的程序能直接在 Linux上運行, Linux還增加了部分System V和BSD的系統介面,使Linux成為一個完善的Unix程序開發系統。
2.支持多用戶訪問和多任務編程
Linux是一個多用戶操作系統,它允許多個用戶同時訪問系統而不會造成用戶之間的相互干擾。另外, Linux還支持真正的多用戶編程,一個用戶可以創建多個進程,並使各個進程協同工作來完成用戶的需求.
3.採用頁式存儲管理
頁式存儲管理使Linux能更有效地利用物理存儲空間,頁面的換入換出為用戶提供了更大的存儲空間。
4.支持動態鏈接
用戶程序的執行往往離不開標准庫的支持,一般的系統往往採用靜態鏈接方式,即在裝配階段就已將 用戶程序和標准庫鏈接好,這樣,當多個進程運行時,可能會出現庫代碼在內存中有多個副本而浪費存儲 空間的情況。Linux 支持動態鏈接方式,當運行時才進行庫鏈接,如果所需要的庫已被其它進程裝入內存, 則不必再裝入,否則才從硬碟中將庫調入。這樣能保證內存中的庫程序代碼是唯一的。
5.支持多種文件系統
Linux能支持多種文件系統。目前支持的文件系統有:EXT2、EXT、XIAFS、ISOFS、HPFS、MSDOS、UMSDOS、 PROC、NFS、SYSV、MINIX、SMB、UFS、NCP、VFAT、AFFS。Linux最常用的文件系統是EXT2,它的文件名長度可 達255字元,並且還有許多特有的功能,使它比常規的Unix文件系統更加安全。
6.支持TCP/IP、SLIP和PPP
在Linux中,用戶可以使用所有的網路服務,如網路文件系統、遠程登錄等。SLIP和PPP能支持串列線上的 TCP/IP協議的使用,這意味著用戶可用一個高速Modem通過電話線連入Internet網中。
除了上述基本特徵外,Linux還具有其獨有的特色:
支持硬碟的動態Cache 這一功能與MS�DOS中的Smartdrive相似。所不同的是,Linux能動態調整所用的 Cache存儲器的大小,以適合當前存儲器的使用情況,當某一時刻沒有更多的存儲空間可用時,Cache將被減少, 以增加空閑的存儲空間,一旦存儲空間不再緊張,Cache的大小又將增加。
支持不同格式的可執行文件 Linux具有多種模擬器,這使它能運行不同格式的目標文件。其中,DOS和 MS�Windows正在開發之中,iBCS2模擬器能運行SCO Unix的目標程序。(iBCS2 模擬器不是Linux標准核心的 一部分,但可從ftp.informatik.hu�berlin.de:/pub/os/linux下載)
三、 Linux的主要構成
Linux主要由存儲管理、進程管理、文件系統、進程間通信等幾部分組成,在許多演算法及實現策略上, Linux借鑒了Unix的成功經驗,但也不乏自己的特色。
1.存儲管理
Linux採用頁式存儲管理機制,每個頁面的大小隨處理機晶元而異。例如,Intel 386處理機頁面大小 可為4KB和2MB兩種,而Alpha處理機頁面大小可為8KB、16KB、32KB和64KB。頁面大小的選擇對地址變換算 法和頁表結構會有一定的影響,如Alpha的虛地址和物理地址的有效長度隨頁面尺寸的變化而變化,這種變 化必將在地址變換和頁表項中有所反映。
在Linux中,每一個進程都有一個比實際物理空間大得多的進程虛擬空間,為了建立虛擬空間和物理空 間之間的映射,每個進程還保留一張頁表,用於將本進程空間中的虛地址變換成物理地址。頁表還對物理頁 的訪問許可權作出了規定,定義了哪些頁可讀寫,哪些頁是只讀頁,在進行虛實變換時,Linux將根據頁表中規 定的訪問許可權來判定進程對物理地址的訪問是否合法,從而達到存儲保護的目的。
Linux存儲空間分配遵循的是不到有實際需要的時候決不分配物理空間的原則。當一個程序載入執行時, Linux只為它分配了虛空間,只有訪問某一虛地址而發生了缺頁中斷時,才為它分配物理空間,這樣就可能 出現某些程序運行完成後,其中的一些頁從來就沒有裝進過內存。這種存儲分配策略帶來的好處是顯而易見的,因為它最大限度地利用了物理存儲器。
盡管Linux對物理存儲器資源的使用十分謹慎,但還是經常出現物理存儲器資源短缺的情況。Linux有一 個名為kswapd的進程專門負責頁面的換出,當系統中的空閑頁面小於一定的數目時,kswapd將按照一定的淘 汰演算法選出某些頁面,或者直接丟棄(頁面未作修改),或者將其寫回硬碟(頁面已被修改)。這種換出方式不 同於較舊版本Unix的換出方式,它是將一個進程的所有頁全部寫回硬碟。相比之下,Linux的效率更高。
2.進程管理
在Linux中,進程是資源分配的基本單位,所有資源都是以進程為對象來進行分配的。 在一個進程的生 命期內,它會用到許多系統資源,會用CPU運行其指令,用存儲器存儲其指令和數據,它也會打開和使用文件 系統中的文件,直接或間接用到系統中的物理設備,因此,Linux設計了一系列的數據結構,它們能准確地描 述進程的狀態和其資源使用情況,以便能公平有效地使用系統資源。Linux的調度演算法能確保不出現某些進程 過度佔用系統資源而導致另一些進程無休止地等待的情況。
進程的創建是一個十分復雜的過程,通常的做法需為子進程重新分配物理空間,並把父進程空間的內容全 盤復制到子進程空間中,其開銷非常大。為了降低進程創建的開銷,Linux採用了Copy�on�write技術,即不 拷貝父進程的空間,而是拷貝父進程的頁表,使父進程和子進程共享物理空間,並將這個共享空間的訪問許可權 置為只讀。當父進程和子進程的某一方進行寫操作時,Linux檢測到一個非法操作,這時才將要寫的頁進行復制 。這一做法免除了只讀頁的復制,從而降低了開銷。
Linux目前尚未提供用戶級線程,但提供了核心級線程,核心線程的創建是在進程創建的基礎上稍做修改, 使創建的子進程與父進程共享虛存空間。從這一意義上講,核心線程更像一個共享進程組。
3.文件系統
Linux最重要的特徵之一就是支持多個不同的文件系統,前面我們已經看到,Linux目前支持的文件系統 多達十餘種,隨著時間的推移,這一數目還在不斷增加。在Linux中,一個分離的文件系統不是通過設備標識 (如驅動器號或驅動器名)來訪問,而是 把它合到一個單一的目錄樹結構中,通過目錄來訪問,這一點與Unix十分相似。Linux用 安裝命令將一個新的文件系統安裝到系統單一目錄樹的某一目錄下,一旦安裝成功,該目錄下的所有內容將 被新安裝的文件系統所覆蓋,當文件系統被卸下後,安裝目錄下的文件將會被重新恢復。
Linux最初的文件系統是Minix。該文件系統對文件限制過多,並且性能低下,如文件名長度不能超過14 個字元、文件大小不能超過64MB。為了解決這些問題,Linux的開發者們設計了一個Linux專用的文件系統EXT。 EXT對文件的要求放鬆了許多,但在性能上並沒有大的改觀,於是就有了後面的EXT2文件系統。EXT2文件系統 是一個非常成功的文件系統,它無論是對文件的限制還是在性能方面都大大優於EXT文件系統,所以,EXT2自 從推出就一直是Linux最常用的文件系統。
為了支持多種文件系統,Linux用一個被稱為虛擬文件系統(VFS)的介面層將真正的文件系統同操作系統及 系統服務分離開。VFS掩蓋了不同文件系統之間的差異,使所有文件系統在操作系統和用戶程序看來都是等同的。VFS允許用戶同時透明地安裝多個不同的文件系統。
4.進程間通信
Linux提供了多種進程間的通信機制,其中,信號和管道是最基本的兩種。除此以外,Linux也提供 System V的進程間通信機制,包括消息隊列、信號燈及共享內存。為了支持不同機器之間的進程通信, Linux還引入了BSD的Socket機制。
四、 Linux的不足及發展趨勢
Linux從出現到現今只經歷了短短七年的時間,但其發展速度是驚人的,這與它的開放性和優良的性能 是密不可分的。不過我們應該看到,作為一個由學生開發的系統,Linux還有許多先天不足,它的設計思想 過多地受到傳統操作系統的約束,沒有體現出當今操作系統的發展潮流,具體表現在以下幾個方面:
不是一個微內核操作系統;
是一個分布式操作系統;
不是一個安全的操作系統;
沒有用戶線程;
不支持實時處理;
代碼是用C而不是C++這樣的現代程序設計語言編寫的。
盡管Linux有這樣和那樣的不足,但其發展潛力不容低估,其發展的動力就是遍布全球、為數眾多的 Linux熱心者。今後Linux將會朝著完善功能、提高效率的方向發展,包括允許用戶創建線程、增加實時處 理功能、開發適合多處理機體系結構的版本。我們相信,Linux、Unix及NT三足鼎立的時代將為期不遠。
㈡ Linux有哪些特點
Linux以高效和靈活著稱。Linux運行於PC上,是在GNU 通用公共許可(GPL)許可權下免費獲得的,是一個符合POSIX 標準的操作系統。
Linux操作系統軟體包不僅包括完整的Linux操作系統,而且還包括了文本編輯器、高級語言編譯器,以及X-Windows圖形用戶界面等應用軟體,使用Linux也可以像使用Windows7、Windows8一樣,通過窗口、圖標和菜單對系統進行操作,當然,這是Linux個人桌面領域的應用,在伺服器領域絕大多數場景下都還是使用命令行、文本模式操作Linux的。
Linux系統之所以受到廣大計算機愛好者的喜愛,主要原因有兩個:一是,Linux屬於自由軟體,用戶不用支付任何費用就可以獲得系統和系統的源代碼,並且可以根據自己的需要對源代碼進行必要的修改,無償使用,無約束地自由傳播。二是,Linux具有Unix的全部優秀特性,任何使用Unix操作系統或想要學習Unix操作系統的人,都可以通過學習Linux來了解Unix,同樣可以獲得Unix中的幾乎所有優秀功能,並且Linux系統更開放,社區開發和其他使用者也更加活躍。
Linux還有其他特點:可以說 Linux是Unix在PC上的克隆版,仿Unix內核構建,幾乎與Unix指令集向下完全兼容;是一個完善的支持多用戶、多任務、多進程、多 CPU的系統;具有很高的系統穩定性與可靠性、很高的系統安全性;有完善的網路服務,支持HTTP、FTP、SMTP、POP、SAMBA、SNMP、DNS、 DHCP、SSH、TELNET等;基於GNU許可、自由開放;有大量第三方免費應用程序;得到了眾多業界廠商支持,如IBM、Oracle、Intel、HP、MOTO、Google等;有完善的大型資料庫平台,包括Oracle、DB/2、Sybase、MySQL、PostgreSQL等;有完善的圖形用戶界面,包括GNOME、KDE等;有完善的開發平台,包括C/C++、Java、Perl 等,支持各類圖形界面API,如GTK+、QT等。
㈢ linux實時時間 xtime怎麼獲取並使用
RTC時間操作:
1.rtc時間是由rtc硬體控制的,所以在linux中想要修改和獲取rtc時間就只能通過驅動的介面來獲取和修改。
intrtc_test(void)
{
structrtc_timertc;
intfd=-1;
intret=-1;
fd=open("/dev/rtc0",O_RDWR);
if(fd<0){
return-1;
}
ret=ioctl(fd,RTC_RD_TIME,&rtc);
if(ret<0){
return-1;
}
printf(" CurrentRTCdata/timeis%d-%d-%d,%02d:%02d:%02d. ",rtc.tm_mday,rtc.tm_mon+1,
rtc.tm_year+1900,rtc.tm_hour,rtc.tm_min,rtc.tm_sec);
ret=ioctl(fd,RTC_SET_TIME,&rtc);
if(ret<0){
return-1;
}
return0;
}
2.除了上面這種方式操作rtc時間以外,linux中也有一個命令可以簡化rtc時間操作,hwclock,比如,可以通過system("hwclock-w");系統調用來把xtime設置到rtc硬體。
牆上時間(realtime、xtime):
linux系統中主要使用的就是xtime,它是系統運行的基礎,很多程序都是依賴於xtime來運行的,接下來將介紹將如何操作xtime。
1.獲取、設置微秒級別的時間:
#include
#include
structtimeval
{
inttv_sec;
inttv_usec;
};
intgettimeofday(structtimeval*tv,structtimezone*tz);
intsettimeofday(conststructtimeval*tv,conststructtimezone*gz);
功能描述:
gettimeofday()獲取當前時間,有tv指向的結構體返回。
settimeofday()把當前時間設成由tv指向的結構體數據。當前地區信息則設成tz指向的結構體數據。
2.獲取秒級別的時間
typedeflongtime_t;
time_ttime(time_t*t);
如果t是non-null,它將會把時間值填入t中
3.內核2.6版本後新增的clockapi介面
獲取納秒級別的時間
structtimespec{
time_ttv_sec;/*秒s*/
longtv_nsec;/*納秒ns*/
};
intclock_getres(clockid_tclk_id,structtimespec*res);
intclock_gettime(clockid_tclk_id,structtimespec*tp);
intclock_settime(clockid_tclk_id、conststructtimespec*tp);
編譯連接時採用-lrt才能編譯通過。
clk_id可選參數:
CLOCK_REALTIME
系統全局的實時時鍾.設置此時鍾需要合適的許可權.
CLOCK_MONOTONIC
只能被讀取,無法被設置,表示monotonic時間起點.
CLOCK_PROCESS_CPUTIME_ID
從cpu每進程的高解析度計時器.
CLOCK_THREAD_CPUTIME_ID
線程的特定cpu時間時鍾.
系統啟動時,會首先從rtc中讀取rtc時間,並設置給xtime,而當ntp對系統時間進行更新時,首先設置xtime,然後調用hwclock設置到rtc硬體中。xtime根據需要的精度,可以通過上面幾個介面來選擇使用。
㈣ linux是實時還是分時操作系統,什麼是實時操作系統,什麼是分時操作系統他們的區別是什麼
Linux是分時操作系統。
Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟體、應用程序和網路協議。它支持32位和64位硬體。
實時操作系統(RTOS)是指當外界事件或數據產生時,能夠接受並以足夠快的速度予以處理,其處理的結果又能在規定的時間之內來控制生產過程或對處理系統做出快速響應,調度一切可利用的資源完成實時任務,並控制所有實時任務協調一致運行的操作系統。提供及時響應和高可靠性是其主要特點。
分時操作系統是使一台計算機採用時間片輪轉的方式同時為幾個、幾十個甚至幾百個用戶服務的一種操作系統。
區別:
1、交互性不同。
實時信息處理系統具有交互性,但僅限於訪問系統中某些特定的專用服務程序。
分時系統能向終端用戶提供數據處理服務、資源共享等服務。
2、可靠性要求不同。
分時系統要求系統可靠。
實時系統則要求系統高度可靠。因為任何差錯都可能帶來巨大的經濟損失甚至無法預料的災難性後果。
3、多路性表現不同。
實時控制系統,其多路性主要表現在經常對多路的現場信息進行採集以及對多個對象或多個執行機構進行控制。
分時系統具有多路性,系統按分時原則為多個終端用戶服務;
(4)linux實時功能擴展閱讀:
基本思想
Linux的基本思想有兩點:
1、一切都是文件;
2、每個軟體都有確定的用途。
其中第一條詳細來講就是系統中的所有都歸結為一個文件,包括命令、硬體和軟體設備、操作系統、進程等等對於操作系統內核而言,都被視為擁有各自特性或類型的文件。至於說Linux是基於Unix的,很大程度上也是因為這兩者的基本思想十分相近。