认识死锁之死锁的基本概念

 

线程(软件上的概念):CPU能运行(调度的)最小单位【所以多核系统可以调度多个单位】

这里要注意下手机的8核,10核处理器。手机的和电脑的不一样。一般手机上的都算上了GPU的核心。

CPU频率:CPU内部有个时钟电压这个电压就是频率。
当超频后,就是提高这个时钟电压,让CPU处理指令更快,所以为啥玩某些游戏的时候,某些机子上的CPU很发烫。

一个CPU核心在每一个瞬间智能运行一个计算机指令(属于某一个线程的指令)。

 


问:计算机为什么能“同时运行”很多个程序?
答:CPU任何时间都不能进行同时运行,这其实是个假象,CPU有一个时间片(CPU把他自己的时间进行分割,切成很多的时间片,每一个时间片很短,应该是那个0.几微秒的时间)这样不断的进行切换(调用不同的线程)就可以实现同时运行这种假象(人的眼睛是感觉不到的)。


阻塞:正在干的这个事情出现了故障,不能干下一个事情。比如上厕所,当拉shi的时候,半卡住的时候,这个时候就属于阻塞,因为shi半卡住,你不能去擦屁股和提裤子走人。在计算机中,线程获取了CPU的时间片,但卡在了某一个地方,就会造成阻塞。一个线程进入了一种状态,没办法即使的返回。

互斥:一个东西(关键数据、或者关键代码段、临界资源)只能一个线程使用。

死锁:犹如坑和纸张,这里只有1个坑和一个人用的纸,一个人用了坑没带纸,一个

人带了纸没进坑。这种状态就是死锁。一个线程需要同时拥有两个关键数据的访问权限。
【这里要注意,进程与进程之间也可能发送死锁,如一个进程要读取一个串口数据同时也想访问系统注册表里面的某个文件,然后操作系统把其中的一个串口给占用了,操作系统也想去访问同样的一个注册表文件,这个时候也会发送死锁】

造成死锁的原因:

  • 1.资源是有限的;

  • 2.对于这些资源,一次只能一个线程访问;

  • 3.当发送死锁后,操作系统没有回收这些资源的机制;

  • 4.线程之间形成了相互依赖的关系。

下一篇是专门讲解代码的:

https://blog.csdn.net/qq78442761/article/details/81293940

猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/81276366