亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

其實Unix很簡單

添加時間:2011-3-3  添加: admin 

很多編程的朋友都在網上問我這樣的幾個問題,Unix怎么學?Unix怎么這么難?如何才能學好?并且讓我給他們一些學好Unix的經驗。在絕大多數時候,我發現問這些問題的朋友都有兩個特點:

1)對Unix有畏難心理,對其沒有信心;

2)喜歡用拿Windows來和Unix做比較。

 兩種特點就像兩個心理暗示,暗示著自己Unix很不好學,暗示著Unix很糟糕,不如Windows好。于是,自己也就被自己的這種長期的暗示所催眠了。因為,從一開始就有畏難情緒,所以也就覺得Unix不好,覺得非常很吃力,最后還會導致對Unix的厭惡和反感的情緒。所以,為了糾正上述朋友們的心理暗示。我想寫下這篇文章,想告訴大家,Unix真的很簡單。

在正式敘述簡單的Unix之前,我想做幾點說明:(以免陷入無意義的爭論)

1)  本文是站在開發者的角度來說明的,所以,如果有朋友不同意我的觀點,請也以開發者的角度來向我提出質問和討論,本人非常歡迎。

2)  本文難免要用Windows來和Unix做對比。這并不代表我不喜歡Windows,也不代表我要叫你放棄Windows。我們也知道這種對比已經沒有什么意思了,但因為眾多的朋友被Windows先入為主了,所以,我一定要拿Windows來開刀,才能扭轉那個心理暗示。僅此而已。

       OK,言歸正傳。先說Unix的一個最重要的特點——“高內聚,低藕合!也就是說,Unix下的各種應用程序都和別人不相干。這就是貫穿整個Unix的思維——模塊和程序的高度獨立性。這樣的設計和做法,會讓你的系統比較的穩定,也會讓你的系統特別地容易管理和維護。Unix下的應用程序們就像一支正規軍一樣排列地整整齊齊,只要司令(內核)還在,系統是不會因為某個軍隊的損失而無法自舉的。而Windows的應用程序們就像一片樹林一樣,從地表上看過去,樹木們排列地整整齊齊,但是他們的樹根在地下卻相互纏繞在一起,剪不斷,理還亂,異常地復雜。

 

       高內聚,低藕合的給Unix造成的結果是,其系統中基本上都是功能單一的小程序,這些小程序就像積木一樣,當我們需要構造建一個自定義的建筑時,大多數情況下,我們只需要做的只是一個搭積木的簡單游戲。Windows建設得富麗堂皇,可惜,別人的積木你幾乎不可能拿到自己的建筑中來。總是要你模仿或重寫。

 

2.

(插一句:你是否注意到在網上下載Windows的軟件時,會有一種所謂的綠色軟件?這就是對Windows的最大諷刺,Windows下裝一個軟件,N個DLL放到Windows系統目錄下,注冊表里寫入N個鍵值,還有很多你不知道的動作。而在Unix裝軟件,你不用擔心你的系統目錄下會莫明其妙地多出些亂七八糟的文件。就是copy那么簡單,那怕是rpm自動安裝,安裝完后,你也能夠查詢到軟件安裝后對系統所做的改變。所以,你在Unix下分發你的軟件時,你會覺得比Windows下要做得簡單了許多許多。)

 

       再說說Unix的另一個最重要的特點——“所有的設備都可以像文件一樣地操作。簡單吧。所有的調備,文件、打印機、顯示器、終端、網絡、軟盤、磁帶、USB、CDROM、等等的I/O操作,都以文件描述符的方式進行操作。兩個Unix下最重要的系統調用read/write就可以勝任所有設備的I/O了。Unix早就在/dev目錄下為你建好了這些文件。使用起來很簡單。

 

       也許很多人都覺得Unix的命令行太過復雜。一個命令有著若干的參數,異常地復雜。但之所以今天Unix下的應用程序還在以字符界面為主,這恰好體現了Unix的簡單的特征。這也是Unix的另一個特點——“命令的相互支持性,命令們通過一個管道或是重定向,可以互相聯系在一起,再加以Shell腳本的支持,哪怕要實現一些復雜的功能(比如一個小型的文本數據庫),也是簡單之極。

 

       如果上面的論述依然不能讓你信服Unix很簡單,那么,讓我們來用一些具體地實際的例子來看一下,Unix是如何簡單的。讓我們試著做下面的這樣一個假設:如果我們在學習編程的時候一開始是學Unix,然后轉去做Windows,那會是怎么樣的一個情況?

 

1)  我們在Unix下創建進程,使用fork調用。到了Windows下,我們查了MSDN,發現了一個叫CreateProcess的系統調用可以創建進程,但我們卻發現這個系統調用有10個參數。而Unix下的fork卻一個參數都沒有。這種情況下,你是否會有一種頭大的感覺?因為,在Unix下,你根本看不到會有10參數這樣復雜的系統調用API。

 

