Linux多任务编程

Linux多任务编程

ID:41033407

大小:349.32 KB

页数:7页

时间:2019-08-14

Linux多任务编程_第1页
Linux多任务编程_第2页
Linux多任务编程_第3页
Linux多任务编程_第4页
Linux多任务编程_第5页
资源描述:

《Linux多任务编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Linux多任务编程(一)---任务、进程、线程Linux下多任务介绍首先,先简单的介绍一下什么叫多任务系统?任务、进程、线程分别是什么?它们之间的区别是什么?,从而可以宏观的了解一下这三者,然后再针对每一个仔细的讲解。什么叫多任务系统?多任务系统指可以同一时间内运行多个应用程序,每个应用程序被称作一个任务。任务定义:任务是一个逻辑概念,指由一个软件完成的任务,或者是一系列共同达到某一目的的操作。进程定义:进程是指一个具有独立功能的程序在某个数据集上的一次动态执行过程,它是系统进行资源分配和调度的最小单元。线程定义:线程是进程内独立的一条运行路线,

2、是处理器调度的最小单元,也可以成为轻量级进程。看了定义,有点晕,还是通俗的说一下它们的区别吧。①通常一个任务是一个程序的一次执行,一个任务包含一个或多个完成独立功能的子任务,这个独立的子任务就是进程或线程。②一个进程可以拥有多个线程,每个线程必须有一个父进程。任务任务是一个逻辑概念,指由一个软件完成的任务,或者是一系列共同达到某一目的的操作。通常一个任务是一个程序的一次执行,一个任务包含一个或多个完成独立功能的子任务,这个独立的子任务就是进程或线程。例如,一个杀毒软件的一次运行是一个任务,目的是从各种病毒的侵害中保护计算机系统,这个任务包含多个独立

3、功能的子任务(进程或线程),包括实时监控功能、定时查杀功能、防火墙功能及用户交互功能等。任务、进程和线程之间的关系如图1所示进程进程的基本概念进程是指一个具有独立功能的程序在某个数据集上的一次动态执行过程,它是系统进行资源分配和调度的基本单元。一次任务的运行可以并发激活多个进程,这些进程相互合作来完成该任务的一个最终目标。进程具有并发性、动态性、交互性、独立性和异步性等主要特性。进程和程序是有本质区别的:程序是静态的一段代码,是一些保存在非易失性存储器的指令的有序集合,没有任何执行的概念;而进程是一个动态的概念,它是程序执行的过程,包括动态创建、调

4、度和消亡的整个过程,它是程序执行和资源管理的最小单位。Linux下的进程结构进程不但包括程序的指令和数据,而且包括程序计数器和处理器的所有寄存器及存储临时数据的进程堆栈,因此,正在执行的进程包括处理器当前的一切活动。因为linux是一个多任务多进程的操作系统,所以其他的进程必须等到系统将处理器使用权分配给自己之后才能运行。当正在运行的进程等待其他的系统资源时,linux内核将取得处理器的控制权,并将处理器分配给其他正在等待的进程,他按照内核中的调度算法决定将处理器分配给哪一个进程,也就是说,内核不会让处理器闲着。内核将所有进程存放在双向循环链表(进

5、程链表)中,其中链表的头是init_task描述符。链表的每一项都是类型为task_struct,称为进程描述符的结构,该结构包含了一个进程相关的所有信息,定义在文件中。task_struct内核结构比较大,它能完整的描述一个进程,如进程的状态、进程的基本信息、进程标识符、内存相关信息、父进程相关信息、与进程相关的终端信息、当前工作目录、打开的文件信息、所接收的信号信息等。下面详细讲解task_struct结构中最为重要的两个域:state(进程状态)和pid(进程标识符)。如果想具体了解task_st

6、ruct,请点这里。(1)进程状态Linux中的进程有以下几种状态。●运行状态(TASK_RUNNING):进程当前正在运行,或者正在运行队列中等待调度。●可中断的阻塞状态(TASK_INTERRUPTIBLE):进程处于阻塞(睡眠)状态,正在等待某些事件发生或能够占用某些资源。处在这种状态下的进程可以被信号中断。接收到信号或被显式的唤醒呼叫(如调用wake_up系列宏:wake_up、wake_up_interruptible等)唤醒之后,进程将转变为TASK_RUNNING状态。●不可中断的阻塞状态(TASK_UNINTERRUPTIBLE):

7、此进程状态类似于可中断的阻塞状态(TASK_INTERRUPTIBLE),只是它不会处理信号,把信号传递到这种状态下的进程不能改变它的状态。在一些特定的情况下(进程必须等待,直到某些不能被中断的事件发生),这种状态是很有用的。只有在它所等待的事件发生时,进程才被显示的唤醒呼叫唤醒。●可终止的阻塞状态(TASK_KILLABLE):该状态的运行机制类似于TASK_UNINTERRUPTIBLE,只不过处在该状态下的进程可以响应致命信号。它可以替代有效但可能无法终止的不可中断的阻塞状态(TASK_UNINTERRUPTIBLE),以及易于唤醒但安全性欠

8、佳的可中断的阻塞状态TASK_INTERRUPTIBLE)。●暂停状态(TASK_STOPPED):进程的执行被暂停,当进

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。