`
kidiaoer
  • 浏览: 818589 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论
阅读更多
进程和线程的异同点
By Aillo on May 13, 2008 10:00 PM | 1 Comment | Previous | Next | EDIT
1、相同点:
(a)二者都具有ID,一组寄存器,状态,优先级以及所要遵循的调度策略。
(b) 每个进程都有一个进程控制块,线程也拥有一个线程控制块。
(c) 线程和子进程共享父进程中的资源;线程和子进程独立于它们的父进程,竞争使用处理器资源;
线程和子进程的创建者可以在线程和子进程上实行某些控制,比如,创建者可以取消、挂起、继续和
修改线程和子进程的优先级;线程和子进程可以改变其属性并创建新的资源。
2、不同点:
(a) 线程是进程的一部分, 一个没有线程的进程是可以被看作单线程的,如果一个进程内拥有多个
进程,进程的执行过程不是一条线(线程)的,而是多条线(线程)共同完成的。
(b) 启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需
的时间也远远小于进程间切换所需要的时间。
(c)系统在运行的时候会为每个进程分配不同的内存区域,但是不会为线程分配内存(线程所使用
的资源是它所属的进程的资源),线程组只能共享资源。对不同进程来说,它们具有独立的数据空间
,要进行数据的传递只能通过通信的方式进行,这种方式不仅费时,而且很不方便。而一个线程的数
据可以直接为其他线程所用,这不仅快捷,而且方便。
(d) 与进程的控制表PCB相似,线程也有自己的控制表TCB,但是TCB中所保存的线程状态比PCB表中少多了。
(e) 进程是系统所有资源分配时候的一个基本单位,拥有一个完整的虚拟空间地址,并不依赖线程而独立存在。



进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用
的并发性。进程和线程的区别在于:
简而言之,一个程序至少有一个进程,一个进程至少有一个线程.
线程的划分尺度小于进程,使得多线程程序的并发性高。
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执
行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序
提供多个线程执行控制。
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操
作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这
就是进程和线程的重要区别。
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配
和调度的一个独立单位.
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本
单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计
数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.

一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.
进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地
址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一
个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的
地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程
序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进
行并且又要共享某些变量的并发操作,只能用线程,不能用进程。如果有兴趣深入
的话,我建议你们看看《现代操作系统》或者《操作系统的设计与实现》。对就个问题说得比较清楚。
分享到:
评论

相关推荐

    线程和进程的区别.txt

    ### 线程和进程的区别 #### 进程与线程的基本概念 在现代操作系统(如Windows、UNIX等)中,进程(Process)和线程...在实际开发过程中,根据具体需求合理地利用进程和线程的概念,可以有效地优化软件的设计和实现。

    Qt线程之间通信、线程和进程之间通信实例

    在编程领域,多线程和多进程是提升应用程序性能和响应速度的重要手段。Qt库,一个跨平台的应用程序开发框架,提供了丰富的API来支持线程和进程间的通信。本实例将深入探讨Qt如何实现线程间通信以及线程与进程间通信...

    内核线程和进程的区别

    内核线程和进程的区别主要体现在它们在Linux操作系统中的实现机制和运行方式。首先需要理解的是,在Linux系统中,线程被抽象为一种特殊的进程,称为轻量级进程(Lightweight Process, LWP)。这种机制与传统的线程...

    loadrunner线程和进程的区别[参考].pdf

    首先,让我们来明确进程和线程的基本概念: **进程** 是操作系统中运行的程序实例,每个进程都有自己的内存空间和系统资源,如内存地址空间、文件描述符等。进程是系统分配资源的基本单位,彼此之间相对独立,可以...

    线程和进程的区别共2页.pdf.zip

    在计算机科学领域,进程和线程是操作系统中的两个基本概念,它们对于理解程序的执行机制至关重要。本篇文章将深入探讨这两个概念的区别,并提供详细的解释。 首先,我们需要了解进程的定义。进程是操作系统资源分配...

    73道Java面试题合集-多线程与进程

    在Java编程领域,多线程和进程是两个关键的概念,对于任何有志于从事Java开发的程序员来说,理解和掌握它们至关重要。以下是对73道Java面试题合集——多线程与进程相关知识点的详细解释。 1. **进程与线程的概念**...

    Android线程和进程介绍.pdf

    在Android系统中,线程和进程是两个关键概念,它们对于理解应用程序的执行环境和多任务处理至关重要。本文将深入探讨Android线程和进程的工作原理,以及如何在Android应用程序开发中正确地使用它们。 首先,Android...

    VC++多线程/进程编程实例(2)(4个实例-附源代码)

    这个资源提供了四个具体的实例,旨在帮助开发者理解如何在VC++环境中进行多线程和多进程编程,以及线程同步的相关概念。 首先,我们需要理解什么是线程和进程。在计算机系统中,一个进程是执行中的程序,拥有独立的...

    进程和线程之间的关系

    ### 进程和线程之间的关系 在计算机科学领域中,进程和线程是两个非常重要的概念,它们之间既有联系又有区别。对于初学者来说,理解进程与线程的关系至关重要,因为这有助于深入掌握操作系统的基本原理及应用。下面...

    进程与线程的生动形象理解

    进程与线程作为操作系统中的核心概念,对于理解和开发高效的软件至关重要。本文旨在通过一个生动的类比来帮助读者更好地理解进程与线程的基本概念及其差异,并进一步探讨它们在实际应用中的联系与区别。 #### 二、...

    python线程与进程实现方式

    总结起来,理解Python中的线程、进程和协程是进行并发编程的关键。生成器和装饰器提供了强大的工具,使我们能够以简洁的方式实现并发和异步操作。通过熟练掌握这些概念和技术,开发者可以编写出更加高效、灵活的...

    进程和线程详解

    进程和线程是计算机操作系统中的两个基本概念,对于任何软件开发者,尤其是系统级或服务器端开发者来说,理解和掌握它们至关重要。下面将详细解释这两个概念,以及它们在实际应用中的作用。 首先,我们来理解“进程...

    线程和进程的区别,详细解释

    线程进程的区别于联系,详细介绍.希望对大家有用。如果有不足的地方,麻烦留言。

    Linux C语言函数大全.rarWindows 2000提供的常用对象可分成三类:核心应用服务、线程同步和线程间通讯。其中,开发人员可以使用线程同步对象来协调线程和进程的工作,以使其共享信息并执行任务。此类对象包括互锁数据、临界段、事件、互斥体和信号等。

    Windows 2000提供的常用对象可分成三类:核心应用服务、线程同步和...其中,开发人员可以使用线程同步对象来协调线程和进程的工作,以使其共享信息并执行任务。此类对象包括互锁数据、临界段、事件、互斥体和信号等。

    安卓 进程/线程绑定cpu

    在安卓开发中,进程和线程的管理是优化应用程序性能的关键环节。特别是在处理密集型计算或者需要高效利用硬件资源的任务时,将特定的线程或进程绑定到特定的CPU核心上,可以有效提升效率,减少上下文切换带来的开销...

    C#线程进程操作

    首先,我们需要理解进程和线程的基本定义。**进程**是操作系统资源分配的基本单位,它拥有独立的内存空间,包括代码、数据和堆栈。每个进程都有自己的地址空间,互不干扰。而**线程**是执行单元,是进程内的一个单一...

    线程与进程

    线程是比进程更小的执行单位,它与同属一个进程的其他线程共享进程的资源,但拥有独立的栈空间和执行序列。 #### 二、线程与进程的区别 1. **资源拥有与共享**:进程拥有独立的地址空间和其他资源,而线程与同进程...

Global site tag (gtag.js) - Google Analytics