《嵌入式操作系统原理.ppt》由会员分享,可在线阅读,更多相关《嵌入式操作系统原理.ppt(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、操作系统基本原理,操作系统基本功能,控制和管理计算机系统内各种硬件和软件资源、有效地组织多道程序运行的系统软件(或程序集合),是用户与计算机之间的接口。 UNIX DOS Linux Windows 98 Windows NT 扩充机器功能,方便用户使用;提高系统效率。 存储器管理、处理机管理、设备管理、文件管理、用户接口,操作系统的形成和发展,手工阶段 批处理 多道程序设计技术和多道成批系统 分时 操作系统 实时操作系统 网络操作系统 分布式系统,多道程序设计技术和多道成批系统,多道程序设计技术:在计算机内存中同时存放几道相互独立的程序,它们在管理程序的控制下相互穿插地运行。 多道 宏观上并
2、行 微观上串行 批量操作系统:该系统把用户提交的作业成批地送入计算机内存,然后由作业调度程序自动地选择作业运行。 优点:缩短作业之间的交接时间,减少处理机的空闲等待时间,提高系统的吞吐量。缺点:用户响应时间较长。用户既不能了解自己程序的运行情况,也不能控制计算机。,分时 操作系统,由于中断技术的使用,使得一台计算机能连接多个用户终端,用户可通过各自的终端使用和控制计算机,我们把一台计算机连接多个终端的计算机系统称为分时计算机系统,或称分时系统。 把处理机的响应时间分成若于个大小相等(或不相等)的时间单位,称为时间片(如100毫秒),每个终端用户获得CPU,就等于获得一个时间片,该用户程序开始运
3、行,当时间片到(用完),用户程序暂停运行,等待下一次运行。,任务 多任务,操作系统的特性之一是并发与共享,即在系统中(内存)同时存在几个相互独立的程序,这些程序在系统中既交叉地运行,又要共享系统中的资源,这就会引起一系列的问题,包括:对资源的竞争、运行程序之间的通信、程序之间的合作与协同等符。 要解决这些问题,用程序的概念已经不能描述程序在内存中运行的状态,必须引人新的概念进程。,任务 多任务,行为的一个规则叫做程序,程序在处理机上执行时所发生的活动称为进程(Dijkstra)。 进程是这样的计算部分,它是可以和其它计算并行的一个计算。(Donovan) 进程(有时称为任务)是一个程序与其数据
4、一道通过处理机的执行所发生的活动。(Alan.C. Shaw) 进程是执行中的程序。(Ken Thompson and Dennis Ritchie ) 进程,即是程序在并发环境中的执行过程 。,任务 多任务,进程与程序的区别: 进程是动态概念;程序是静态概念 进程具有并发性,宏观上同时运行;程序本身具有顺序性,程序的并发执行是通过进程实现的 进程具有独立性,是一个能独立运行的单位,是系统资源分配的基本单位,是运行调度的基本单位;程序本身没有此特性 进程和程序无一一对应关系,一个进程可顺序执行多个程序;一个程序可由多个进程共用 进程异步前进,会相互制约;程序不具备此特性 进程实体具有一定结构,
5、组成进程映象;程序没有这种结构,任务 多任务,一个任务也可以称为一个进程。 每个任务都是整个应用系统的一个部分。 每个任务都赋予一定的优先级,有自己一套CPU寄存器和自己的栈空间。 典型的每个任务都是一个无限循环,每个任务都存在某种状态下:休眠态、运行态、挂起态(等待某一个事件发生)和被中断态。,任务 多任务,进程描述,在系统中一个进程存在: 进程控制块(数据结构) 进程的执行程序(一个可执行文件) 进程总是位于某个队列(就绪、等待某事件队列) 处于某种状态(运行、就绪、等待) 占用某些系统资源(内存,打开某些文件、处理机、外设),进程描述,进程控制块 PCB (Process Control
6、 Block) 存放进程的管理和控制信息的数据结构称为进程控制块。它是进程管理和控制的最重要的数据结构,在创建时,建立PCB,并伴随进程运行的全过程,直到进程撤消而撤消。PCB就象我们的户口。,任务状态,休眠态 - 该任务驻留在内存中,但并不被多任务内核所调度。 就绪态 - 任务已经准备好,但由于该任务的优先级比正在运行的任务的优先级低,暂时不能运行。 运行态 - 该任务掌握了CPU的控制权,正在运行中。 挂起态 - 也称为等待事件态,指该任务正在等待某一个或一些事件的发生。 被中断态 - 由于CPU开始处理中断请求,使该任务的执行被打断。,任务状态,内核,内核负责为每个任务分配CPU时间。
7、内核负责任务间通信。 内核负责任务切换工作。 负责任务调度,按照一定的策略,在就绪态的任务中选择一个任务执行。 实时内核调度算法基于优先级调度,总是让处于就绪态的优先级最高的任务先运行。,非占先式内核,非占先式内核 non-preemptive - 内核要求每个任务自我放弃CPU的所有权。 - 中断可以使一个高优先级的任务由挂起状态变为就绪态,但中断服务以后控制权还是回到原来被中断的那个任务,直到该任务主动放弃CPU的使用权。 - 更高优先权的任务不能打断正在执行的较低优先权的任务,直到较低优先权任务主动放弃CPU的控制权。,非占先式内核,占先式内核,占先式内核 preemptive - 最高
8、优先级的任务一旦就绪,总能得到CPU的控制权。 - 高优先级的就绪任务可以打断正在执行的较低优先级的任务,进入执行态;被抢占的较低优先级任务进入就绪任务队列,等待下一次调度。 - 商业上销售的实时内核都是抢占式内核。,占先式内核,可重入性,可重入性 reentrancy -可重入型函数可以被一个以上的任务调用,而不必担心数据的破坏。 - 可重入型函数任何时候可以被中断,一段时间后又可以执行,而相应的数据不会丢失。 - 可重入型函数只使用局部变量,即变量保存在CPU寄存器中或堆栈中。,可重入型函数,不可重入型函数,时间片轮转调度,时间片轮转调度 round-robin scheduling 当两
9、个或两个以上的任务具有同样的优先级,内核运行一个任务运行事先确定的一段时间,叫做时间额度(quantum),然后切换给另一个任务。 满足下列条件时,把CPU控制权交给下一个就绪任务 - 当前任务无事可作。 - 当前任务的时间片还没有用完任务就结束了。 - 当前任务的时间片用完了。,基于优先级调度,根据任务的优先级和状态决定任务的调度。 基于优先级抢占式调度。 基于优先级非抢占式调度。,任务优先级,静态优先级 - 任务在执行过程中优先级不改变,各个任务的优先级在编译时就确定了。 动态优先级 - 任务在执行过程中,优先级是可变的。,优先级反转,高优先级的任务在申请已经被低优先级任务占据的资源时,高
10、优先级被迫进入等待态,如果有一个中优先级的任务一直在执行,则高优先级将无法执行。,优先级反转问题实例,优先级反转的解决方法,在多道程序的环境中,系统中的多个进程可以并发执行,同时它们又要共享系统中的资源,这些资源有些是可共享使用的,如磁盘,有些是以独占方式使用的,如打印机。由此将会引起一系列的矛盾,产生错综复杂的相互制约的关系。 产生这种错综复杂的相互制约关系的原因有二: 资源共享 进程合作,1. 临界资源:一次仅允许一个进程使用的资源称为临界资源。 2、临界区:每个进程中访问临界资源的那段程序段称为临界区(临界段)。 互斥:在操作系统中,当某一进程正在访问某临界区时,就不允许其它进程进入,否
11、则就会发生(后果)无法估计的错误。我们把进程之间的这种相互制约的关系称为互斥。,信号量,信号量 semaphore - 控制共享资源的使用权 - 标志某个事件发生 - 使两个任务的行为同步 二进制信号量 - 信号只有两个值0和1 计数式信号量 - 信号有一个取值范围,例如0-255,信号量,信号量的操作 创建 Create - 初始化二进制或计数式信号量的信号值 等待 Wait - 如果信号量值非0,则得到信号,信号量值减1 给信号 Signal - 信号量值加1,二进制信号量,计数式信号量,死锁,死锁 dead lock - 指两个任务无限期地互相等待对方控制的资源。 防止死锁的方法 - 先
12、得到全部的资源再做下一步工作。 - 所有任务用同样的顺序去申请多个资源。 - 释放资源时使用相反的顺序。 - 定义任务等待资源的时间,如果一段时间内没有等到资源就产生超时,化解死锁。,同步,利用信号量进行同步,事件标志,应用于任务和多个事件同步的场合。 独立型事件标志 - 任何等待的一个事件发生,则唤醒任务 关联型事件标志 - 所有等待的事件同时发生,则唤醒任务,事件标志,消息邮箱,消息邮箱 message mail box - 通过内核一个任务或一个中断服务程序可以把一则消息(一个指针)放到邮箱中。 - 通过内核一个或多个任务可以通过内核接收这则消息。 - 每个邮箱有相应的等待消息的任务列表,如果邮箱为空,则等待消息的任务将被挂起。 - 每个邮箱也应该有相应的发送消息的任务列表,如果邮箱满,则发送消息的任务将被挂起。,消息队列,消息队列 message queue - 消息队列实际上是邮箱阵列。 - 通过内核一个任务或一个中断服务程序可以把一则消息(一个指针)放到消息队列中。 - 通过内核一个或多个任务可以通过内核接收这则消息。 - 每个消息队列有相应的等待消息的任务列表,如果消息队列为空,则等待消息的任务将被挂起。 - 每个消息队列也应该有相应的发送消息的任务列表,如果消息队列满,则发送消息的任务将被挂起。,