线程和进程的通俗易懂解释(还有你想看的图片哟)

  QQ程序如果没有运行,那它只是程序,而不是进程,一旦运行了QQ程序,那它就成了进程。QQ程序一旦运行成了进程,操作系统如windows就要分配给QQ运行的内存空间,CPU运行的时间以及其它资源,这样QQ程序就可正常运行了。如果要运行其它程序,如杀毒软件,操作系统也要做同样的事情。有了进程之后,最大的好处就在于电脑可以同时运行多个程序,每个程序就是一个进程。而如果没有进程呢,那电脑一次只能运行一个程序,你玩QQ,就不能再同时听歌、玩游戏等等;如果你想要听歌,只能关掉QQ,再打开听歌曲的软件进行听歌了。

  有了进程,可以让多个程序同时运行,但每一个进程在运行时,一次只能执行一个任务,要想执行第二个任务,只能等第一个任务执行完后,再执行。但在我们现实应用中,就会出现不能等的情况,而是希望一个程序(进程)的多个任务同时执行。为达到这个目的,线程就出现了。线程可以让一个程序(进程)同时运行多个任务(并发)。比如我们用word程序时(一个进程),可能会存在三个任务:a、接受键盘输入;b、将键盘输入的内容显示在显示器上;c、输入的内容保存在硬盘上。如果没有线程,那只能是程序先等键盘输入内容,然后过好长时间,再把你输入的内容显示在显示器上,等内容显示出来了,再将内容保存在硬盘上。但事实上,你在用Word时,一边输入,一边就显示了,同时也自动保存在硬盘上了(程序可设定自动保存),没有等待的感觉,这就得归功于线程的作用了。有了线程之后,你就感觉输入、显示、保存好像是同时发生一样(并发,同一时间,一并发生)。

  线程和进程的作用与区别,一句话概括的话,就是上文中的解释。以下文字内容与图片从网上收集,也较通俗地解释了线程与进程的区别。看完之后,再看网上较专业的解释就能看得明白了。

进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。

最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。

  1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。

  2.假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个CPU一次只能运行一个任务。

  3.进程就好比工厂的车间,它代表CPU所能处理的单个任务。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。

  4.一个车间里,可以有很多工人。他们协同完成一个任务。

  5.线程就好比车间里的工人。一个进程可以包括多个线程。

  6.车间的空间是工人们共享的,比如许多房间是每个工人都可以进出的。这象征一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。

  7.可是,每间房间的大小不同,有些房间最多只能容纳一个人,比如厕所。里面有人的时候,其他人就不能进去了。这代表一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。

  8.一个防止他人进入的简单方法,就是门口加一把锁。先到的人锁上门,后到的人看到上锁,就在门口排队,等锁打开再进去。这就叫"互斥锁"(Mutual[?mju:t?u?l]相互的;共同的 exclusion[?k?sklu:?n]拒绝;排斥,缩写 Mutex[m‘ju:teks]),防止多个线程同时读写某一块内存区域。

  9.还有些房间,可以同时容纳n个人,比如厨房。也就是说,如果人数大于n,多出来的人只能在外面等着。这好比某些内存区域,只能供给固定数目的线程使用。

  10.这时的解决方法,就是在门口挂n把钥匙。进去的人就取一把钥匙,出来时再把钥匙挂回原处。后到的人发现钥匙架空了,就知道必须在门口排队等着了。这种做法叫做"信号量"(Semaphore),用来保证多个线程不会互相冲突。

  不难看出,mutex是semaphore的一种特殊情况(n=1时)。也就是说,完全可以用后者替代前者。但是,因为mutex较为简单,且效率高,所以在必须保证资源独占的情况下,还是采用这种设计。

11.操作系统的设计,因此可以归结为三点:

(1)以多进程形式,允许多个任务同时运行;

(2)以多线程形式,允许单个任务分成不同的部分运行;

