嵌入式linux操作系统的组成与版本.ppt_第1页
嵌入式linux操作系统的组成与版本.ppt_第2页
嵌入式linux操作系统的组成与版本.ppt_第3页
嵌入式linux操作系统的组成与版本.ppt_第4页
嵌入式linux操作系统的组成与版本.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论