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/