计算机发展史--》进程---》线程

首先,我觉得如果想要深入理解一个事物的本质,最好的方式就是去追寻这个事物出现的历史背景以及和推动因素,因为自己不是计算机专业,所以理解相关的概念会有疑惑,虽然知其然,但不知其所以然,这是我最近新的感悟,关于计算机发展历史,再到今天的我们熟悉的线程和进程!

计算机发展历史:

1.一开始我们的计算机其实就是相当于一个计算器,你输入一个指令,然后经过计算机进行运算,最后得出结果,这样的缺点显而易见,就是计算机有很长时间都是空着的,没有充分发挥它的价值!

2.解决这种问题,人们就在想,我可不可以把指令预先写好,然后放入计算机上执行呢?这就引发了磁带的出现,所谓磁带就是批处理指令,这样就可以让计算机通过读写磁带去工作了,但是这样的缺点也很明显就是 很多情况下,在进行IO流读写操作的时候,容易发生阻塞,进而导致计算机停在那

3.解决这个问题,人们就会想,我可不可以让这些指令或者任务切换执行呢?就是说这一指令执行失败,不影响我下一个指令的运行!这个时候就出来 进程这个概念!进程其实 可以理解为一个任务或者一个批处理指令或者指代我们现在的一个程序,但是本质还是批处理指令。为了达到多个线程并行的目的,采取分时的方式,即把CPU的时间分成很多片段,某个片段只能执行某个进程中的指令,虽然说从操作系统和CPU的角度来说还是串行处理的,但是由于CPU的处理速度很快,从用户的角度感觉是并行的!

4.这样做法虽然说进程之间是并行的,但是进程内部还是串行的,也就是说,如果进程内部一条指令发生阻塞,那么同样会导致这个进程进行不下去,那么为了解决这个问题,就引入了线程这个概念,就是把进程进一步的细分为一个个线程,线程之间来回切换执行,这样我们系统调度的最小单位就变为了线程!

5.多进程多线程之间虽然让多任务并行处理的能力大大提升,但是本质上还是分时系统,并不是时间上真正的并行,解决这个问题的方式显而易见,就是让多个CPU能够同时计算任务,从而实现真正意义上的多任务并行!----》从而引发了多核CPU的产生,那我们i7的cpu,4核心8线程的,最多能有几个进程处于执行状态? 即物理核心是4个,但是从计算机的角度来看,被虚拟为了8个核心,所以同时可以开启8线程同时执行,8个线程又属于8个进程!

思维流程图:

这里我再强调一下:
线程:资源调度的最小单位
进程:批处理指令
存在的目的:就是解决阻塞问题

那我们就会产生这样一个问题:既然分时执行可以做到用户层面上的并行,但如何才能提高效率呢?
原来:进行读写操作的时候,假设A进程负责读任务,B进程负责写任务,那么分时执行,其实出现的可能情况就是,我A读完了,B才刚开始写,这样的话,效率相对较低!那我们怎么提高效率呢?那就是要让进程,线程之间可以通信,这就好比A读了一部分,B检测到A已经读取一部分,那么B立马就会写,这样效率自然而然提高了!那我们怎么做通信呢?一般无非 管道,信号量,消息队列,共享存储!进程之间一般使用消息队列,而线程一般使用共享存储。

猜你喜欢

转载自blog.csdn.net/weixin_41247813/article/details/81603445