《嵌入式linux操作系统的组成与版本》由会员分享,可在线阅读,更多相关《嵌入式linux操作系统的组成与版本(41页珍藏版)》请在金锄头文库上搜索。
1、第一部分第一部分 Linux系统概述系统概述1嵌入式linux操作系统的组成与版本概要概要Linux定义定义Linux种类种类Linux优势优势如何选择如何选择linux版本版本 Linux 内核简介内核简介2嵌入式linux操作系统的组成与版本Linux的定义的定义Linux一般是指一般是指Linux内核、内核、Linux系统、系统、Li nux发行版。发行版。严格意义上说严格意义上说Linux是指由是指由Linus Torvalds维护的并发布维护的并发布的内核。它的代码基只包括内核而不包括其它方面的应用。的内核。它的代码基只包括内核而不包括其它方面的应用。内核提供系统核心服务,如进程管理
2、,进程的调度,虚拟内核提供系统核心服务,如进程管理,进程的调度,虚拟文件系统,内存的管理等等。文件系统,内存的管理等等。嵌入式嵌入式Linux,一般是指把,一般是指把Linux内核移植到一个专用嵌内核移植到一个专用嵌入式设备的入式设备的CPU和主板上。现在有很多公司提供嵌入式和主板上。现在有很多公司提供嵌入式Linux解决方案。通常包括一个移植的内核、嵌入式解决方案。通常包括一个移植的内核、嵌入式Linux的开发工具以及根据应用需要裁减的应用程序等,的开发工具以及根据应用需要裁减的应用程序等,有时还提供实时扩展的内核。就大部分而言,嵌入式有时还提供实时扩展的内核。就大部分而言,嵌入式Linux
3、和桌面和桌面Linux提供的提供的API函数和内核源代码都是相同函数和内核源代码都是相同的。的。开发工具主要包括源码浏览器、交叉编译器、调试器、开发工具主要包括源码浏览器、交叉编译器、调试器、CVS等项目管理软件等等。这些工具一般都是装在主机等项目管理软件等等。这些工具一般都是装在主机上。上。 3嵌入式linux操作系统的组成与版本Linus Torvalds(莱纳斯(莱纳斯.托瓦茨)托瓦茨) 托瓦兹1969年12月28日出生于芬兰赫尔辛基市, 芬兰瑞典。人现受聘于开放源代码开发实验(OSDL : Open Source Development Labs, Inc)。 Linux的诞生显得充满
4、了偶然。莱纳斯经常要用他的终端仿真器(Terminal Emulator)去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统,这些在后来成为了Linux第一个内核的雏形。当时,他年仅21岁。 在自由软件之父理查德斯托曼(Richard Stallman)某些精神的感召下,莱纳斯很快以Linux的名字把这款类Unix的操作系统加入到了自由软件基金(FSF)的GNU计划中,并通过GPL的通用性授权,允许用户销售、拷贝并且改动程序,但你必须将同样的自由传递下去,而且必须免费公开你修改后的代码。这说明,Linux并不是被刻意创造的,它完全是日积月累的结果,是经验
5、、创意和一小段一小段代码的集合体。 4嵌入式linux操作系统的组成与版本嵌入式嵌入式Linux种类种类嵌入式系统的划分一般是根据使用嵌入式系统的划分一般是根据使用对象对象进行划分,进行划分,消费类电子、工控设备等。为了更好的理解所设消费类电子、工控设备等。为了更好的理解所设计的系统,可以按照计的系统,可以按照尺寸尺寸,时间约束时间约束,网络网络,用用户交互户交互程度等因素划分。程度等因素划分。尺寸:小系统,中等系统,大系统尺寸:小系统,中等系统,大系统小系统小系统CPU的性能比较低,的性能比较低,ROM2MB RAM4MB 中系统中系统CPU的性能中等,的性能中等,ROM32MB RAM64
6、MB左左右右大系统大系统CPU性能高,存储量大性能高,存储量大时间约束:实时,非实时时间约束:实时,非实时网络连接性网络连接性用户交互用户交互5嵌入式linux操作系统的组成与版本嵌入式嵌入式Linux种类种类是否支持是否支持MMU不支持不支持MMU:ucLinux,主要应用在,主要应用在ARM7系系列微处理系统中,如三星公司的列微处理系统中,如三星公司的S3C44B0,S3C4510等,无等,无MMU,不支持虚地址,直接,不支持虚地址,直接访问内存,所有程序中访问的地址都是物理地访问内存,所有程序中访问的地址都是物理地址。址。支持支持MMU:嵌入式:嵌入式Linux,主要应用在,主要应用在A
7、RM9系列微处理器系统中,如三星公司的系列微处理器系统中,如三星公司的S3C2410,Intel公司的公司的PXA255等。等。6嵌入式linux操作系统的组成与版本MMU实现虚拟存储空间实现虚拟存储空间 即即将虚拟存储空间影射到实际物理存储空间。将虚拟存储空间影射到实际物理存储空间。使编程使编程人员不用考虑具体程序所放在物理存储空间的具体位人员不用考虑具体程序所放在物理存储空间的具体位置和程序的大小。置和程序的大小。存储器访问权限的控制存储器访问权限的控制 任务间通讯,对自己的内存、堆栈等进行保护,只能通任务间通讯,对自己的内存、堆栈等进行保护,只能通过管道、信号量、共享内存等方式进行通讯。
8、过管道、信号量、共享内存等方式进行通讯。控制控制Cache 。7嵌入式linux操作系统的组成与版本Linux的主要特点的主要特点开放性开放性开放性是指系统遵循世界标准规范,特别是遵循开放系统互连开放性是指系统遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。)国际标准。多用户多用户多用户是指系统资源可以被不同用户各自拥有使用,即每个用户多用户是指系统资源可以被不同用户各自拥有使用,即每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响。对自己的资源(例如:文件、设备)有特定的权限,互不影响。多任务多任务多任务是现代计算机的最主要的一个特点。它是指计算机同时执多任务是现代计
9、算机的最主要的一个特点。它是指计算机同时执行多个程序,而且各个程序的运行互相独立。行多个程序,而且各个程序的运行互相独立。 Linux系统调度每系统调度每一个进程平等地访问微处理器。一个进程平等地访问微处理器。良好的用户界面良好的用户界面Linux向用户提供了两种界面:用户界面和系统调用。向用户提供了两种界面:用户界面和系统调用。用户界面可分为基于文本的命令行界面和图形界面,作为人机交用户界面可分为基于文本的命令行界面和图形界面,作为人机交互界面。互界面。系统调用给用户提供编程时使用的界面。用户可以在编程时直接系统调用给用户提供编程时使用的界面。用户可以在编程时直接使用系统提供的系统调用命令。
10、使用系统提供的系统调用命令。8嵌入式linux操作系统的组成与版本Linux的主要特点的主要特点设备独立性设备独立性指操作系统把所有外部设备统一当作成文件来看待,指操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱动程序,任何用户都可以象使用文只要安装它们的驱动程序,任何用户都可以象使用文件一样,操纵、使用这些设备,而不必知道它们的具件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。体存在形式。丰富的网络功能丰富的网络功能完善的内置网络是完善的内置网络是Linux的一大特点。的一大特点。可靠的系统安全可靠的系统安全Linux采取了许多安全技术措施,包括对读、写进行权采取了许多
11、安全技术措施,包括对读、写进行权限控制、带保护的子系统、审计跟踪、核心授权等。限控制、带保护的子系统、审计跟踪、核心授权等。良好的可移植性良好的可移植性可移植性是指将操作系统从一个平台转移到另一个平可移植性是指将操作系统从一个平台转移到另一个平台使它仍然能按其自身的方式运行的能力。台使它仍然能按其自身的方式运行的能力。9嵌入式linux操作系统的组成与版本嵌入式嵌入式Linux优势优势Linux的费用低;的费用低;Linux的所有部分可以充分地定制的所有部分可以充分地定制 ;Linux可以运行在低档,便宜的硬件平台;可以运行在低档,便宜的硬件平台;Linux的功能是强大的;的功能是强大的;Li
12、nux对源代码质量有一个高标准;对源代码质量有一个高标准;Linux内核非常小,而且紧凑;内核非常小,而且紧凑;Linux有很好的支持;有很好的支持;Linux有很多合适的工具;有很多合适的工具;10嵌入式linux操作系统的组成与版本Linux的版本的版本内核版本与发型版本内核版本与发型版本操作系统的操作系统的内核版本内核版本指的是在指的是在Linus本人本人领导下的开发小组开发出的系统领导下的开发小组开发出的系统内核的内核的版本版本号号,如如2.4.x,2.6.x。有一些组织或商业厂家有一些组织或商业厂家, 将将Linux系统的系统的内核与外围应用软件和文档包装起来内核与外围应用软件和文档
13、包装起来, 并并提供一些系统安装界面和系统设定与管提供一些系统安装界面和系统设定与管理工具理工具, 这样就构成了一个这样就构成了一个发行版本发行版本,如,如 RedHat红帽子(红帽子(FeDora斐徳拉)、斐徳拉)、Debian蝶变蝶变 (UBuntu乌本图)。乌本图)。11嵌入式linux操作系统的组成与版本如何选择如何选择Linux的版本的版本DIY自己动手做一个满足需要的自己动手做一个满足需要的Linux版版本本选择商用选择商用Linux版本、自由的、免费的版本、自由的、免费的授权和涉及到的授权授权和涉及到的授权是否满足你的需要,是否有合适的开发工具是否满足你的需要,是否有合适的开发工
14、具是否能够提供足够的支持是否能够提供足够的支持信誉信誉文档文档12嵌入式linux操作系统的组成与版本嵌入式嵌入式Linux发展现状发展现状RT-Linux RT-Linux是利用是利用Linux进行实时系统开发比较早的进行实时系统开发比较早的尝试,是一种尝试,是一种硬实时操作系统硬实时操作系统。目前。目前RT-Linux已成功已成功应用于航天飞机的空间数据采集、科学仪器测控,以应用于航天飞机的空间数据采集、科学仪器测控,以及电影特技图像处理等众多领域。及电影特技图像处理等众多领域。RT-Linux的原理是采用双内核机构,即将的原理是采用双内核机构,即将Linux的的内核代码进行少量修改,内核
15、代码进行少量修改,将将Linux任务以及任务以及Linux内核内核本身作为实时内核的一个优先级最低的任务,即实时本身作为实时内核的一个优先级最低的任务,即实时任务优先级高于普通任务优先级高于普通Linux任务任务,即在实时任务存在,即在实时任务存在的情况下运行实时任务,否则才运行的情况下运行实时任务,否则才运行Linux本身的任本身的任务。实时任务不同于务。实时任务不同于Linux普通进程,它是以普通进程,它是以Linux的的内核模块内核模块(Linux Loadable KernelModule,LKM)的的形式存在的。需要运行实时任务的时候,将这个实时形式存在的。需要运行实时任务的时候,将
16、这个实时任务的内核模块插入到内核中去。任务的内核模块插入到内核中去。实时任务和实时任务和Linux一般进程之间的通信通过共享内存或者一般进程之间的通信通过共享内存或者FIFO通道来实通道来实现。现。13嵌入式linux操作系统的组成与版本RT-Linux的工作原理图的工作原理图14嵌入式linux操作系统的组成与版本uClinux控制领域中的控制领域中的linux系统。系统。它包含它包含linux常用的常用的API,内核小于,内核小于512K,保留了,保留了linux原有原有的高稳定性、强大的网络功能和卓越的文件系统支持功能等的高稳定性、强大的网络功能和卓越的文件系统支持功能等优点。目前已支持
17、的优点。目前已支持的CPU芯片有,芯片有,Motorola公司的公司的68K系列、系列、PowerPC系列以及系列以及ARM公司的系列芯片。官方网站,。公司的系列芯片。官方网站,。uClinux最大特点就是不支持最大特点就是不支持MMU。 uClinux系统对内存的系统对内存的访问是直接的,即不需要经过访问是直接的,即不需要经过MMU,直接将地址发送到地,直接将地址发送到地址线上,所有程序访问的都是实际的物理地址,这样一方面址线上,所有程序访问的都是实际的物理地址,这样一方面减小了内核的体积,另一方面又增强了系统的实时性能。但减小了内核的体积,另一方面又增强了系统的实时性能。但内存空间得不到保
18、护,对于应用开发者来说,必须明白自己内存空间得不到保护,对于应用开发者来说,必须明白自己程序运行的位置,以及保证不会破坏其它程序运行空间以及程序运行的位置,以及保证不会破坏其它程序运行空间以及系统的稳定。系统的稳定。uClinux也可以使用也可以使用RT-Linux的实时补丁,以增强其实时性。的实时补丁,以增强其实时性。15嵌入式linux操作系统的组成与版本Mizi linuxMIZI韩国韩国MIZI公司所公布的开放源代码的免费公司所公布的开放源代码的免费嵌入式操作系统嵌入式操作系统arm-Linux。大部分的。大部分的2410系统板上都是采用的系统板上都是采用的mizi linux。 16
19、嵌入式linux操作系统的组成与版本Linux内核简介内核简介Linux文件系统文件系统Linux内核内核Linux的启动的启动17嵌入式linux操作系统的组成与版本Linux主要目录介绍主要目录介绍与与Windows一一样样,在在Linux中中也也是是通通过过目目录录来来组组织织文文件件的的。但但不不同同的的是是,在在Linux下下只只有有一一个个根根 目目 录录, 而而 不不 象象Windows那那样样一一个个分分区区一一个个根根目目录录。 18嵌入式linux操作系统的组成与版本Linux下常用的命令、工具下常用的命令、工具系统启动时要用到的程序、系统启动时要用到的程序、 系统内核,引
20、导配置文件系统内核,引导配置文件等。等。 Linux就是从这里启就是从这里启动的。动的。所有的设备文件。但不所有的设备文件。但不是具体的驱动程序是具体的驱动程序 ,而,而是一个访问这些外部设是一个访问这些外部设备的端口。备的端口。 系统管理时要用到的各系统管理时要用到的各种配置文件和子目录种配置文件和子目录 。用户主目录,用户独立用户主目录,用户独立的空间的空间非标准目录,内空,非标准目录,内空,但但决不能删决不能删系统管理员的系统管理系统管理员的系统管理程序程序一个虚拟的文件系统,可用来一个虚拟的文件系统,可用来访问到内存里的内容。访问到内存里的内容。包含许多被包含许多被 /bin/ 和和
21、/sbin/ 中的程序使用的库文件中的程序使用的库文件大多数情况下是空的,用来大多数情况下是空的,用来保存异常时候的丢失文件保存异常时候的丢失文件超级用户超级用户(管理员管理员)的专用目的专用目录录外部设备的挂接点,通常用外部设备的挂接点,通常用cdrom与与floppy两个子目录两个子目录通常用来安装各种软件的地方。通常用来安装各种软件的地方。/usr/src、 /usr/bin系统运行时的各种临时文件系统运行时的各种临时文件19嵌入式linux操作系统的组成与版本Linux的内核结构的内核结构Linux内核主要由内核主要由5个子系统组成:个子系统组成:进程调度进程调度进程间通讯进程间通讯内
22、存管理内存管理虚拟文件系统虚拟文件系统网络接口网络接口20嵌入式linux操作系统的组成与版本进程调度进程调度(Process Scheduling) 进程:程序执行的一个范例。进程:程序执行的一个范例。进程的进程的4要素:要素:一段供进程执行的程序,该程序可以被多个进程执行;一段供进程执行的程序,该程序可以被多个进程执行; 独立的内核堆栈;独立的内核堆栈;进程控制快进程控制快 ;独立的存储空间独立的存储空间 ;pid_t fork(void)函数:生成进程。函数:生成进程。void main() for(;) fork(); Exit():退出进程。:退出进程。21嵌入式linux操作系统的
23、组成与版本进程与线程进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行 需要注意的是:在应用程序中使用多线程不会增加 CPU 的数据处理能力。 22嵌入式linux操作系统的组成与版本进程调度进程调度进程的状态进程的状态运
24、行态运行态r、休眠态、休眠态s、僵死态、僵死态z作用:作用:控制进程对控制进程对CPU的访问的访问。当需要选择下一个进程运行。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程时,由调度程序选择最值得运行的进程。可运行进程实际上是仅等待实际上是仅等待CPU资源的进程,如果某个进程在等资源的进程,如果某个进程在等待其它资源,则该进程是不可运行进程。待其它资源,则该进程是不可运行进程。Linux使用了使用了比较简单的基于优先级的进程调度算法选择新的进程。比较简单的基于优先级的进程调度算法选择新的进程。进程处于操作系统的中心位置,其他的子系统都依赖进程处于操作系统的中心位置,其他
25、的子系统都依赖它。因为每个子系统都需要挂起或恢复进程。一般情它。因为每个子系统都需要挂起或恢复进程。一般情况下,当一个进程等待硬件操作完成时,它被挂起;况下,当一个进程等待硬件操作完成时,它被挂起;当操作真正完成时,进程被恢复执行。当操作真正完成时,进程被恢复执行。23嵌入式linux操作系统的组成与版本进进 程程 通通 讯讯(Interprocess communication)管道和管道和FIFO信号量信号量消息队列消息队列共享内存共享内存24嵌入式linux操作系统的组成与版本进程通讯管道(进程通讯管道(pipe)管道管道管道是进程之间单向的数据流:一个进程写入管道是进程之间单向的数据流
26、:一个进程写入管道的所有数据都有内核定向到另一个进程,管道的所有数据都有内核定向到另一个进程,另一个进程由此可以从管道中读取数据。另一个进程由此可以从管道中读取数据。管道的特点:管道的特点:管道被看作是打开的文件,但是在已经装载的文件系管道被看作是打开的文件,但是在已经装载的文件系统中没有映象;统中没有映象;管道是单向的,只提供一个方向的数据流,如果需要管道是单向的,只提供一个方向的数据流,如果需要双向数据流,必须创建两个管道,每个方向一个双向数据流,必须创建两个管道,每个方向一个一个管道可以被多个进程使用,如果一个管道被多个一个管道可以被多个进程使用,如果一个管道被多个进程使用,必须使用文件
27、加锁机制进程使用,必须使用文件加锁机制管道的一个主要缺点是管道的一个主要缺点是:用户无法打开一个现:用户无法打开一个现有的管道,除非管道是由一个公共的祖先进程有的管道,除非管道是由一个公共的祖先进程创建的,否则两个任意进程就不能共享同一个创建的,否则两个任意进程就不能共享同一个管道。管道。此问题可由此问题可由FIFO解决解决。FIFO命名管道命名管道,指代先进先出。每个,指代先进先出。每个FIFO有一有一个路径名与之关联,从而允许无亲缘关系的进个路径名与之关联,从而允许无亲缘关系的进程访问同一个程访问同一个FIFOFIFO是半双工的是半双工的。25嵌入式linux操作系统的组成与版本管道相关函
28、数管道相关函数创建管道创建管道 int pipe(int fd2);该函数返回两个文件描述字:该函数返回两个文件描述字:fd0,fd1。前。前者打开文件读,后者打开文件写。者打开文件读,后者打开文件写。从管道中读数据从管道中读数据read(int fd, void *buff, unsigned nbytes)管道描述符管道描述符fd, 传送数据地址传送数据地址buf,传送字节数传送字节数nbytes向管道中写数据向管道中写数据write(int fd, void *buff, unsigned nbytes)26嵌入式linux操作系统的组成与版本进程通讯信号量进程通讯信号量(semapho
29、res)信号量信号量信号量是个整数对象,是个计数器,用来为多个进程共享的数据信号量是个整数对象,是个计数器,用来为多个进程共享的数据结构提供受控访问结构提供受控访问信号量大于信号量大于0,表示受保护的资源可用,信号量小于等于,表示受保护的资源可用,信号量小于等于0,受保,受保护资源不可用护资源不可用只能通过原语操作而改变只能通过原语操作而改变信号量相关函数信号量相关函数创建信号量创建信号量int semget( key_t key,int nSems, int flag)根据路径名产生一个关键字根据路径名产生一个关键字key_t ftok(const char *pathname, int p
30、roj_id);控制信号量控制信号量int semctl( int semid, int semnum, int cmd)对信号量对信号量1或或1测试是否为测试是否为0int semop( int semid, struct sembuf *sops, unsigned short nsops)27嵌入式linux操作系统的组成与版本进程通讯共享内存进程通讯共享内存(Share Memory )共享内存最有用的进程间通信机制,允许两个或共享内存最有用的进程间通信机制,允许两个或多个进程通过把公共数据结构放入一个共享内存多个进程通过把公共数据结构放入一个共享内存段来访问它们。段来访问它们。共享内
31、存区是最快的进程间通信机制。一旦这样共享内存区是最快的进程间通信机制。一旦这样的内存区映射到它的进程的地址空间,这些进程的内存区映射到它的进程的地址空间,这些进程间数据的传递就不再涉及内核。间数据的传递就不再涉及内核。主要局限主要局限就是它不能提供同步,如果两个进程企就是它不能提供同步,如果两个进程企图修改相同的共享内存区域,内存不能串行化这图修改相同的共享内存区域,内存不能串行化这些操作。使用共享内存区必须设计出他们自己的些操作。使用共享内存区必须设计出他们自己的同步协议同步协议客户客户服务器服务器共享内存共享内存客户地址空间客户地址空间服务器地址空间服务器地址空间28嵌入式linux操作系
32、统的组成与版本共享内存相关函数共享内存相关函数创建一个尚未存在的共享内存区创建一个尚未存在的共享内存区int shmget(key_t key,size_t size, int oflag);共享内存区同虚拟地址范围联系起来共享内存区同虚拟地址范围联系起来void *shmat(int shmid, const void *shmaddr, int flag)断接这个内存区断接这个内存区int shmdt(const void *shmaddr) 删除这个内存区删除这个内存区int shmctl(int shmid, int cmd, struct shmid_ds *buff)29嵌入式li
33、nux操作系统的组成与版本进程通讯消息队列进程通讯消息队列进程彼此之间可以同进程彼此之间可以同IPC消息进行通信。进程产生的每个消息进行通信。进程产生的每个消息都被发送到一个消息队列中,这个消息队列一直存放消息都被发送到一个消息队列中,这个消息队列一直存放在队列中,直到另一个进程将其读走为止。在队列中,直到另一个进程将其读走为止。一个进程只能接收一个给定的消息一个进程只能接收一个给定的消息消息队列是使用一个链表来实现的。消息队列是使用一个链表来实现的。消息可以按照非消息可以按照非“先进先出先进先出”的次序获得的次序获得新消息常都放在这个链表的尾新消息常都放在这个链表的尾进程读出消息,该消息将从
34、队列中移去,其它的进程不能进程读出消息,该消息将从队列中移去,其它的进程不能再读到了。再读到了。如果因为接收的缓冲区太小造成消息被截断,截断的部分如果因为接收的缓冲区太小造成消息被截断,截断的部分将永久地丢失而不给接收者任何提示将永久地丢失而不给接收者任何提示它和管道很相似,事实上,它是一种正逐渐被淘汰的通信它和管道很相似,事实上,它是一种正逐渐被淘汰的通信方式方式 30嵌入式linux操作系统的组成与版本消息队列相关函数消息队列相关函数创建一个新消息或访问存在的消息队列创建一个新消息或访问存在的消息队列int msgget(key_t key, int oflag);放置消息于队列中放置消息
35、于队列中Int msgsnd(int msqid,const void *ptr,size_t length, int flag)从消息队列中读出一个消息从消息队列中读出一个消息msgrcv(int msqid,void *ptr,size_t length,long type,int flag)从队列中删除消息从队列中删除消息int msgctl(int msqid, int cmd, struct msqid_ds *buff)31嵌入式linux操作系统的组成与版本内存管理内存管理(Memory Management )允许多个进程安全的共享主内存区域。允许多个进程安全的共享主内存区域。
36、Linux的内存管理支持的内存管理支持虚拟内存虚拟内存,即在计算,即在计算机中运行的程序,其代码,数据,堆栈的机中运行的程序,其代码,数据,堆栈的总量可以超过实际内存的大小,操作系统总量可以超过实际内存的大小,操作系统只是把当前使用的程序块保留在内存中,只是把当前使用的程序块保留在内存中,其余的程序块则保留在磁盘中。必要时,其余的程序块则保留在磁盘中。必要时,操作系统负责在磁盘和内存间交换程序块。操作系统负责在磁盘和内存间交换程序块。内存管理从逻辑上分为硬件无关部分和硬内存管理从逻辑上分为硬件无关部分和硬件有关部分。硬件无关部分提供了进程的件有关部分。硬件无关部分提供了进程的映射和逻辑内存的对
37、换;硬件相关的部分映射和逻辑内存的对换;硬件相关的部分为内存管理硬件提供了虚拟接口。为内存管理硬件提供了虚拟接口。32嵌入式linux操作系统的组成与版本虚拟文件系统虚拟文件系统(Virtual )隐藏了各种硬件的具体)隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,细节,为所有的设备提供了统一的接口,VFS提提供了多达数十种不同的文件系统。虚拟文件系统供了多达数十种不同的文件系统。虚拟文件系统可以分为逻辑文件系统和设备驱动程序。逻辑文可以分为逻辑文件系统和设备驱动程序。逻辑文件系统指件系统指Linux所支持的文件系统,如所支持的文件系统,如ext2,fat等,等,设备驱动程序指为每一
38、种硬件控制器所编写的设设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。备驱动程序模块。网络接口网络接口(NET)提供了对各种网络标准的存取)提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协和各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序。网络协议部分负责实现每一议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。网络设备驱动程序负责种可能的网络传输协议。网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。应的设备驱动程序。 33嵌入式linux操作系统的组成与版本内核代码结
39、构内核代码结构Linux的源代码一般在的源代码一般在/usr/src/Linux-*.*.*(*.*.*代表内核版本,如代表内核版本,如2.4.20)代码分布如下代码分布如下/arch:包含所有硬件结构特定的内核代码。如包含所有硬件结构特定的内核代码。如i386、ARM等等34嵌入式linux操作系统的组成与版本/drivers:包含内核中所有的设备驱动包含内核中所有的设备驱动程序。如程序。如USB、串口等;、串口等;/fs:包含所有的文件系统代码。如包含所有的文件系统代码。如jffs2、ext2、ntfs等;等;/include:包含建立内核代码时所需的包含建立内核代码时所需的大部分库文件。
40、如大部分库文件。如asm-arm是是arm平台平台所需的库文件;所需的库文件;/init:包含内核的初始化代码,内核从包含内核的初始化代码,内核从此处工作;此处工作;/ipc:包含了核心进程间的通讯代码;包含了核心进程间的通讯代码;/kernel:包含了内核管理的核心代码;包含了内核管理的核心代码;/mm:包含了所有的内存管理代码;包含了所有的内存管理代码;/net:包含了核心的网络部分代码,如包含了核心的网络部分代码,如:ipv4、ipv6等;等;35嵌入式linux操作系统的组成与版本36嵌入式linux操作系统的组成与版本Documentation保存着详细的说明文档保存着详细的说明文档
41、Scripts主要在配置内核时用到,存放了配置内核主要在配置内核时用到,存放了配置内核的一些脚本文件,比如的一些脚本文件,比如make menuconfig命令等。命令等。37嵌入式linux操作系统的组成与版本Linux启动启动pc机上机上linux的启动的启动在在x86体系中,体系中,cpu上电后在存储位置上电后在存储位置0xffff0处开始执行处开始执行程序代码,这个地址通常是程序代码,这个地址通常是ROM-BIOS中的地址。中的地址。BIOS硬件检测,资源分配。硬件检测,资源分配。将将MBR中的中的boot loader加载到加载到RAM中,然后将控中,然后将控制权交给制权交给RAM内
42、的内的boot loader。 MBR :Main Boot Record 主引导记录主引导记录 位于位于MBR的的boot loader将内核映像从硬盘中加载到将内核映像从硬盘中加载到RAM中,然后跳到内中,然后跳到内核的入口点,即开始启动操作系统。核的入口点,即开始启动操作系统。常用的如:常用的如:lilo grub等等 LILO(LInux LOader)和)和 GNU GRUB(GRand Unified Boot loader). 38嵌入式linux操作系统的组成与版本BIOSGRUB/LILOKernel bootstart_kernel ()initrc.sysinitrcmi
43、ngettylogin()shell进入进入linux操作系统操作系统中中完成外设及完成外设及其驱动程序其驱动程序的加载和初的加载和初始化始化激活交换分激活交换分区,检查磁区,检查磁盘,加载硬盘,加载硬件模块件模块不同的启不同的启动参数,动参数,实现不同实现不同的启动设的启动设置置用户登用户登录录power执行配置执行配置文件文件You can use LINUX39嵌入式linux操作系统的组成与版本启动参数启动参数嵌入式系统中的嵌入式系统中的Boot loader 系统上电后,在系统上电后,在0x0000初开始执行代码。初开始执行代码。常用的启动代码如:常用的启动代码如:vivi、 blo
44、b等等主要功能:主要功能:自引导自引导下载下载嵌入式linux启动内核根文件系统0x0000bootloader40嵌入式linux操作系统的组成与版本嵌入式嵌入式linux bootloaderBoot loader的结构的结构stage1(汇编语言实现)(汇编语言实现)stage2(c语言实现)语言实现)硬件设备硬件设备初始化初始化准备准备RAM,将,将stage2部分拷贝到部分拷贝到RAM中中设置堆栈,跳转到设置堆栈,跳转到stage2的入口点的入口点硬件设备硬件设备初始化初始化监测系统监测系统内存映射内存映射将将kernel映像和根映像和根文件系统加载到文件系统加载到RAM中中设置启动参设置启动参数进入内核数进入内核41嵌入式linux操作系统的组成与版本