3.2.1 嵌入式Linux操作系统
3.2.1 嵌入式Linux操作系统
1.嵌入式Linux操作系统简介
嵌入式Linux是将日益流行的Linux操作系统进行裁剪、修改,使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式Linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。嵌入式Linux的版权是免费的,由全世界的自由软件开发者提供支持,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,因为有许多公开的代码可以参考和移植,有实时性能RT_Linux、Hardhat Linux等嵌入式Linux支持,实时性能稳定性好,安全性好。
Linux操作系统的性能特点使得它成为一个适合于嵌入式开发和应用的操作系统,它能方便地应用于智能手机、智能监控、机顶盒以及工业控制等智能信息产品中。目前,在嵌入式行业的Linux操作系统越来越受到各种商家的青睐。在所有的操作系统中,嵌入式Linux操作系统是一个发展最快,应用最为广泛的操作系统,嵌入式Linux本身的种种特性也使其成为嵌入式开发的首选。
2.Linux操作系统版本
Linux的发行版本众多,拥有数量庞大的用户,如优秀社区技术支持的Fedora,优秀易用桌面环境的Ubuntu,优秀的硬件检测和适配能力的Knoppix等。内核是Linux操作系统的最重要的部分,Linux内核开发经过了20多年的时间,其架构已经十分稳定。Linux内核的编号采用如下形式:
例如2.6.34.14各数字的含义如下:
第1个数字(2)是主版本号,表示第2大版本。
第2个数字(6)是次版本号,有两个含义:既表示是Linux内核大版本的第6个小版本,同时因为6是偶数表示为发布版本(奇数表示测试版)。
第3个数字(34)是主版本补丁号,表示指定小版本的第34个补丁包。
第4个数字(14)是次版本补丁号,表示次补丁号的第14个小补丁。
在安装Linux操作系统的时候,尽量不采用发行版本号中的小版本号是奇数的内核,因为开发中的版本没有经过比较完善的测试,有一些漏洞是未知的,使用中有可能造成不必要的麻烦。
3.Linux系统内核模块
Linux的内核主要由5个子系统组成:进程调度、内存管理、虚拟文件系统、网络接口和进程间通信。
(1)进程调度(SCHED)
进程调度指的是系统对进程的多种状态之间转换的策略。Linux下的进程调度有3种策略:SCHED_OTHER、SCHED_FIFO和SCHED_RR。
1)SCHED_OTHER是用于针对普通进程的时间片轮转调度策略。在这种策略中,系统给所有的运行状态的进程分配时间片。在当前进程的时间片用完之后,系统从进程中优先级最高的进程中选择进程运行。
2)SCHED_FIFO是针对运行的实时性要求比较高、运行时间短的进程调度策略。在这种策略中,系统按照进入队列的先后顺序进行进程的调度,在没有更高优先级进程到来或者当前进程没有因为等待资源而阻塞的情况下,会一直运行。
3)SCHED_RR是针对实时性要求比较高、运行时间比较长的进程调度策略。这种策略与SCHED_OTHER的策略类似,只不过SCHED_RR进程的优先级要高得多。系统分配给SCHED_RR进程时间片,然后轮循运行这些进程,将时间片用完的进程放入队列的末尾。
由于存在多种调度方式,Linux进程调度采用的是“有条件可剥夺”的调度方式。普通进程中采用的是SCHED_OTHER的时间片轮循方式,实时进程可以剥夺普通进程。如果普通进程在用户空间运行,则普通进程立即停止运行,将资源让给实时进程;如果普通进程运行在内核空间,需要等系统调用返回用户空间后方可剥夺资源。
(2)内存管理(MMU)
内存管理是多个进程间的内存共享策略。在Linux系统中,内存管理的主要概念是虚拟内存。
虚拟内存可以让进程拥有比实际物理内存更大的内存,可以是实际内存的很多倍。每个进程的虚拟内存有不同的地址空间,多个进程的虚拟内存不会冲突。
虚拟内存的分配策略是每个进程都可以公平地使用虚拟内存。虚拟内存的大小通常设置为物理内存的两倍。
(3)虚拟文件系统(VFS)
在Linux下支持多种文件系统,如EXT、EXT2、MINIX、UMSDOS、MSDOS、VFAT、NTFS、PROC、SMB、NCP、ISO9660、SYSV、HPFS、AFFS等。目前Linux下最常用的文件格式是EXT2和EXT3。
EXT2文件系统用于固定文件系统和可活动文件系统,是EXT文件系统的扩展。EXT3文件系统是在EXT2上增加日志功能后的扩展,它兼容EXT2。两种文件系统之间可以互相转换,EXT2不用格式化就可以转换为EXT3文件系统,而EXT3文件系统转换为EXT2文件系统也不会丢失数据。
(4)网络接口
Linux是在Internet飞速发展的时期成长起来的,所以Linux支持多种网络接口和协议。网络接口分为网络协议和网络驱动,网络协议是一种网络传输的通信标准,而网络驱动则是对硬件设备的驱动程序。Linux支持的网络设备多种多样,几乎目前所有网络设备都有网络驱动程序。
(5)进程间通信
Linux操作系统支持多进程,进程之间需要进行数据的交流才能完成控制、协同工作等功能,Linux的进程间通信是从UNIX系统继承过来的。Linux下的进程间的通信方式主要有管道方式、信号方式、消息队列方式、共享内存和套接字等。