亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

其實Unix很簡單

系統 2076 0

其實 Unix 很簡單

?

陳皓

?

很多編程的朋友都在網上問我這樣的幾個問題, 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 建設得富麗堂皇,可惜,別人的“積木”你幾乎不可能拿到自己的建筑中來??偸且隳7禄蛑貙?。

?

插一句: 你是否注意到在網上下載 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 就是這么簡單,各位想在 Unix 下學開發的朋友, Windows 那么復雜的操作系統都過來了,你還會怕這么簡單的 Unix 么?

?

?

( 轉載時請注明作者和出處。未經許可,請勿用于商業用途 )

更多文章請訪問我的 Blog: http://blog.csdn.net/haoel

?



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1533720


其實Unix很簡單


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久国产精品亚洲一区二区 | 一本大道香蕉久在线不卡视频 | 天天做.天天爱.天天综合网 | 中文字幕日韩国产 | 亚洲欧美成人 | 亚洲国产天堂 | 久久这里只有精品6 | 久久青青草原精品影院 | 久久996re热这里有精品 | 高清一级毛片一本到免费观看 | 狠狠色狠狠色综合婷婷tag | 久久在线看 | 99九九精品国产高清自在线 | 特黄一级大片 | 国产伦码精品一区二区三区 | 在线播放亚洲精品富二代91 | 国产成人久久久精品毛片 | 在线亚洲免费 | 亚洲成a人在线播放www | 四虎免费大片aⅴ入口 | 80岁色老头69av | 精品在线一区二区 | 亚洲视频中文字幕在线 | 韩日视频在线观看 | 日本一极毛片兔费看 | 99久热re在线精品视频 | 一区二区不卡在线观看 | 久久亚洲精品国产亚洲老地址 | 精品久久久久中文字幕日本 | 四虎色影院 | 久操综合在线 | 欧美成年黄网站色高清视频 | 中文字幕最新中文字幕中文字幕 | 国产高清精品久久久久久久 | 综合欧美视频一区二区三区 | 日本色吧| 99热中文| 免费精品美女久久久久久久久 | 在线观看欧美国产 | 亚洲日本中文字幕 | 免费香蕉成视频成人网 |