面试知识点总结之操作系统

1. 进程与线程区别

进程:CPU资源分配的最小单位,具有独立的地址空间,进程间不会相互影响;
线程:CPU调度的最小单位,是进程中不同的执行路径,共享进程的地址空间和其他资源,同时还拥有自己的栈、指针、程序计数器等资源。

2. 如何进行线程切换,有何影响

切换:调用Thread.sleep()t.join()方法,或调用notify()notifyAll()并将本线程至于等待状态;
影响:上下文切换需要保存当前线程的局部变量、程序计数器等,并加载待执行线程的相应内容,有一定的开销并且增加了内存的消耗。

3. 线程之间如何进行同步

  • synchronized同步方法;
  • synchronized同步代码块;
  • 使用volatile关键字:提供一种免锁访问机制,每次使用时会刷新获取最新版本;
  • 使用重入锁(ReentrantLock);
  • 使用ThreadLocal管理变量,每个线程会获得该变量的副本,相互独立。

4. 死锁如何造成,如何避免

造成死锁的四个必要条件:
(1) 互斥条件:一个资源每次只能被一个进程使用;
(2) 请求与等待条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放;
(3) 不剥夺条件:进程已获得的资源在未使用完之前,不能强行剥夺;
(4) 循环等待条件:若干个进程间形成循环等待资源的关系。
避免:允许前三个条件存在,但通过合理的资源分配算法来确保不会发生循环等待链,如银行家算法。

5. 进程间通信方式

  • 无名管道
  • 高级管道
  • 有名管道
  • 消息队列
  • 信号量
  • 信号
  • 共享内存
  • 套接字socket
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值