殷晓辉
中国联通宁夏分公司,宁夏 银川 750000
随着Linux嵌入式系统技术的逐步发展,其应用领域和市场份额继续快速扩大。其主要应用领域是服务系统和嵌入式系统。Linux作为一种使用类的UNIX操作系统,不仅可以在INTEL,AMD等系列个人计算机上运行,也可以在许多工作站级的电脑上面运行。
嵌入式系统定义:
嵌入式系统是将先进的计算机技术,半导体技术和电子技术与各个行业的具体应用相结合的产物。其定义为:以应用为中心、以计算机技术为基础、软件硬件可剪裁、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式Linux操作系统是指对Linux经过裁剪小型化后,可固化在存储器或单片机中,应用于特定嵌入式场合的专用Linux操作系统。与其它操作系统相比,Linux的特点如下:
1)Linux操作系统能够与UNIX系统相互兼容。Linux系统几乎具有全部UNIX系统特征,而且能够适合POSIX国际标准的系统;
2)Linux系统有自由的软件和开放的源代码特征。Linux项目一开始就与GNU项目紧密联系起来,它的许多重要组成部分直接来自GNU项目,只要遵从GPL条款,任何人就可以自由使用Linux源代码;
3)Linux操作系统具有网络性能高和安全性强的特点。Linux支持所有标准因特网协议和提供各种高性能服务。Linux操作系统包含了大量网络管理、网络服务等工具,利用它可以建立起高效的防火墙、路由器、工作站等功能;
4)Linux系统支持多样化的硬件平台。例如RISC、CISC、32位、64位等各种处理器,Linux操作系统都能支持它们运行。
Linux系统调度CPU的时间是通过调度固定的时间片(time slices)来实现的。例如最开始进程赋予一个高的优先级,在某个进程的时间片内,这个进程如果放弃CPU,它的优先级将不会变,或者变的更高。如果一个进程使用完它的时间片,它的优先级将会变低。基于以上特征,Linux操作系统的实时性不足主要体现在几个方面:
1)Linux操作系统内核是非抢占式的。比如当普通进程运行在核心态时,实时进程优先级低于普通进程;
2)Linux操作系统的平均响应时间最少为数10ms,对响应时间要求更严的实时系统无能为力;
3)由于实时调度策略中的RR和FIFO算法存在,无法严格保证具有高优先级的实时进程总是优先于普通进程执行;
4)Linux操作系统内核的进程经常关闭中断。如果低优先级的进程关闭了中断,即使有高优先级实时进程的中断发生,导致系统最终也无法响应。
Linux操作系统在通讯和网络功能方面都优于绝大多数操作系统。Linux的网络功能主要有以下几点:
1)Linux操作系统支持TCP/IP协议。任何系统必须遵循的网络协议是TCP/IP,TCP/IP对建网提出了统一的规范的要求。
2)Linux支持多样的网络数据库。数据库是信息资源的重要来源,Linux对数据库支持也不例外。而且Linux支持的大型数据库很多,如ORACEL、 SQLSERvER等。
3)Linux系统拥有丰富的网络服务功能。Linux提供了丰富的网络服务,如电子邮件、文件传输、网络新闻等。
绝大多数计算机安全问题是由于管理不当造成,而不是系统软件本身的漏洞。因此严格的管理会极大程度地降低系统被非法入侵的风险,下面是几种常见的安全漏洞。
1)特权软件的安全漏洞。特权软件的一种攻击的方法是通过IFS(Input Files Separator,输入字段分隔符) shell 变量来实现的。IFS变量用于决定传给shell 字符串的分隔符。例如,一个程序如果调用函数system()或popen()执行一个shell 命令,那么该命令首先由shell 来分析,如果执行的用户可以控制IFS 环境变量,就可能会导致不可预测的结果。另一个攻击方法是通过使用HOME环境变量;
2)特洛伊木马程序。它与一般用户想要执行的程序从外观上(如文件名)看很相似,例如编辑器、登录程序或者游戏程序等。特洛伊木马程序与一般用户想要执行的程序表面上很相似,执行的却是其它的操作,等到用户发现,却为时已晚。例如删除文件、窃取密码和格式化磁盘等;
3)研究源代码的漏洞。许多入侵者是通过研究一些程序的源代码而成功的攻击系统的;
4)网络监听及数据截取。威胁计算机网络安全的一个重要因素是计算机之间传输的数据可以很容易的被截取。其原因在于异种机的互联,敏感数据的传输往往不在系统的控制之下,有许多现成的软件可以监视网络上传输的数据。
在设计inetd 服务程序时,要特别注意buffer overflow(缓存区溢出)的问题,也就是以下这种状况: char buffer_overflow[64];fscanf(stdin,“%s”,buffer_overflow);
几乎所有的安全漏洞都是由此而来的,黑客高手可以透过buffer 塞爆,然后塞进他自己的程序进来,因此一定要杜绝这种使用方式。
在Linux网络操作系统中,网络数据传输需要经历4个层次:用户进程、socket、网络协议、网络设备。它的网络编程是通过socket套接字接口来实现的,应用程序通过使用socket统一接口收发网络上的数据,网络的socket数据传输是一种特殊的I/O,socket好像通信线插口,只要通信双方都有插口,两个插口之间有通信线连接,就可以通信,这样方便了联网应用程序的编程,一个套字节是与网络的一个连接。应用程序中使用套接字来调用套接口,套接字可认为是指向套接口的指针,就像文件描述符是指向文件的指针一样。一个Socket有3个特征:网域、类型、协议。网络编程基本模式有以下3种:
1)客户机/服务器模式。客户机/服务器模式在操作过程中采取的是主动请示方式,首先服务器方要先启动,并根据请示提供相应服务。网络编程的基本模式是client/serve:模式,该模式的建立基于以下两点:一、非对等作用;二、通信完全是异步的;
2)面向连接协议的字节流套接字编程。字节流套接字编程socket采用的是传输控制协议TCP。TCP提供面向连接的流传输,面向连接对可靠性的保证首先是它在进行数据传输前,必须在信源端和信宿端建立互相的连接;
3)非连接协议的数据报套接字编程。数据报式socket采用的是用户数据报协议UDP,提供无连接数据报传输,主要应用在高可靠性、低延迟的局域网上。它的优点是高效率低开销,不用建立连接和撤销连接,缺点是不可靠,报文丢失后需重发。
Linux操作系统完全TCP/IP协议簇,其内核结构在网络方面是非常完善的。Linux操作系统支持多种类型的套接字地址簇并将其抽象为统一的套接字接口socket,这样方便了互联网应用程序的编程,而且也为网络应用程序之间的数据通信提供了便利。
[1]孙琼.嵌入式Linux应用程序开发详解[M].北京:人民邮电出版社,2006,7.
[2]张斌,高波,等.Linux网络编程[M].北京:清华大学出版社,2000,1.