优秀的毕业设计论文网
计算机 JAVA 电子信息 单片机 机械机电 模具 土木工程 建筑结构 论文
热门搜索词:网络 ASP.NET 汽车 电气 数控 PLC

实时嵌入式操作系统的设计

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
  
资料介绍:

摘 要
随着微处理器的发展,种类繁多、价格低廉、结构小巧的CPU和外设连接,提供了稳定、可靠的硬件架构。现在嵌入式系统发展的瓶颈在软件方面,尤其是操作系统的“嵌入式”化。由于Linux源码的开放性、简练、多任务、易移植、成本低等特性,成为诸多研究与应用选择的对象。随着2.6内核的发布,Linux向现有主流的实时操作系统提出了更大的挑战,势必能成为更优秀的嵌入式操作系统。
本人一直以来都对Linux 操作系统很感兴趣,并结合本专业,对Linux应用于嵌入式实时环境进行了一定的研究。深入探讨了面向嵌入式实时环境的 Linux系统的体系结构。论文首先概述了嵌入式系统及实时系统的发展情况,然后介绍Linux在实时领域的相关研究,其次讲述了嵌入式Linux系统的构造,最后描述了系统测试的策略,并就下一步可继续进行的工作进行了展望。 内容来自think58

[资料来源:THINK58.com]

关键词: Linux;进程;实时系统;嵌入式系统。
Linux作为实时系统的分析
Linux可以说是世界上变化最快的操作系统,几乎每个月都会有新的内核升级版本问世,这也是Linux进步如此神速的主要原因。根据功能不同,Linux内核的模块可基本划分为进程管理、内存管理、网络管理、文件系统与进程通信几部分。实时可靠性是嵌入式应用较为普遍的要求,尽管Linux 已发展到2.6版本,但它仍不是一个真正的实时操作系统,但其改进的特性能够满足响应需求。Linux 2.6 已经在内核主体中加入了提高中断性能和调度响应时间的改进,其中有三个最显著的改进:采用可抢占内核、更加有效的调度算法以及同步性的提高[5]。
2.1 Linux内核体系结构
Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。[6]
1进程调度(SCHED):控制进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其它资源,则该进程是不可运行进程。Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。
2内存管理(MM)允许多个进程安全的共享主内存区域。Linux 的内存管理支持虚拟内存,即在计算机中运行的程序,其代码,数据,堆栈的总量可以超过实际内存的大小,只是把当前使用的程序块保留在内存中,其余的程序块则保留在中。必要时,操作系统负责在磁盘和内存间交换程序块。内存管理从逻辑上分为无关部分和硬件有关部分。硬件无关部分提供了进程的映射和逻辑内存的对换;硬件相关的部分为内存管理硬件提供了虚拟接口[10]。

本文来自think58

[资料来源:http://THINK58.com]


3虚拟文件系统(Virtual File System,VFS)隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,VFS提供了多达数十种不同的文件系统。虚拟文件系统可以分为逻辑文件系统和设备程序。逻辑文件系统指Linux所支持的文件系统,如ext2,fat等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。
4网络接口(NET)提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。
1进程描述符
在内核中,进程描述符是一个名为task_struct的结构体,用于保存进程的属性和其他信息,我们可以在这个结构体中找到与进程有关的所有内核信息。在其生命周期内,进程要与内核的方方面面,“诸如内存管理和调度”等打交道,因此,除了UNIX进程的标准属性外,进程描述符也保存了在上述交互过程中的相关信息。内核用循环双向链表task_list存放所有进程描述符,同时借助全局变量current保存当前运行进程的task_struct。
数组task包含指向系统中所有task_struct结构的指针。系统中的最大进程数目受task数组大小的限制,默认值一般为512。创建新进程时,Linux将从系统内存中分配一个task_struct结构,并将其加入task数组。操作系统初始化后,建立init进程,它创建第一个task_struct数据结构INIT_TASK。当前运行进程的结构用current指针来表示。

[资料来源:THINK58.com]


在进程生命周期中,进程描述符必须保存的信息的类型有[8]:
 进程的属性
 进程间的关系
 进程的内存空间
 文件管理
 信号量管理
 进程的可信度
 资源限制
 与调度相关的域
下面我们来了解一些Task_struct结构中与嵌入式开发相关的域。
1. 进程状态(volatile long state)
进程状态定义有如下几种:
//正在运行的进程或在Running队列中准备运行的进程
#define TASK_RUNNING  0
//处于等待队列中的进程,等资源有效时唤醒进入就绪队列run-queue
#define TASK_INTERRUPTIBLE 1
//处于等待队列中的进程,等资源有效时唤醒,但不可被其他进程中断
#define TASK_UNINTERRUPTIBLE 2
//进程暂停,通过其他进程才能唤醒
#define TASK_STOPPED  4
//进程已经被杀死,但父进程还没有调用sys_wait()
#define TASK_ZOMBIE  8
//僵死状态的进程,进程已经结束运行且释放大部分资源,但未释放其进程块
#define TASK_DEAD  16
进程状态转换如图2-2所示,用户进程由do_fork()函数创建,它也是fork系统调用的执行者。do_fork()创建一个新的进程,继承父进程现有资源,初始化进程时钟、信号、时间等数据。完成子进程初始化后,父进程将它挂到就绪队列run-queue,返回子进程的pid。 [资料来源:www.THINK58.com]
think58好,好think58 [资料来源:http://THINK58.com]