操作系统面试题汇总

死锁?死锁产生的原因?死锁的必要条件?怎么处理死锁?
解析:
1、什么是死锁?
死锁是相互等待资源而产生的一种僵持状态,如果没有外力的干预将一直持续这个状态
2、死锁产生的原因?
系统资源不足、相互竞争资源、请求资源顺序不当
3、死锁的必要条件?
互斥、不可抢占、循环等待、请求与保持
4、怎么处理死锁?
因为互斥是不可改变的,所以只能破坏其他三个条件中的一个来解除死锁,方法:剥夺资源、杀死其中一个线程

进程的几种状态?

  • run(运行状态):正在运行的进程或在等待队列中对待的进程,等待的进程只要以得到cpu就可以运行
  • Sleep(可中断休眠状态):相当于阻塞或在等待的状态
  • D(不可中断休眠状态):在磁盘上的进程
  • T(停止状态):这中状态无法直观的看见,因为是进程停止后就释放了资源,所以不会留在linux中
  • Z(僵尸状态):子进程先与父进程结束,但父进程没有调用wait或waitpid来回收子进程的资源,所以子进程就成了僵尸进程,如果父进程结束后任然没有回收子进程的资源,那么1号进程将回收

IPC通信方式?

  • 管道(匿名管道(pipe亲缘关系的进程通信)、命名管道(mkfifo/mknod))
  • 消息队列:是基于消息的、用无亲缘关系的进程间通信,主要函数:msgget、msgsend、msgrecv、msgctl
  • 信号量:相当于一把互斥锁,通过p、v操作,主要函数:semget、semop、semctl
  • 共享内存:是进程间通信速度最快的,所以用经常是集合信号量或互斥锁来实现同步,shmget、shmat、shmdt、shmctl

什么是虚拟内存?
是将进程部分装入内存中,从而能实现一个很大的程序能在一个比它小的内存中运行,它的主要实现是靠程序的换进换出来实现的,因为内存中0-3G是用户使用,3~4G才是内存使用,通过映射来实现来进行逻辑地址到物理地址的映射

虚拟地址、逻辑地址、线性地址、物理地址的区别?
分段机制把一个逻辑地址转换为线性地址;接着,分页机制把一个线性地址转换为物理地址。

  • 虚拟地址:虚拟内存映射出来的地址
  • 逻辑地址:程序的段加偏移量形成的,C/C++程序中取地址求出来的地址就是逻辑地址
  • 线性地址:是逻辑地址到物理地址的中间层,只有启动分页机制的时候才有线性地址,如果没有分页机制,那么线性地址就是物理地址
  • 物理地址:是内存中实实在在存在的硬件地址
    逻辑地址(启动分段)–》线性地址(启动分页)–》物理地址
    ————————————————
    版权声明:本文为CSDN博主「zhou753099943」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/zhou753099943/article/details/51771220
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值