系統之間差異

junnyblog發表於2009-10-23

AIX,HP-UNIX,SunOS,Linux,Windows等,作業系統繁多,如果不對各個系統差異比較清楚,不僅作業系統運用方面缺乏,同時在應用程式開發與移植會比較困難,所以這篇文章為本人對系統之間差異進行學習總結,隨時都可能更新.

[@more@]一.
1.語言差異
在Unix系統和Windows系統中整數20000在記憶體中的情況。
十六進位制表示 0x00004E20
Windows記憶體表示 20 4E 00 00
Unix記憶體表示 00 00 4E 20
這種差異帶來的問題,主要體現在以下幾個方面:
網路通訊時,當Windows和Unix之間發生網路資料傳輸
檔案儲存和讀取時,
解決這個問題的方法就是互動的雙方採用一種相同的資料編碼標準,
就是資料在傳輸和儲存的時候採用什麼方法進行編碼,具體的做法有一下幾種:
1. 數字轉換成字元傳進行互動
2. 協商一個同意的位元組順序,根據自己平臺的位元組順序還原資料
3. 採用其他標準的編碼方式,如ASN1編碼
32位系統和64位系統的差異也會出現這樣的問題。
2.變數作用域的差異
在不同的系統下,由於編譯器的不同,對變數作用域的實現機制也有所不同。
3.全域性物件的初始化
CMyObject g_Object;
系統中(SCO Unix),透過顯式建立物件的方法解決:CMyObject* g_pObject = new CMyObject;
CMyObject& g_Object = *(new CMyObject);
4. 語法檢查的差異
二.
作業系統差異
不同的作業系統中都存在一些系統的限制,如開啟檔案控制程式碼數的限制、Socket等待
佇列的限制、程式和執行緒堆疊大小的限制等.
1.檔案描述符的限制
在32為的Solaris程式中,使用標準輸入輸出函式(stdio)進行檔案的操作,最大的檔案描述符不能超過256。
2.程式和執行緒的限制
對於程式和執行緒的棧空間大小的限制,主要是執行緒棧空間的問題
3.網路通訊能力的限制
系統為了提高網路通訊的效能,提供了很多輔助的技術,其中等待佇列就是其中之一。
下面列出了幾個作業系統的最大等待佇列的大小:
作業系統 最大等待佇列
Windows 2000 Server 200
Windows XP Home 5
Solaris E250 128
4.容錯性的影響
Windows平臺的程式分配記憶體的時候,一般都會多分出一些位元組用於對齊,如果緩衝區溢位的不是太多,就不回對記憶體中其他變數的值造成影響
5.併發處理
在Solaris下面的本地執行緒庫,是一組以thr_開頭的函式,而POSIX的執行緒函式一般都已pthread_開頭。
為了程式的可移植性,建議採用POSIX的執行緒庫。
6.網路通訊

基本開發流程
1.程式碼的編寫
有一點值得注意,Windows下文字里面的回車符包含兩個字元‘n’和‘r’,而
Unix下的文字里面的回車符只包含一個字元‘n’。
2.編譯

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22630256/viewspace-1028091/,如需轉載,請註明出處,否則將追究法律責任。

相關文章