天天看點

系統之間差異

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

[@[email protected]]一.

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/,如需轉載,請注明出處,否則将追究法律責任。

轉載于:http://blog.itpub.net/22630256/viewspace-1028091/

繼續閱讀