曾經是服務器操作系統的首選,占據最大的市場份額,但最近在與WINDOWS SERVER和Linux的競爭中失利。
下面是UNIX的代碼,根據代碼我們可以很好的了解UNIX的工作流程。
1.主頁面
#包含“head.h”
# include " blockinodesuperblock . h "
#包含“initial.h”
#包含“userop.h”
#包含" file.h "
#包含“dir.h”
#包含“command.h”
#包含“chsome.h”
/////////////////////////////////////////////////////////////////////////////////////////
void main()
{
control.open("control.txt ",IOs::in | IOs::out | IOs::nocreate);
int I;
control & gt& gt我;
control . close();
如果(我!=0)//如果不為0,則初始化。
{
initial();
}
control.open("control.txt ",IOs::in | IOs::out | IOs::nocreate);
control . seekp(0);
控制& lt& lt0;//默認是在上次的基礎上繼續,沒有初始化。
control . close();
strcpy(curname,“root”);//當前目錄文件名是root。
road[0]= 0;//當前目錄路徑(存儲從根目錄到這裏的節點號)
num = 1;road的最後壹位[num-1]是當前目錄文件I的節點號。
cout & lt& lt”請登錄系統\ n”;
而(!Login() )//直到登錄。
cout & lt& lt“錯了!!!\ n ";
cout & lt& lt“登錄成功”& lt& ltendl
cout & lt& lt“* * * * * *歡迎”& lt& ltauser & lt& lt"******";
read super();
get command();//命令解析函數
write super();
}
2.blockinodesuperblock.h
/////////////////////////////////////////////////////////////////////////////////////////
Int ialloc()//申請壹個I節點,返回節點號;否則,返回-1。
{
if(super block . fiptr & gt;0)
{
int temp = super block . fistack[80-super block . fiptr];//當前可用
super block . fistack[80-super block . fiptr]=-1;
super block . fiptr-;
返回溫度;
}
return-1;
}
/////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
Void ifree(int index)//指定壹個節點號並回收壹個I節點。
{
disk.open("disk.txt ",IOs::in | IOs::out | IOs::no create);//清除節點
disk . seekp(514+64 * index+2 *(index/8));
磁盤& lt& ltsetw(64)& lt;& lt' ';
disk . close();
for(int I = 80-super block . fiptr;我& lt80;I++)//節點號找到合適的位置,插入空閑節點號棧。
{
if(super block . fistack & lt;Index)//比它的前向位置小壹位。
{
super block . fistack[I-1]= super block . fistack;
}
Else//放在比它大的第壹個節點號之前。
{
super block . fistack[I-1]= index;
打破;
}
}
super block . fiptr++;
}
/////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
/*組鏈接方法*/
Int balloc()//申請壹個磁盤塊,返回磁盤塊號;否則,返回-1。
{
int temp = super block . FB stack[10-super block . FB ptr];
if(super block . fbptr = = 1)//是棧底= = & gt這是壹個記錄磁盤塊
{
//是最後記錄的磁盤塊的最後壹個編號,0(預留底部分配失敗)。
如果(溫度==0)
{
return-1;
}
super block . FB stack[10-super block . fbptr]=-1;
super block . fbptr = 0;
//磁盤塊的內容被讀入堆棧
for(int I = 0;我& lt10;i++)
{
int id,num = 0;
disk.open("disk.txt ",IOs::in | IOs::out | IOs::no create);
//先計算磁盤塊數num(最多10),最終磁盤塊數可能小於10。
disk . seekg(514 * temp);
for(int I = 0;我& lt10;i++)
{
磁盤& gt& gtid;
num++;
if(id = = 0)break;
}
disk . seekg(514 * temp);//磁盤塊的內容被讀入堆棧
for(int j = 10-num;j & lt10;j++)
{
磁盤& gt& gtid;
super block . FB stack[j]= id;
}
superblock.fbptr = num
disk . close();
}
disk.open("disk.txt ",IOs::in | IOs::out | IOs::no create);//清空恢復托盤。
disk . seekp(514 * temp);
磁盤& lt& ltsetw(512)& lt;& lt' ';
disk . close();
//磁盤塊用完了
返回溫度;
}
Else//不是記錄磁盤塊= = & gt磁盤塊用完
{
super block . FB stack[10-super block . fbptr]=-1;
super block . fbptr-;
返回溫度;
}
}
/////////////////////////////////////////////////////////////////////////////////////////
詳細介紹:
肯和丹尼斯首先在貝爾實驗室開發了Unix。10年,Unix被廣泛應用於學術機構和大型企業。at & T公司以低廉甚至免費的許可將Unix源代碼授權給學術機構用於研究或教學。許多機構對源代碼進行了擴展和改進,形成了所謂的Unix“變體”,進而推動了Unix的發展。最著名的變化之壹是由加州大學伯克利分校開發的BSD產品。
後來at & T意識到了Unix的商業價值,不再將Unix的源代碼授權給學術機構,並將版權聲明給之前的Unix及其變種。變體BSD Unix在Unix的歷史發展中有相當大的影響力,被很多商業廠商采用,成為很多商業Unix的基礎。BSD采用的是主版本加次版本的方法,比如4.2BSD和4.3BSD,還有基於原版本的衍生版本,通常都有自己的名字,比如4.3BSD-Net/1,4.3BSD-Net/2等。其日益增長的影響力最終引起了AT & amp;t的關註,於是開始了壹場曠日持久的版權官司,這場官司壹直打到& amp;t賣掉了他的Unix系統實驗室,接手的Novell公司采取了更開明的做法,允許伯克利自由發布自己的BSD,但前提是來自AT & amp;T的代碼被完全刪除,於是4.4BSD Lite版本誕生了。因為這個版本不存在法律問題,4.4 BSD Lite成為了現代BSD系統的基礎版本。雖然後來非商業版的UNIX系統經歷了很多進化,但最終都是基於BSD版本(Linux除外)。所以從這個角度來說,4.4 BSD是所有免費Unix的基礎,和Unix V、Linux壹起構成了Unix操作系統的璀璨星空。
在BSD的發展中,主要有三個分支:FreeBSD、OpenBSD和NetBSD。
在接下來的幾十年裏,Unix還在不斷變化,它的版權所有者也在不斷變化,被授權者的數量也在不斷增加。Unix的版權曾經在& amp;T all,然後Novell擁有Unix,然後Novell把版權賣給SCO(這個事實還有爭議)。很多大公司在獲得Unix的授權後都開發了自己的Unix產品,比如IBM的AIX,HP的HPUX,SUN的Solaris,SGI的IRIX。
Unix以其安全、可靠、高效、強大的特點在服務器領域得到了廣泛的應用。在GNU/Linux開始流行之前,Unix也是科學計算、大型機、超級計算機等使用的主流操作系統。
歷史
原始期
Unix的誕生與Multics(倍增的信息和計算系統)有關。Multics由麻省理工學院開發,AT & amp;貝爾實驗室與通用電氣公司合作的操作系統項目被設計成在GE-645大型機上運行。但是由於目標龐大,功能太多,Multics發布了壹些產品,但是性能很低,最後以失敗告終。
美國電話電報公司。t最終撤回了投入Multics項目的資源,開發者之壹的肯·湯普森(Ken Thompson)繼續為GE-645開發軟件,並最終編寫了壹款太空旅行遊戲。實際操作後,他發現這個遊戲又慢又貴——每次要75美元。
在丹尼斯·裏奇的幫助下,湯普森用PDP-7的匯編語言重寫了遊戲,並讓它在DEPDP-7上運行。這壹經歷,結合Multics項目的經驗,促使Thompson在DECPD-7上開始了新的操作系統項目。湯普森和裏奇帶領壹組開發人員開發了壹種新的多任務操作系統。這個系統包括壹個命令解釋器和壹些實用程序。這個項目被稱為UNICS(統壹信息和計算系統),因為它可以支持同時多用戶操作。後來名字改成了UNIX。
發展期
最初的Unix是用匯編語言編寫的,有些應用程序是由壹種叫做B語言和匯編語言的解釋性語言混合編寫的。b語言在系統編程方面不夠強大,於是湯普森和裏奇對其進行了改造,和1971 * *壹起發明了C語言。湯普森和裏奇在1973用C語言重寫了Unix。當時為了達到最高的效率,系統程序都是用匯編語言編寫的,所以湯普森和裏奇的這壹舉動具有極大的大膽創新和革命性意義。用C語言編寫的Unix代碼簡潔、緊湊、易移植、易讀、易修改,為Unix的發展奠定了堅實的基礎。
1974年,Thompson和Ritchie在ACM communication上聯合發表了壹篇關於UNIX的文章,這是UNIX第壹次出現在貝爾實驗室之外。此後,UNIX被政府機構、研究機構、企業和大學所註意,並逐漸流行起來。
1975年,UNIX發布了四個、五個和六個版本。在1978年,大約有600臺計算機運行UNIX。1979,版本7發布,這是最後壹個廣泛發布的研究UNIX版本。80年代發布的8、9、10版本只授權給了少數高校。此後,這個方向的研究導致了新的分布式操作系統Plan 9的出現。
1982,at &;t在version 7的基礎上開發了第壹個版本的UNIX system ⅲ,這是壹個只供銷售的商業版本。為了解決混亂的UNIX版本,AT & amp;t集成了其他大學和公司開發的各種UNIX,開發了UNIX System V Release 1。
這個新的商業發布版本的UNIX不再包含源代碼,所以加州大學伯克利分校繼續開發BSD UNIX作為UNIX系統III和v的替代方案,BSD對UNIX最重要的貢獻之壹就是TCP/IP。BSD包括TCP/IP有八大發行版:4.1C,4.2,4.3,4.3-Tahoe,4.3-Reno,Net2,4.4,4.4-lite。這些版本中的TCP/IP代碼是幾乎所有系統中TCP/IP實現的前身,包括AT & amp;測試系統V UNIX和微軟視窗。
其他公司也開始為他們自己的小型機或工作站提供商業版本的UNIX系統。有的選擇System V作為基礎版本,有的選擇BSD。BSD的主要開發者之壹Bill Joy在BSD的基礎上開發了SunOS,並最終創立了Sun Microsystems。
1991年,壹群BSD開發人員(Donn Seeley、Mike Karels、Bill Jolitz和Trenthain)離開了加州大學,成立了Berkeley軟件設計公司(BSDI)。BSDI是第壹家在廉價通用的英特爾平臺上提供全功能商業BSD UNIX的供應商。後來,Bill Jolitz離開了BSDI,開始了386BSD的工作。386BSD被認為是FreeBSD、OpenBSD和NetBSD的祖先。
美國電話電報公司。t繼續為UNIX系統V. 1987到1989增加文件鎖定、系統管理、作業控制、流和遠程文件系統,at & amp;t決定將Xenix(微軟在x86-pc上開發的UNIX版本)、BSD、SunOS和System V合並為System V Release 4(SVR4)。這個新版本結合了多種功能,結束了混亂的競爭。
1993之後,大多數商業UNIX發行商都基於SVR4開發了自己的UNIX變種。
生活的面孔
UNIX System V Release 4發布後不久,at & amp;t把它所有的UNIX版權賣給了Novell。Novell期望對抗微軟的Windows NT,但其核心市場受損嚴重。最終,Novell將SVR4的版權賣給了X/OPEN Consortium,這是壹個定義UNIX標準的工業組織。最後,X/OPEN和OSF/1合並創建了開放組。Open Group定義的幾個標準定義了什麽是UNIX,什麽不是UNIX。
實際的UNIX代碼被轉移到Santa Cruz Operation,後者後來被賣給了Caldera Systems。卡爾德拉原本出售Linux系統,交易完成後,新公司更名為SCO集團。
1127部門解散
據報道,貝爾實驗室負責UNIX研發和後續維護的部門1127於2005年8月正式解散。肯·湯普森已經退休,現在住在加利福尼亞。丹尼斯·裏奇被調到另壹個部門;道格拉斯·麥克洛伊是達特茅斯學院等的教授。
標準
POSIX是壹個開放的操作系統標準,自1980年代以來壹直在開發中,IEEE制定的POSIX標準現在是UNIX系統的基礎部分。
免費的類Unix系統
理查德·斯托爾曼建立了GNU項目來創建壹個可以自由發布的類似UNIX的系統。在過去的20年裏,這個項目壹直在成長,包含的內容也越來越多。現在,GNU project開發的產品,如Emacs、GCC等,已經成為其他各種免費發布的類UNIX產品中的核心角色。
1990年,Linus Torvalds決定編寫自己的Minix內核,最初命名為Linus' Minix,意思是Linus的Minix內核,後來改名為Linux。這個內核在1991正式發布並逐漸引起人們的關註。當GNU軟件與Linux內核相結合時,GNU軟件就形成了這個兼容POSIX的操作系統GNU/Linux的基礎。今天,GNU/Linux已經成為最活躍的自由/開源類Unix操作系統。
1994,BSD Unix走上復興之路。BSD的發展也走了幾個不同的方向,最後導致了FreeBSD,OpenBSD,NetBSD的出現。
類Unix操作系統
A/UX | AIX | BSD |蜻蜓BSD | FreeBSD | GNU |惠普-UX | IRIX | Linux | Lynxos | Mac OS X | Minix | NetBSD |下壹步| OpenBSD | QNX | SCO OpenServer | Solaris | System V | tru 64 | Xenix |更多。...