嵌入式操作系统原理实用教案_第1页
嵌入式操作系统原理实用教案_第2页
嵌入式操作系统原理实用教案_第3页
嵌入式操作系统原理实用教案_第4页
嵌入式操作系统原理实用教案_第5页
已阅读5页,还剩34页未读, 继续免费阅读

下载本文档

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

文档简介

1、嵌入式LINUX操作系统(co zu x tn)开发 体系结构概览 进程与调度管理(gunl) 内存管理(gunl) 文件系统 系统调用第1页/共39页第一页,共39页。体系结构概览(i ln)第2页/共39页第二页,共39页。体系结构概览(i ln) 内核的功能(gngnng) 进程控制(process management) 内存管理(Memory management) 文件系统管理(Filesystem management) 设备驱动程序(Device control) 网络(Networking)第3页/共39页第三页,共39页。内核(ni h)层次 内核(ni h)在系统中的位置

2、 用户进程 系统调用接口 内核(ni h) 硬件 什么是Linux内核(ni h)? 从程序员的角度 从用户的角度第4页/共39页第四页,共39页。系统(xtng)调用 内核提供的一套C语言函数库称为系统调用 应用程序使用系统调用完成编程任务 系统调用分类(fn li) 进程管理 进程间通信(IPC) 文件系统管理 网络编程(Socket)第5页/共39页第五页,共39页。Linux结构(jigu)第6页/共39页第六页,共39页。Linux进程(jnchng)管理 Linux是一个多任务多用户操作系统 一个任务(task)就是一个进程(process) 每一个进程都具有一定的功能和权限,它们

3、都运行在各自独立的虚拟地址空间(kngjin)。 在Linux中,进程是系统资源分配的基本单位,也是使用CPU运行的基本调度单位。 第7页/共39页第七页,共39页。 Linux进程(jnchng)概述 程序映像 存放在磁盘上的可执行(zhxng)文件的代码和数据的集合称为可执行(zhxng)映象(Executable Image),即程序 当一个程序(可执行(zhxng)映象)装入系统中运行时,它就形成了一个进程 进程映像 进程是由正文段(text)、用户数据段(user segment)和系统数据段(system segment)组成的一个动态实体。 正文段中存放着进程要执行(zhxng)

4、的指令代码,具有只读的属性, 用户数据段是进程在运行过程中处理数据的集合,它们是进程直接进行操作的所有数据, 以及进程使用的进程堆栈。 系统数据段存放着进程的控制信息。其中包括进程控制块PCB。第8页/共39页第八页,共39页。进程(jnchng)控制块PCB 进程控制块PCB是名字为task_struct的数据结构,称为任务结构体 任务结构体中容纳了一个进程的所有信息,是系统对进程进行管理和控制的有效手段,是系统实现进程调度的主要依据(yj) 当一个进程被创建时,系统就为该进程建立一个task_struct任务结构体。当进程运行结束时,系统撤消该进程的任务结构体 Linux在内存空间中开辟了

5、一个专门的区域存放所有进程的任务结构体,在操作系统的内核空间设置了一个task数组,该数组的每一个元素是一个指向任务结构体的指针,所以task数组又称为task向量。 进程的任务结构体是进程存在的唯一标志,调度程序维护current指针,它指向当前正在运行的进程。第9页/共39页第九页,共39页。Linux调度(diod)分析 Linux进程( jnchng)的状态变化第10页/共39页第十页,共39页。进程(jnchng)状态 运行态:进程正在使用CPU运行的状态。处于运行态的进程又称为(chn wi)当前进程(current process) 可运行态:进程已分配到除CPU外所需要的其它资

