17-嵌入式linux的多任务编程--0--多任务

2019-07-12 16:14发布

《arm嵌入式linux系统开发技术详解》   1--什么是多任务 ??            当操作系统使用某种策略允许两个或多个进程并发共享一个cpu时,他称为多任务运行,或多道程序运行。          在规定的时间片过期或某些事件发生前,一直执行某个进程。然后,操作系统切换到另一个进程。这种切换十分迅速,给人一种这些 进程都是同时执行的错觉。而是事实上,同一时刻在一个cpu上只能激活一个进程。这种进程间的切换在所有进程完成前一直进行。并发共享策略决定何时切换进程 。该策略有操作系统后其他进程强制执行。多任务可以分为三个级别:对话级、进程级、线程级。             个人理解:            操作系统  同一时刻,只能执行一个进程,  有 并发共享策略决定  进程切换。  切换时间非常短,早在一种同一时刻很多进程执行的错觉。   1.1  对话级多任务           对话间的多任务有用户控制。         。。。。。           个人理解:          可以由用户在界面、控制台等等  切换各个  应用程序。   1.2       进程级多任务         进程是运行着的程序,是操作系统执行任务的基本单位。进程具备文本、数据和堆栈片断,以及他自己的资源。资源可以是文件、对象句柄、设备、互斥量、管道,等等。操作系统管理进程以及他的资源。每个进程有着独立的运行环境。进程和进程间是相互颗粒但有时相互联系的,一个进程运行出错不会影响到别的进程运行,两个进程之间可以通过管道等方式通信,或者通过信号哦量的工具同步运行。因此,进程是实现多任务处理的核心单元。          个人理解:   1.3         进程完成单独的任务,每个任务有可能有自己的控制流程。这些流程有轻量级的进程构成,简称线程。进程的线程并发执行称作线程级多任务。举例:           当用户使用鼠标或键盘上的按键从一个对话移到另一个对话时,发生的是对话间的多任务。用户从当前对户切换到另一个对话,师大当前对话成为后台对话,同时激活了另一个对话,这时将发生上下文切换。进行上下文切换任务的进程或线程抢占或释放了对处理器的控制权,而另一个进程或线程随即释放或得到处理器的控制权。          在窗口系统中每时每刻倒在进行着上下文切换,而进程级的上下文切换代价十分昂 贵,频繁的切换不但不能体现多任务系统的优势,反而降低了系统的整体反映速度。        线程是轻量级的进程,他有进程创建,并与创建它的进程工作在同一内存空间中,不但可以与同一进程中的其他线程共享数据和文件描述符,而且线程间的切换过程也是十分快捷和低成本的。因此越来越多的多任务处理在底层都采取线程来实现。          问一下自己?????        什么是进程??        进程线程的关系??        为什么要采用线程??   1.4  多任务处理的特点           对话间的多任务是一个高级别的多任务,他受用户控制。进程间的多任务以及多线程在低级别上实现。有设计他的程序员控制。程序员创建进程,并决定每个进程的线程数 ,任务的优先级,以及什么时候挂起、什么时候终止。         (进程的线程数量  有  程序员  在创建进程时  决定)            图 如下:           多任务的目的是增加系统能完成的工作量,提高资源的利用率。多任务通过保持系统资源(处理、I/o等)的繁忙,并防止他们在系统同中处于非激活状态时使用资源,是的多个任务能共享系统资源。           当今的流行操作系统基本上都支持多进程和多线程。