这篇博客旨在用通俗易懂的话介绍计算机的专业名词。能够坚持多久我也不知道。但是能够坚持一个词算一个。以下的内容来自我阅读其他博主的资料和自己浅薄见解,如有不正确的希望及时指出,以免耽误别人。
1、并发
比并发更让人熟悉的词,可能是高并发;那么什么是并发呢?
例子:
早上起来出早饭,你妈给你准备了鸡蛋、粥、油条、豆浆 ··· ···· 嘎啦吧唧一堆;好的,接下来你就开始吃了。
你先剥鸡蛋、剥了一下又去喝了一口粥、然后又吃了一口油条······
不知你注意到了没有。你在鸡蛋没剥完的情况下喝了粥,然后又去吃了油条。
你的这一系列操作就可以看成一个并发
当你有多个程序需要被处理的时候,它会交替着处理,这就是并发。
解释:
并发,在同一个cpu上同时(不是真正的同时,而是看来是同时,因为cpu要在多个程序间切换。可理解为同一个时间段)运行多个程序。
2、并行
谈完了并发,我们来谈一下并行。
还是借用吃早饭的例子。
这时候你改变想法了。你开始一边吃鸡蛋,一边喝粥外加吃油条了。这些一起执行的动作就是并行。
解释:
并行:同一时间,每一个cpu运行一个程序。
并发是多个事件在同一时间段执行,而并行是多个事件在同一时间点执行。
3、进程
关于进程,这个不是那么的方便举例。
例子:
这样来说吧!假设,你在家写数学试卷。一共6道大题。你先把第一题看完,然后记录了你的想法。
接着你又去看了第二题,然后记录了你的想法以及解题思路。以此类推,你一直这样操作到了第6题。
这时候你看着自己对这6题的理解,以及你的解题思路。然后你大致的分配了一下每一题完成所需的时间。
你记录思路、分配时间、数学试卷;这一套东西就类似一个进程。
进程是程序执行时的一个实例,能够分配cpu和内存等资源。
进程一般包括指令集和系统资源,其中指令集就是你的代码,系统资源就是cpu、内存以及I/O等。
进程是一个程序在一个数据集中的一次动态执行过程,可以简单理解为“正在执行的程序”,
它是CPU资源分配和调度的独立单位。 进程一般由程序、数据集、进程控制块三部分组成。
我们编写的程序用来描述进程要完成哪些功能以及如何完成;数据集则是程序在执行过程中所需要使用的资源;
进程控制块用来记录进程的外部特征,描述进程的执行变化过程,
系统可以利用它来控制和管理进程,它是系统感知进程存在的唯一标志。
进程的局限是创建、撤销和切换的开销比较大
抱歉最近有点事,暂时无法继续更新了,宝宝们等我归来的!
4、 线程
假设你开着车去洗车场洗车···
如果把计算机的CPU比作一个洗车场的停车区域,那么每一个停车位都是一个“进程”;每一个洗车工就是一个线程。
进程有两个特性:
资源的所有权
调度执行(指令集)
线程是调度执行中的一部分,是指进程执行过程的路径,也叫程序执行流
线程是在进程之后发展出来的概念。 线程也叫轻量级进程,它是一个基本的CPU执行单元,
也是程序执行过程中的最小单元,由线程ID、程序计数器、
寄存器集合和堆栈共同组成。一个进程可以包含多个线程。
`优点`
减小了程序并发执行时的开销,提高了操作系统的并发性能
`缺点`
线程没有自己的系统资源,只拥有在运行时必不可少的资源
同一进程的各线程可以共享进程所拥有的系统资源,如果把进程比作一个车间,那么线程就好比是车间里面的工人。
不过对于某些独占性资源存在锁机制,处理不当可能会产生“死锁”。
原创文章转载请说明出处,盗版必究!