进程和线程之间的差

时间:2014.06.25

位置:基础

-------------------------------------------------------------------------

一、简述

进程Process和线程Thread是操作系统的基本概念。抽象而重要。下面从几个方面来分析进程和线程的差别。

-------------------------------------------------------------------------

二、分析

进程可觉得是程序运行时的一个实例。是系统进行资源分配的独立实体,每一个进程拥有独立的地址空间,所以一个进程无法直接訪问还有一个进程的变量和数据结构。假设希望让一个进程訪问还有一个进程的资源,须要使用进程间通信,比方:共享存储系统,消息传递系统,管道通信系统等。

一个进程能够拥有多个线程,每一个线程使用其所属的栈空间。线程与进程最基本的差别是:同一个进程内的多个线程会共享部分状态,即多个线程能够读写同一块内存。换句话说就是进程的内存空间是共享的。每一个线程都能够使用这些共享内存,当然。这当中也有某些共享内存在线程之间尽管共享。但各线程需相互排斥或满足一定条件才干訪问。

于是就有了相互排斥锁,防止对个线程同一时候读写某一块内存区域。还有些内存仅仅能供给固定数目的线程使用。好比一个房间定义仅仅能容纳n个人,解决的办法是在门口挂n把钥匙。每一个进去时就取一把。出来时把钥匙放回,一旦后面有人想进去而钥匙架已空。就得在门口排队等待。这就是信号量。用来保证多个线程互不冲突,相互排斥锁是信号量的一种特殊情况(n=1),因此全然可用后者取代前置,但相互排斥锁简单高效。在必须保证资源独占的场景下。我们採用相互排斥锁。

,而一个进程是无法直接訪问还有一个进程的内存的。同一时候,每一个线程还拥有自己的寄存器和栈,其它线程能够读写这些栈内存。

线程是进程的一个特定运行路径。当一个线程改动了进程中的资源时。其兄弟线程能够马上看到这样的变化。

-------------------------------------------------------------------------

三、总结

1.进程是系统进行资源分配的基本单位。有独立的内存地址空间;线程是CPU调度的基本单位,没有单独的地址空间,有独立的栈。局部变量。寄存器和程序计数器等。

2.创建进程的开销大,包含创建虚拟地地址空间需要大量的系统资源;小的开销,以创建一个线程。基本上只存在一个内核对象和一个堆栈。

3.的方法,不能直接访问的处理的资源以及;相同的过程的多个线程内的资源共享的方法

4.这个过程切换的开销大,线程切换开销;进程间通信的开销大,线程之间小的通信开销。

5.线程属于进程,你不能独立运作,每个进程具有至少一个螺纹,这是主线程。

时间: 2024-10-17 21:26:47

进程和线程之间的差的相关文章

