操作系统

进程和线程的区别

  进程是程序的一次执行过程,线程是进程最小的可调度单位。 线程是进程的一部分,一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。进程是操作系统资源分配的基本单位,而线程是CPU任务调度和执行的基本单位。

并发和并行的区别  

  并发指同一时间内应对多件事情的能力,线程轮流使用CPU的做法我们称之为并发。并行是指同一时间内动手做多件事情的能力。他们本质的区别在于,并发是针对单核cpu的,并发指将cpu的运行时间分为一个个时间片,轮流让线程执行。而并行指在多核cpu下,不同线程能一起执行的概念。

异步和同步的区别

  从方法的调用的角度来看,如果需要等待结果返回,才能继续运行就是同步。如果不需要等待结果的返回,就能继续运行就是异步。

为什么IO操作不会占用CPU

  因为CPU不会直接和磁盘进行交互,他们之间有一个中间人叫DMA芯片,由DMA负责磁盘的IO。DMA相当于一块小的CPU,CPU可以发起一个DMA请求, 传入读写操作类型, 相关I/O设备地址, 内存的起始地址, 要操作的字数.然后DMA就可以获取总线的控制权, 将一大块内存和外部I/O读入或写出.等操作完成后, 再通知CPU. 释放总线控制权。缺点是:系统总线也是一种资源, DMA操作期间, 当处理器需要访问总线时, 执行速度会变慢。

什么时候会发生线程上下文切换

  线程的cpu时间片用完

  垃圾回收,垃圾回收的时候会暂停工作中的所有线程,让垃圾回收线程单独运行

  有更高优先级的线程需要运行

  线程自己调用了sleep、yield、wait、join、park、synchronized、lock等方法

什么是死锁

  死锁是指多个线程因竞争资源而造成的一种僵局状态,若无外力作用,这些进程都将无法向前推进。

死锁的必要条件是什么

  互斥条件:进程要求对所分配的资源(如打印机)进行排他性控制,即在一段时间内某 资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待。

  不剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能 由获得该资源的进程自己来释放(只能是主动释放)。

  请求和保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源 已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。

  循环等待条件:存在一种进程资源的循环等待链,链中每一个进程已获得的资源同时被 链中下一个进程所请求。即存在一个处于等待状态的进程集合{Pl, P2, ..., pn},其中Pi等 待的资源被P(i+1)占有(i=0, 1, ..., n-1),Pn等待的资源被P0占有。

  

一点一点积累,一点一点蜕变!
原文地址:https://www.cnblogs.com/qq2210446939/p/15022393.html