经典面试题6(死锁,线程状态,进程调度算法,缓冲区溢出,缓冲区溢出,三次握手和四次挥手,HTTP 和 HTTPS 协议)

目录

1,什么是死锁,死锁产生的条件?如何解决死锁问题?

2,线程有哪几种状态?

3,有哪些进程调度算法?

4,什么是缓冲区溢出?

5,计算机网络各层有哪些协议?

6,缓冲区溢出的区别?

7,TCP 为什么需要三次握手和四次挥手?

8,HTTP 和 HTTPS 协议的区别?

操作系统和计算机网络

1,什么是死锁,死锁产生的条件?如何解决死锁问题?

        在两个或者多个并发的进程中,如果每个进程持有某种资源而又等待其他的进程释放他们的资源,在一直持续这种状况的情况下,不能向前推进的现象,称为死锁。就是进程之间相互阻塞,相互等待的状态。

        必要条件:

  1. 互斥条件:一个资源一次只能被一个进程调用
  2. 请求与保持条件:一个进程因请求资源而阻塞时,对已经获得的资源不放。
  3. 不剥夺条件:进程获得资源,在其他进程未使用完的情况下,不能强行剥夺。
  4. 循环等待条件:若干进程之间形成一种循环,来等待资源的关系。

        解决办法:

        1,死锁预防

基本思想就是将四个必要条件之中,使其一个不成立即可:

  • 破除互斥条件(一般无法破除)
  • 破除“请求与保持”:实行资源分配策略,在进程运行之前,必须一次性的获取所有的资源,缺点因为进程是动态执行的,无法预知进程执行前所需的全部资源,同时也会降低资源利用率,导致进程的并发性。
  • 破除“不可剥夺”:允许进程强行剥夺资源,当一个已经保持了某些不可以被抢占的资源的进程,提出新的资源请求而不能得到满足的时候 ,他必须释放掉已经保持,拥有的所有资源,之后需要的时候继续申请就行。
  • 破除“循环等待”:实行资源有序分配策略,对所有的资源编号,按照顺序获取资源,将稀缺的采用较大的编号,在申请资源的时候必选按照编号的顺序进行,一个进程只有获得较小的编号才可以申请较大的编号。

        2,死锁避免

        该方法是允许前三个条件,但是通过动态的检测资源的分配状态,以确保循环等待的条件不成立,从而确保系统处于安全的状态(系统可以按照某一个顺序为进程分配资源,系统就是安全的)。

        3,死锁检测

        不限制资源访问或者约束进程行为,操作系统会周期性的执行一个算法,来检测前面的循环等待条件,死锁检测算法是:通过资源分配图来检测是否存在环来实现,从一个节点出发进行深度优先搜索,对访问过的节点进行标记,如果访问了已经标记的节点,就表示有存在环,也就是检测到了死锁的发生。

        4,死锁解除

        常用方法,终止进程和资源抢占。

        进程终止就是简单的终止一个或多个进程以打破循环等待:终止所有死锁进程,终止一个进程直到取消死锁循环为止。

        资源抢从一个或者多个死锁进程那里抢占一个或者多个资源。

        5,鸵鸟策略        

        因为解决死锁的代价很高,因此鸵鸟策略可以不采取任何的措施会获得更好的性能,当发生死锁的时候不会对用户造成很大的影响,或者死锁发生的概率很低,可以采取鸵鸟策略。

2,线程有哪几种状态?

1,创建状态,在生成线程对象,并没有调用该对象的start方法,这是线程处于创建状态。

2,就绪状态,当调用了线程的start方法之后,该线程就绪状态,到那时此时线程调度程序还没有把该程序设置为当前线程。在线程运行之后,就会处于就绪状态。

3,运行状态,线程调度程序将处于就绪状态的线程设置为当前线程,此时就是运行状态,开始运行run函数。

4,阻塞状态,线程在运行的时候,被暂停,通常因为某个原因放弃Cpu的使用权,暂停或者停止运行(sleep,suspend,wait方法都可以),直到线程进入就绪状态,才有机会获得CPU的注意,再次转入运行状态。

5,死亡状态,如果一个线程run方法执行结束或者调用stop方法后,该线程就会死亡,已经死亡的线程,无法用start使其进入就绪状态。

  • run()方法用来执行线
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会Java的MING

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值