再上一篇:6.5 嵌入式 Linux
上一篇:6.5.2 Linux 的开发模式
主页
下一篇:6.5.4 嵌入式 Linux 的发展方向
再下一篇:6.5.5 基于 Intel XScale 处理器的开发环境
文章列表

6.5.3 嵌入式 Linux 的体系结构

嵌入式系统(修订本)——Intel XScale 结构与开发 陈章龙 著

一个可用的嵌入式Linux系统包括内核和应用程序两部分。应用程序负责系统的部分初 始化,基本的人机界面,必要的命令等内容。内核为应用程序提供一个虚拟的硬件平台,以 统一的方式对资源进行访问,并且透明地支持多任务。我们这里讲述的是嵌入式Linux内核 的体系结构。
嵌入式Linux内核可以分为六部分:进程调度,内存管理,文件系统,进程间通信,网 络,设备驱动。这几部分的关系如图6-6:

网络 文件系统 进程间通信

驱动程序 内存管理 进程调度

硬件抽象层

硬件


表示依赖关系

图6-12 Linux内核结构和依赖关系

进程调度控制CPU资源的分配。Linux实现基于优先级的抢占式多任务。在这种调度方 式下,系统中运行的进程是所有可运行进程中优先级最高的那个。在嵌入式系统的应用中, 有很多实时需求,所以有些嵌入式的Linux通过改变进程调度来实现实时调度。嵌入式Linux 内核中进程调度部分和具体的硬件平台相关性不大,因为调度算法在所有硬件平台上实现都 是相同的。但是进程调度一般都是通过硬件的时钟中断来实现的,这一部分和具体硬件相关。 另外在进程切换部分也和硬件平台相关。比如i386和ARM两种体系下进程切换方法就是完 全不同的。进程切换部分一般用汇编语言实现。
进程调度的代码主要在kernel/sched.c中实现。与硬件相关的代码在arch/arm/kernel目录 下。
内存管理系统管理计算机的内存资源。Linux在具有内存管理部件(MMU)的硬件中支 持虚拟内存,使用了硬件提供的分页机制。Linux内存管理实现了进程之间的内存保护,内 存共享。内存管理。内存管理分为硬件相关和硬件无关两部分。硬件相关部分初始化内存, 处理缺页中断,把硬件提供的分页机制抽象成三级页面映射。硬件无关部分提供内存分配, 内存映射等功能。有些嵌入式设备采用的CPU不具有MMU,在这种设备里,需要把标准Linux 系统的虚拟内存管理系统去掉。uC-linux就是专门为没有MMU的CPU改造的Linux系统。
硬件无关的内存管理代码在mm/目录下。与硬件相关的部分在arch/arm/mm目录下。

Linux文件系统的结构和Unix系统类似。系统首先具有一套虚拟文件系统(VFS)接口, 访问文件系统都使用这样一套接口。所有真正的文件系统都挂接在虚拟文件系统下。通过这 种方式,Linux可以使用统一的接口对所有类型的文件系统进行访问。可以很方便地在一个 运行系统中支持多个文件系统,并且可以支持一些特殊的文件系统(比如proc文件系统)。

一个文件系统又可以分为逻辑文件系统和设备驱动程序两部分。嵌入式Linux中文件系 统都是建立在块设备上。典型的块设备是磁盘,闪存和内存也可以以块设备的形式存取。在 一个块设备上可以建立任何逻辑文件系统,比如ext2、fat、minix、jffs等。
虚拟文件系统的代码在mm/vfs/目录下。各逻辑文件系统在mm/目录下。 进程间通信(IPC)。一般情况下,进程在自己的地址空间运行,不会互相干扰。但是
有很多应用要求在进程间传递信息,Linux也提供Unix系统中常用的进程间通信机制。主要 的进程间通信方式有:管道(pipe)、文件锁、System V IPC、信号(signal),共享内存。因 为Linux支持网络,所以还可以使用网络接口进行进程间通信。Linux进程间通信机制和硬件 体系无关。大多数的平台上都支持同样的方式。
网络。Linux是在互联网环境下产生的操作系统,所以它天生具有对网络的良好支持。 Linux内核支持多种网络协议。IP、IPv6、IPX、Apple talk、Blue tooth。并且支持路由、防 火墙过滤等网络设备功能。提供标准的BSD socket编程接口。很重要的一点,在Linux系统 上有大量网络应用。所有常用的基于IP的应用在Linux世界里都可以以GPL方式获得。嵌入 式系统日益应用在网络的环境下,越来越多的嵌入式设备都集成一个通信接口和一个通信协 议栈。Linux内核网络代码和硬件体系无关。
网络代码在net/目录下。按照协议分成多个子目录。

Linux中除CPU和内存以外的资源都用驱动程序的形式管理。内核源代码的绝大部分都 是各种驱动程序。并且随着系统支持的硬件的增加,代码增加量最大的也是驱动程序。Linux 有三类设备:字符设备、块设备和网络设备。