系统之间差异

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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22630256/viewspace-1028091/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值