6、源,等待系统把CPU分配给它之后即可投入运行 等待态:又称睡眠态,它是进程正在等待某个事件或某个资源时所处的状态。 等待态进一步分为可中断的等待态和不可中断的等待态。处于可中断等待态的进程可以由信号(signal)解除其等待态。处于不可中断等待态的进程,一般是直接或间接等待硬件条件。 它只能用特定的方式来解除,例如使用唤醒函数wake_up()等 暂停态:进程需要接受某种特殊处理而暂时停止运行所处的状态。通常进程在接受到外部进程的某个信号进入暂停态,例如,正在接受调试的进程就处于这种状态。 僵死态:进程的运行已经结束,但它的任务结构体仍在系统中。第11页/共39页第十一页,共39页。核心(hx

7、n)态和用户态 Linux的进程(jnchng)处理机上运行时,处理机提供了两种不同的的执行状态,核心态(kernel mode)和用户态(user mode)。 核心态又称系统态,它具有较高的特权,能执行所有的机器指令,包括由操作系统执行的特权指令,能访问所有的寄存器和存储区域,能直接控制所有的系统资源。 Linux在执行内核程序时是处于核心态下。 用户态是进程(jnchng)的普通执行状态,在用户态下进程(jnchng)具有较低的特权, 只能执行规定的机器指令,不能执行特权指令。进程(jnchng)在用户态下只能访问进程(jnchng)的存储空间。在用户态下进程(jnchng)不能与系统硬

8、件相互作用,不能访问系统资源。第12页/共39页第十二页,共39页。Linux进程(jnchng)调度方式 Linux系统采用抢占调度方式,又称可剥夺(bdu)调度方式。采用这种调度方式时,对于当前运行的进程而言,当有更紧急的进程到来时,系统将剥夺(bdu)当前进程使用处理机的权利,立即停止它在处理机上的运行,而把处理机分配给那个更紧急的进程。 Linux采用时间片轮转法。对某个运行中的进程,当它的时间片用完时,系统将停止它的运行并把处理机分配给其它进程。第13页/共39页第十三页,共39页。Linux进程调度(diod)方法 Linux进程调度采用动态(dngti)优先级法,调度对象是可运行

9、队列, 可运行队列中优先级大的进程首先得到CPU投入运行。 进程在运行中,counter的代表进程的动态(dngti)优先级。 Linux采取了加权的方法来保证实时进程优先于普通进程。第14页/共39页第十四页,共39页。进程(jnchng)调度时机 时机1进程状态发生变化时。 处于运行态下的进程要等待某种资源, 运行态下的进程在程序执行完毕后,一般通过调用内核函数do_exit()终止运行并转入僵死态。 处于等待态的进程被唤醒后,将加入到可运行队列中时。 进程从运行态转入暂停态时。 进程从暂停态成为可运行态时。 时机2当前进程时间片用完时。 时机3进程从系统调用返回(fnhu)到用户态时。

10、时机4中断处理后,进程返回(fnhu)到用户态时。第15页/共39页第十五页,共39页。Linux内存(ni cn)管理模式 MMU内存管理 MMU是内存管理单元 内存的管理单位是页(page),通常是4K或8K 虚拟地址与物理地址 物理地址可以位于RAM/FLASH/DISK 经过MMU,虚拟地址可以转化成物理地址 MMU可以在转换过程中检查权限(qunxin),以保护内存不受非法访问 如果没有MMU,进程与内核之间无法隔离和保护,系统容易崩溃16第16页/共39页第十六页,共39页。Linux的三级目录(ml) Linux采用(ciyng)三级目录底层MMU支持实现存储管理,可以适应64/

11、32位CPU 三级目录是页面目录、中间目录和页表第17页/共39页第十七页,共39页。进程(jnchng)空间和内核空间 进程名义上有4G的空间 实际上只有3G属于进程本身(bnshn) 虚拟系统空间占据高位1G第18页/共39页第十八页,共39页。Linux内核(ni h)启动分析 搭建开发环境 宿主机和目标机 交叉编译 编译引导程序(u-boot或者vivi) 编译内核(ni h)(mizi linux) 编译根文件系统 使用JTAG将编译好的映像写入目标板 可以写入到Nor Flash当中 可以写入到Nand Flash当中第19页/共39页第十九页,共39页。Linux内核(ni h)

