`
8366
  • 浏览: 799801 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

任务、进程和线程的区别(转)

阅读更多

任务(task)是最抽象的,是一个一般性的术语,指由软件完成的一个活动。一个任务既可以是一个进程,也可以是一个线程。简而言之,它指的是一系列共同达到某一目的的操作。例如,读取数据并将数据放入内存中。这个任务可以作为一个进程来实现,也可以作为一个线程(或作为一个中断任务)来实现。

  进程(process)常常被定义为程序的执行。可以把一个进程看成是一个独立的程序,在内存中有其完备的数据空间和代码空间。一个进程所拥有的数据和变量只属于它自己。

  线程(tread)则是某一进程中一路单独运行的程序。也就是说,线程存在于进程之中。一个进程由一个或多个线程构成,各线程共享相同的代码和全局数据,但各有其自己的堆栈。由于堆栈是每个线程一个,所以局部变量对每一线程来说是私有的。由于所有线程共享同样的代码和全局数据,它们比进程更紧密,比单独的进程间更趋向于相互作用,线程间的相互作用更容易些,因为它们本身就有某些供通信用的共享内存:进程的全局数据。

  一个进程和一个线程最显著的区别是:线程有自己的全局数据。线程存在于进程中,因此一个进程的全局变量由所有的线程共享。由于线程共享同样的系统区域,操作系统分配给一个进程的资源对该进程的所有线程都是可用的,正如全局数据可供所有线程使用一样

 

进程概念 
  进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。 
  在Mac、Windows NT等采用微内核结构的操作系统中,进程的功能发生了变化:它只是资源分配的单位,而不再是调度运行的单位。在微内核系统中,真正调度运行的基本单位是线程。因此,实现并发功能的单位是线程。
线程概念 
  线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。如果把进程理解为在逻辑上操作系统所完成的任务,那么线程表示完成该任务的许多可能的子任务之一。例如,假设用户启动了一个窗口中的数据库应用程序,操作系统就将对数据库的调用表示为一个进程。假设用户要从数据库中产生一份工资单报表,并传到一个文件中,这是一个子任务;在产生工资单报表的过程中,用户又可以输人数据库查询请求,这又是一个子任务。这样,操作系统则把每一个请求――工资单报表和新输人的数据查询表示为数据库进程中的独立的线程。线程可以在处理器上独立调度执行,这样,在多处理器环境下就允许几个线程各自在单独处理器上进行。操作系统提供线程就是为了方便而有效地实现这种并发性
引入线程的好处
(1)易于调度。
(2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。
(3)开销少。创建线程比创建进程要快,所需开销很少。。
(4)利于充分发挥多处理器的功能。通过创建多线程进程(即一个进程可具有两个或更多个线程),每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分运行。
进程和线程的关系
(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
(2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。
(3)处理机分给线程,即真正在处理机上运行的是线程。
(4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。

分享到:
评论

相关推荐

    c语言多进程多线程编程

    c语言多进程多线程编程

    程序、进程、线程的区别

    根本差别:进程是操作系统任务调度和资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。 资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量...

    Android 应用程序模块 应用, 任务, 进程, 和线程--千锋培训

    文档介绍了引言,任务,任务亲和力(Affinities),启动模式以及启动标记,进程,线程

    Python实战系列培训课程之进程和线程.pptx

    进程: 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了一...

    操作系统实验二:进程、线程之间的同步

    为了使得程序的输出易于看到结果,仿照阅读材料中的实例程序,分别在生产者和消费者进程的合适的位置加入一些随机睡眠时间。 可选的实验:在上面实验的基础上实现部分消费者有选择地消费某些产品。例如一个消费者只...

    多任务、进程和线程.doc

    VC++多线程开发,多任务,多进程的程序开发

    线程、进程、多线程、多进程和多任务之间的区别与联系.docx

    线程、进程、多线程、多进程和多任务之间的区别与联系.docx

    查看进程、线程、DLL模块等信息

    结束进程或结束任务用于停止一个程序的运行,两者差不多一样,所不同的是只有有窗口的程序才能被结束任务,支持多选(使用Ctrl和Shift键)。 挂起进程即暂停进程的运行。 5.系统启动项 这里的程序可以在系统启动时...

    linux-进程和线程

    在Linux环境下进行C编程时,经常会面临一个问题,即需要同时处理多个任务。那么,在这种情况下,我们应该如何设计...本文旨在分享进程和线程编程基础知识,并与大家探讨在C语言中使用进程和线程以及互斥处理的方法。

    任务书-4基于Linux的进程和线程控制.doc

    任务书-4基于Linux的进程和线程控制.doc

    多任务的优点 进程 线程

    如果不作特殊处理,程序是无法执行多任务的。因为它只有一个进程,且此进程只包含一个线程。 更多内容,见www.vcshare.net

    多任务执行:多进程多线程介绍

    多任务执行:多进程多线程介绍

    Android_进程任务线程[参照].pdf

    Android_进程任务线程[参照].pdf

    进程线程作业

    关于线程进程的基础代码,适合初学者。

    Python 多进程、多线程效率对比

    Python 界有条不成文的准则: 计算密集型任务适合多进程,IO 密集型任务适合多线程。本篇来作个比较。 通常来说多线程相对于多进程有优势,因为创建一个进程开销比较大,然而因为在 python 中有 GIL 这把大锁的存在...

    进程和线程的常见面试问题

    进程和线程的区别 总结:线程是进程的一部分 二.进程的特点 三.线程的五种状态 图解:要清楚的了解线程状态之间的调度运行关系 状态之间有对应的调度方法 四.线程的实现方式 建议使用实现接口的方式创建多...

    UNIX线程和轻量级进程

    线程和轻量级进程 传统上的进程模型有两个严重的局限性。首先,许多应用程序都想并发地执行那些彼此 间独立的任务,但是它们必须要共享一个公共的地址空间和其他的资源,这类应用的例子包 括服务器上的数据库管理...

    多任务操作系统进程和线程同步控制

    在多任务操作系统环境下,进程和线程的同步控制是多线程和多进程编程的一个重点,稍作总结  一、临界区(criticalsection)  1、临界区是线程同步的一种方式,即它在同一时刻只允许一个线程进入,其他线程只能等...

    Visual C++ 进程与线程

    Visual C++ 进程与线程 相关源代码,涵盖终止当前进程,获取系统进程,终止指定进程,在程序中启动程序,使用事件对象同步进程,在两个执行程序间进行数据通信,使用工作...使用用户界面进程,实现多线程多任务等等。

    分布式操作系统中多任务分配与进程线程调度 (2011年)

    分布式操作系统中多任务的分配以及任务调度、负载均衡是实现的难点,其中进程和线程是实现任务执行和 分配最重要的概念之一。如何在分布式系统中实现进程与线程的创建以及信息之间的交互是分布式系统设计至关重要的...

Global site tag (gtag.js) - Google Analytics