【2019秋冬】【面经】操作系统

参考操作系统面经

进程与线程区别
进程是系统资源调度和分配的基本单位,线程是进程的一个实体,是CPU调度和分配的基本单位,线程是比进程更小的,能独立运行的基本单位,最小的CPU执行单元

进程间通信方式
管道&命名管道
信号量
共享内存
消息队列
套接字
信号

线程同步方法
1.互斥量
只有拥有互斥对象的线程才能访问公共资源,因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问
2.信号量
允许同一时刻多个线程访问同一个资源,但是需要控制最大线程数
3.信号(wait/notify)
用通知的方式保持多线程同步

死锁
死锁概念
两个或多个进程无限期的阻塞,互相等待的一种状态

死锁产生条件
互斥,占有并等待,非抢占,循环等待

死锁解决办法
1.死锁预防
让四个产生条件至少一个不成立,就可以预防
· 打破互斥条件
允许进程同时访问资源。但资源能否被同时访问无法控制,不可行
· 打破占有并等待条件
实行资源预先分配策略或只允许进程在没有占用资源时才能申请资源。降低资源利用率,可用性不可预知
· 打破非抢占条件
允许进程强行夺取资源。实现困难,降低系统性能
· 打破循环等待条件
实行资源有序分配,对资源排号

2.死锁避免
动态检测资源分配状态,确保循环等待调解不成立

安全序列
银行家算法

3.死锁检测

4.死锁解除
· 进程终止
终止所有死锁进程或一次只终止一个进程直到死锁解除

· 资源抢占
从死锁进程抢占资源

进程状态
就绪,运行,阻塞

线程状态
创建,就绪,运行,阻塞,等待,时间等待,死亡

内存管理
分段与分页
1.页存储
页存储是实现从页号到物理块号的映射,通过查找页表可以找到对应的物理块
页存储是将用户视角内存(逻辑)与物理内存分离,页大小固定,存在于内存中

2.段存储
将用户程序地址空间分成大小不等的段,每一段对应一组相对完整的逻辑信息
段存储是符合用户视角的内存分配方案,段大小不固定

分段与分页的区别
1.分段是更满足用户的需求,是逻辑单位;分页是满足系统需求,是物理单位
2.段大小不固定,由功能决定;页大小固定,由系统决定
3.段提供二维地址空间;页提供一维地址空间
4.段是逻辑单位,便于存储保护和信息共享;页的保护和共享受到限制
5.段没有内碎片,存在外碎片;页存在内碎片,没有外碎片

页面置换算法
1.FIFO先进先出
2.LRU最近最少使用
3.LFU最少使用次数
4.OPT最优内置 理论上的最优,保证置换出去的是不再被使用的页
5.CLOCK时钟置换

进程调度策略
1.FCFS先来先服务
2.SPF短作业优先 运行时间短
3.HRN最高响应比 响应比=1+ 作业等待时间/作业处理时间
4.HPF基于优先数 优先选择优先数高的作业
5.时间片轮换调度 到时间了没运行完也要释放资源

select poll epoll
Linux网络编程里的
目前流行的高性能web服务器Nginx正式依赖于epoll提供的高效网络套接字轮询服务。

你可能感兴趣的:(2019秋冬,面经,操作系统)