2)  我們在Unix下操作文件權限很簡單,文件權限分三組(本人,同組,別人),每組都是可讀,可寫,可執行。兩個簡單的系統調用chmod/chown就搞定。到了Windows下,如果是NTFS,如果要以程序的方式設置文件權限,呵呵,你需要先了解什么是:SID,什么是DACL,什么是SACL,什么是ACE,還有十幾相關的系統API函數等著你。(參看我的《以程序操作NTFS文件權限》)你也許會覺得這么復雜的安全策略是讓系統更安全的基礎,可以自從Windows出現的那一天以后,在安全方面的表現就沒有勝過Unix。這無疑讓人感到Windows做了一件吃力不討好的事。

 

(插一句:Unix下的用戶切換是相當簡易方便的。而Windows下的用戶切換會導致你需要退出當前用戶的前臺程序。這導致了Windows下的用戶幾乎無一例外地都會選擇在超級用戶的權限下工作/上網,這完全是讓自己的機器在裸奔,所以,Windows下的病毒一旦在系統中運行就為所欲為了。而Unix下,很少用戶會以root身份操作本機,因為切換用戶非常方便。)

 

3)  在Unix下,用戶有ID,用戶組有ID,進程/線程都有ID。ID很簡單易懂,就像我們的身份證一樣。到了Windows下,用戶標識叫Token,進程標識叫Handle(其實也就是一個DWORD的類型),我看到網上很多問題都在問Windows下的Handle的概念問題。我一直在想,為什么微軟不取一個簡單易懂的術語?要取得那么抽象,那么讓人很迷惑。雖然這讓Windows看起很NB,但也會因此加大了學習復雜度。(Windows的開發學習復雜度要比Unix復雜多了,而且有太多的看似很高深的術語讓人一頭霧水)

 

4)  讓我們再來看一下用戶管理和程序所有者方面的東西。在Unix下,需要你做的是配置NIS服務器和NFS服務器(以Autofs自動mount),簡潔,清楚。到了Windows下,與其相似的是一個叫Domain的東西(主域控制器),首先,為了加入域,你需要重啟電腦(Unix下只需要配置/etc/nsswitch.conf文件來告訴本機的用戶登錄源,無需重啟),而對開發者來說,Unix的這個配置對程序是完全透明的。而Windows的域用戶和本地用戶需要一個域名來區分。在程序中切換用戶時,Unix只需要setuid/seteuid就行了,Windows對此有三個比較復雜的API:CreateProcessAsUser, ImpersonateLoggedOnUser, LogonUser,其復雜度就不用比較了。另外,在Domain方式下,你的Document and Setting目錄下的文件,會全部放到Domain服務器上去,你在別的機器上登錄時,需要下載這些文件。最后,我倒不擔心你和網友的MSN聊天記錄會因為你的登錄而到處都是,我擔心的是,你在這么復雜的管理環境中寫出來的代碼是否能讓別人放心?:-(

 

5)  在Unix下,要把自己的程序加入系統的啟動服務只需要在/etc/init.d中配置就行了。寫下一個有啟動停止功能腳本,以特殊命名的方式鏈接到不同啟動模式目錄下就行了。Windows下加一個啟動服務,如果你不編寫程序,估計比較困難。

 

6)  在Unix下,如果要取得系統的信息。只需要到/proc目錄下去cat那堆文件。所有進/線程的狀態、命令行、內存/交換區使用情況、打開的文件描述符,等等,系統的CPU,內存,交換區,內存文件IO,分區,信息,網絡,系統運行狀態,系統設備,等等,要有多詳細就有多詳細,而且完全是純文本的,直接就可以看了。到了Windows下,要窮舉系統當前進程的信息,就不是一樣很容易的事,更別說要取得別的信息了。

 

 

我很佩服微軟把操作系統搞得那么復雜,又是注冊表,又是安全策略,又是OLE,又是COM……。每次打開regedit.exe時,我根本不敢碰HKEY_CLASSES_ROOT,因為我看著里面那些成千上萬個CLSID,我有點暈菜。

 

自1995年以來,10來年過去了。微軟推出了多種各式各樣的技術。我還記得Visual Studio 6.0中還有兩個叫做FoxPro和J++的東西,FoxPro來自Foxbase,還有個幾年,J++好像就沒有幾年。ActiveX Control完全是一個失敗的技術,而那個叫做VB的編程語言,今天看來,它的確毀了很多很有潛力的程序員。在COM出現的時候,不知道今天還有多少人還記得一個叫MTS的玩意?今天,不知道還有多少人記得有一個叫ODBC的東西?在這種復雜混亂的Windows世界中,是否讓你疲于追趕?今天的.NET不知道又有多少技術會隨著時間所沉淀?在Windows上面,我們學習了許多的失敗技術或是說是過渡技術。而我們的Unix自從上紀70年代以來,就沒有多大的變化,而因為Unix應運而生的C語言直到今天依然光彩奪目。我相信這個30多年來久經考驗還那么簡單的Unix。

 

關健詞:Unix

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站