_基于S3C2440的嵌入式LINUX操作系统内核研究
第三章 嵌入式Linux内核移植实现
3.1 嵌入式Linux内核概述
Linux是最受欢迎的自由电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。Linux最早是由芬兰黑客Linus Torvalds为尝试在英特尔x86架构上提供自由免费的类Unix操作系统而开发的。该计划开始于1991年,在计划的早期有一些Minix黑客提供了协助,而今天全球无数程序员正在为该计划无偿提供帮助[7]。
内核指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统。
嵌入式Linux内核的体系结构如下:
1.进程调度:负责控制进程对CPU的使用。CPU是计算机系统中最核心的资源,调度程序负责在可运行进程中公平地选择,使其中之一成为运行进程,从而充分利用CPU的资源。同时,它也负责保证内核及时对硬件进行操作。
2.内存管理:标准Linux的内存管理支持虚拟内存,进程的代码、数据和堆栈的总量可以超过实际内存的大小。而Linux大致可以根据平台有无存储管理单元分为两个类别:一类是和标准Linux一样运行在有硬件存储管理器的处理器上,另外一类通常针对无硬件存储管理器的CPU进行裁剪和移植。
3.虚拟文件系统:隐藏了不同硬件的具体细节,为所有设备提供统一的接口。虚拟文件系统可再分为逻辑文件系统和设备驱动程序两部分。逻辑文件系统指Linux支持的文件系统,如etx2、jffs和nfs等。设备驱动程序是具体操作硬件控制器的代码。
4.网络接口:负责支持标准的网络通信协议和各种网络硬件设备。其中网络通信协议部分负责实现各种标准的链路层、网络层和传输层协议;而设备驱动程序负责对网络硬件进行具体操作。
5.进程间通信:支持进程间各种通信机制。其通信手段主要有:信号、文件锁、管道、等待队列、信号量、消息队列、共享内存和套接字。 Linux内核系统模块结构及相互依赖关系如图4所示。