进程与线程之间的关系和区别 及 CPU调度

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位. 进程和线程的关系: (1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程. (2)资源分配给进程,同一进程的所有线程共享该进程的所有资源. (3)处理机分给线程,即真正在处理机上运行的是线程. (4)线程在执行过程中,需要协作同步.不同进程的线程间要利用消息通信的办法实现同步.

一篇让你明白进程与线程之间的区别与联系

前言 欢迎关注公众号:Coder编程获取最新原创技术文章和相关免费学习资料,随时随地学习技术知识! 本章主要介绍进程与线程的区别与联系相关知识点,也是我们面试过程中,经常会问到的了一个问题.希望通过这篇文章,能让大家理解相关知识点~ 涉及面试题: 1.进程与线程之间有什么区别? 2.进程.线程都各有什么特点? 3.进程之间的是怎么进行交互的呢? 4.什么是缓冲区溢出? 5.进程之间如何进行交互? 6.线程之间如何进行交互? 上面的面试题可以看出,其实都是一回事,只是换了一种提问方式,只要我们能掌

[转帖]Linux系统进程的知识总结,进程与线程之间的纠葛...

Linux系统进程的知识总结,进程与线程之间的纠葛... https://cloud.tencent.com/developer/article/1500509 当一个程序开始执行后,在开始执行到执行完毕退出这段时间内,它在内存中的部分就叫称作一个进程. Linux 是一个多任务的操作系统,也就是说,在同一时间内,可以有多个进程同时执行.我们大家常用的单CPU计算机实际上在一个时间片段内只能执行一条指令.那么Linux是如何实现多进程的同时执行的呢?原来Linux使用了一种称为” 进程调度 “的

进程与线程之间的区别及联系

一.定义: 1.进程:进程是一个具有独立功能的程序关于某个数据集合的以此运行活动.是系统进行资源分配和调度的独立单位,也是基本的执行单元.是一个动态的概念,是一个活动的实体.它不只是程序的代码,还包括当前的活动. 进程结构特征:由程序.数据和进程控制块三部分组成.具有独立性.并发性.异步性和动态性的特点. (1).进程的概念主要有两点: 第一,进程是一个实体.每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)--存储处理器执行的代码,数据区域(data regio

进程与线程之间的资源的关系

一个进程由一到多个线程组成,各线程共享进程的内存空间(代码,数据,堆)和一些进程级的资源(打开的文件和信号).进程有自己独立的寄存器和栈. 线程私有的是:局部变量,函数的参数,TLS(Thread Local Storage,线程局部存储)数据. 线程之间共享(进程所有):全局变量,堆,函数里的静态变量,程序代码,打开的文件.

进程与线程之间的关系

看到一种说法是"一个程序至少有一个进程,一个进程至少有一个线程",这种把程序与进程,进程与线程的关系混淆的说法是错误的. 程序(program)只能有一个进程,一个进程就是一个程序.有人说,我打开一个程序,比如chrome,有十多个进程呢,这是咋回事.那就是十多个程序,操作系统给他们分配了彼此独立的内存,相互执行不受彼此约束,分配同样时间的CPU.对于用户而言,他们是一个整体,我们通常称之为应用程序(application).对于计算机而言,一个进程就是一个程序,多个进程(比如一个浏览

进程和线程之间的概念以及多线程的优点

进程: 进程可以理解为一个正在运行的程序,每一个运行的程序都是一个进程. 线程: 线程可以为在进程中运行的子任务,一个进程可以有N个线程(N <= 1). 多线程的优点: 举个例子,一个人两天可以完成的刚工作(一条线程工作两天),那么两个人一天就可以完成了(两条线程工作一条).很明显,工作效率翻倍,下面画个图,可以看一下: 当然这只是在广义上的讲解,其实底层的CPU的运行也是单线程的,只不过如果一个程序是多线程的话,CPU会以非常快的速度在不同线程之间来回切换,让人误以为是多线程. 原文地址:h

清晰易懂的进程与线程之间的区别

进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握.最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂. 1.计算机的核心是CPU,它承担了所有的计算任务.它就像一座工厂,时刻在运行. 2.假定工厂的电力有限,一次只能供给一个车间使用.也就是说,一个车间开工的时候,其他车间都必须停工.背后的含义就是,单个CPU一次只能运行一个任务. 3.进程就好比工厂的车间,它代表CPU所能处理的单个任务.任一时刻,CPU总是运行一个进程,其他进程处

Linux系统进程的知识总结,进程与线程之间的纠葛...

来源:嵌入式ARM 当一个程序开始执行后,在开始执行到执行完毕退出这段时间内,它在内存中的部分就叫称作一个进程. Linux 是一个多任务的操作系统,也就是说,在同一时间内,可以有多个进程同时执行.我们大家常用的单CPU计算机实际上在一个时间片段内只能执行一条指令.那么Linux是如何实现多进程的同时执行的呢?原来Linux使用了一种称为” 进程调度 “的手段,首先,为每个进程指派一定的运行时间,这个时间通常很短,短到以毫秒为单位,然后依照某种规则,从众多的进程中挑选一个投入运行,其他进程暂时等