12、启动分析 上电 CPU根据设置读取Flash中的Bootloader Bootloader作两段式加载 Bootload将控制权移交给内核 Bootloader事先检测硬件参数,例如物理地址 Bootloader加载压缩的内核映像 内核自解压 内核将自身(zshn)定位到正确的物理地址第20页/共39页第二十页,共39页。内核(ni h)启动流程 执行init初始化进程( jnchng) 启动一个shell 执行启动脚本文件 显示登录提示符等待登录第21页/共39页第二十一页,共39页。嵌入式LINUX操作系统(co zu x tn)内核 选择内核(ni h) 内核(ni h)配置 编译内核(

13、ni h) 安装内核(ni h)第22页/共39页第二十二页,共39页。 Linux内核(ni h)源码 内核目录(ml)结构: /usr/src/Linux-* /arch(重点) /drivers /fs /include /init /ipc /kernel /mm /net第23页/共39页第二十三页,共39页。内核(ni h)配置 进入到内核(ni h)源代码目录 cd /usr/src/linux-2.* make config make xconfig make menuconfig make第24页/共39页第二十四页,共39页。编译(biny)生成的文件 vmlinux 未压

14、缩(y su)的Linux内核 varch/boot/zImage 经zlib压缩(y su)后的Linux内核 varch/boot/bzImage 经zlib压缩(y su)后的Linux内核,b是指big,压缩(y su)狠 /boot/vmlinuz- 经zlib压缩(y su)后的Linux内核第25页/共39页第二十五页,共39页。编译(biny)生成的文件 v/boot/System.map- 内核(ni h)符号地址 /boot/initrd-.img ramdisk,要挂载的根文件系统 /lib/modules/ 模块 vmodules.dep 模块依赖文件第26页/共39页

15、第二十六页,共39页。裁剪(cijin)Linux 目的是创建嵌入式Linux 嵌入式硬件资源有限,所以要裁剪软件 裁剪的对象(duxing)包括: Linux内核 库 守护进程 GUI第27页/共39页第二十七页,共39页。裁剪(cijin)Linux 选择合适(hsh)的文件系统 ext2,ext3,jffs2 模块机制 网络协议 无用的驱动程序 调试信息 裁剪的技术要求 能省就省,能小就小,能快就快第28页/共39页第二十八页,共39页。安装(nzhung)内核 移植相关(xinggun)的文件 相关(xinggun)文件和目录 arch/arm/config.in arch/arm/M

16、akefile arch/arm/boot/Makefile arch/arm/mach-s3c2410/* include/asm-arm/arch-s3c2410/* arch/arm/tools/mach-types arch/arm/boot/compressed/head-s3c2410.S arch/arm/boot/compressed/Makefile第29页/共39页第二十九页,共39页。嵌入式Linux内核(ni h)调试 Printk() Oops消息(xio xi) /proc文件系统 Kgdb 追踪工具(strace,ltt,gprof,gcov,memwatch)

17、第30页/共39页第三十页,共39页。Linux调试(dio sh)工具 Linux系统(xtng)察看和调参 /proc文件系统(xtng) 用户空间工具: 内存工具:MEMWATCH 和 YAMD strace GNU 调试器(gdb) 内核工具: 内核源代码级调试器(kgdb) 内建内核调试器(kdb) Oops第31页/共39页第三十一页,共39页。/proc文件系统 /proc内存文件系统,记录系统相关信息 可以直接使用(shyng)cat得到相关信息 也可以编程通过文件方式得到相关信息第32页/共39页第三十二页,共39页。通过(tnggu)/proc获取进程信息 找到相关进程( jnchng)号 找到相关/proc子目录 获取特定参数第33页/共39页第三十三页,共39页。通过(tnggu)/proc获取硬件信息 找到相关硬件标识 在/proc中找到相关硬件目录(ml) 查找特定硬件信息第34页/共39页第三十四页,共39页。通过(tnggu)/proc获取内核信息 内核信息一般存放(cnfng)于/proc

温馨提示

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

评论

0/150

提交评论