(3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源

原文地址:https://www.cnblogs.com/qcq0703/p/8668675.html

时间: 2024-10-13 21:04:28

线程和进程的通俗易懂解释(还有你想看的图片哟)的相关文章

线程与进程-- 简单的解释

最近这段时间小编有点自卑,但是还是要按时的冒一下泡!!!!!! 在学习过程中经常听到进程与线程的概念,这几天了解了下线程与进程之间的关系,把自己的想法分享一下: 感谢:http://www.tuicool.com/articles/vMfIjy 进程(process)和线程(thread)是操作系统的基本概念. 最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂. 假设我们每个人都有一个房子( 想想眼里就都是泪 ),这个房子有一个很洋气的名字,叫做”Process“,房子里面有

[操作系统] 线程和进程的简单解释

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

线程和进程的通俗解释

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

操作系统-线程与进程

首先要分清楚进程和线程的区别. 借用<操作系统概念>的一幅图: 线程由线程ID.程序计数器.寄存器集合和栈组成. 进程由代码段.数据段.文件.线程组成. 可以想象成一个进程可以有多个线程.而每个线程可以共享进程里面的代码段.数据段等. 举个例子. #include <stdio.h> #include <pthread.h> static int counter = 0; void* mythread(void* arg) { int i; for (i = 0; i

【Python之路Day11】网络篇之线程、进程、协程

目录: 基本概念 线程 进程 协程  一. 基本概念 现在的操作系统,如Unix.Linux.Windows.Mac OS X等,都是支持“多任务”的操作系统. 什么叫”多任务“呢?简单理解,就是我们可以一般上网浏览某车之家的网页,看看喜欢的车型信息:一边打开某易云音乐听听好歌:一边打开某软件股市行情图,不安的盯着曲线图...卧槽,又尼玛跌了!  这就是多任务喽. 多核心的CPU已经很普及了,但是,就是在过去的单核心CPU上,也可以执行多任务. PS: CPU是分时间片的,假设任务1执行0.01

Linux 线程与进程,以及通信

http://blog.chinaunix.net/uid-25324849-id-3110075.html 部分转自:http://blog.chinaunix.net/uid-20620288-id-3025213.html 1.首先要明确进程和线程的含义: 进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位.与程序相比,程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体.进程是程序在某个数据集上的执行,

C++进程注入(通过远程线程注入进程)

需要本文代码请直接跳到文章最底部下载 注入进程的方法有很多,本文主要介绍通过远程线程来注入进程的方法: 我们知道,每个进程都有4GB的地址空间,windows可用的大小大概为1.5GB左右,远程线程注入的方法主要是,打开一个线程以后,将要注入的动态库的地址写入这个地址空间,然后调用开启远程线程的函数,来执行LoadLibraryA或者LoadLibraryW(其实不存在LoadLibrary这个函数,他只是一个宏,如果是UNICODE环境的话会调用LoadLibraryW,否则就是LoadLib

Python:线程、进程与协程(3)——Queue模块及源码分析

Queue模块是提供队列操作的模块,队列是线程间最常用的交换数据的形式.该模块提供了三种队列: Queue.Queue(maxsize):先进先出,maxsize是队列的大小,其值为非正数时为无线循环队列 Queue.LifoQueue(maxsize):后进先出,相当于栈 Queue.PriorityQueue(maxsize):优先级队列. 其中LifoQueue,PriorityQueue是Queue的子类.三者拥有以下共同的方法: qsize():返回近似的队列大小.为什么要加"近似&q

线程与进程(我的理解)

最近面试有人问到线程与进程的区别,我就说进程是系统资源分配的最小单位,线程是CPU调度的最小单位.但是人家有细问了一下,我就没回答出来, 后来我查查书,没有查到我满意的解释.感觉应该是这样的(以后有新的理解会补充进来,如果有错也会改正O(∩_∩)O~) 最开始没有线程,只有进程,比如写个程序,程序运行起来以后,进程就是程序运行的实例,pid就是进程的标识. 后来有了多处理器啥的,一些程序为了用上这多个CPU,让这些程序共享系统资源等,但每个程序又有自己的一些属性,这些程序就称之为线程.如果这些程