面试必备——操作系统

操作系统基础知识

常见的异步调用方式
  • 单向调用:客户端发出请求之后就不再关心服务端的情况。如发短信。可靠性由系统保证,机制有:重发机制、失败后给客户端发送失败消息等。
  • 延迟响应:客户端发出调用后,在处理完成前很快得到一个ticket,得到 ticket 后客户端就可以继续做它的事情了。这个可以看做是稍微延迟的的异步单向,可靠性分为两阶段,得到 ticket 前和 ticket 后。得到 ticket 前可靠性可以由客户端来掌控,而得到ticket 后的可靠性由系统来保证了。
  • 请求回调:与编程中的请求回调相同。这里可靠性就可以由客户端来完全掌握了。
什么是同步/异步、阻塞/非阻塞
  • 调用者就可以是用户,然后被调用者就是一些资源。

  • 同步:A调用B,这个时候A只有等待B有结果才会返回。

    异步:A调用B,B立即返回,不用等待。等B处理完之后会通过回调函数通知A结果。

  • 阻塞:A调用B,A会被吊起,等待B的返回结果,什么事都不可以做。

    非阻塞:A调用B,自己会被挂起等待B的结果,但是可以去做别的事情。

死锁

  • 什么是死锁:
    • 为了防止多线程竞争共享资源导致的数据错乱,操作共享资源时对共享资源加互斥锁
    • 出现两个线程都在等待对方释放锁的情况
  • 死锁发生的四个必要条件:
    • 互斥条件:多个线程不能同时使用同一个资源(等待持有资源的线程释放资源)
    • 持有并等待条件:线程在因为要申请的资源被占用的情况下,不释放已经占有的资源
    • 不可剥夺条件:线程在自己使用完已持有的资源之前不能被其他线程获取
    • 环路等待条件:在发生死锁时,两个线程获取资源的顺序构成了环型链
  • 避免死锁的方法:
    • 让进程一次性申请所有它所需的资源
    • 拥有部分资源的进程在申请其他资源时,可以主动释放现有资源
    • 给资源编号,进程按编号获取资源,释放资源时反序释放
常见进程调度算法:
  • 先来先服务:进程按照它们请求CPU的顺序使用CPU (开销最小)
  • 轮转法:将系统中所有的就绪进程排成一个队列,每次调度时将 CPU 分派给队首进程,让其执行一个时间片,在一个时间片结束时,换下一个 (开销低,抢占式,公平对待进程)
  • 短作业优先:对预计执行时间短的进程优先分派处理机 (缩短等待时间,不利于长作业)
  • 最短剩余时间优先:抢占式,不利于长作业
  • 高响应比优先:同时考虑每个作业的等待时间和需要的执行时间 (比较均衡各进程)
虚拟内存映射到物理内存的机制
  • 每个进程的 4G 内存空间只是虚拟内存空间,每次访问内存空间的某个地址,都需要把地址翻译为实际物理内存地址
  • 所有进程共享同一物理内存,每个进程只把自己目前需要的虚拟内存空间映射并存储到物理内存上
  • 进程要知道哪些内存地址上的数据在物理内存上,哪些不在,还有在物理内存上的哪里,需要用页表来记录

(持续更新中,建议收藏)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值