操作系统基础
进程是资源分配的最小单位,线程是CPU调度的最小单位
- 进程的状态
- created(新建),ready(就绪),running(运行),waiting(阻塞),Terminated(终止)
- ps stat的状态
- S 处于休眠状态
- Z 僵尸进程
- s 该进程有子进程
- < 优先级高的进程
- N 优先级较低的进程
- l 多进程的
- 什么是死锁?死锁产生的条件
- 资源互斥
- 占有并等待
- 不可剥夺
- 环路等待
- 孤儿进程
- 父进程退出,而子进程还没退出,会被
pid=1
的init
进程托管
- 父进程退出,而子进程还没退出,会被
- 僵尸进程
- 子进程退出,父进程还未回收子进程的相关资源
- 危害, 会占用进程id(进程id有限, 65535个)
- 解决方案
- 干掉父进程(子进程变成孤儿进程,被init进程托管)
- 父进程调用waitPid
- fork两次,子进程fork完后创建孙进程然后退出,孙进程执行具体的逻辑(这样孙进程就是孤儿进程了)
- 虚拟内存是什么用途,如何实现?
- 首先需要知道物理地址和逻辑地址
- 虚拟内存使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。
- 进程的通信方式有哪些
- 匿名管道(亲缘关系)
- 具名管道
- 消息队列
- 信号量
- 信号
- 共享内存
- socket
- 页面置换算法
- 最佳(所选择的被换出的页面将是最长时间内不再被访问)
- 最近未使用(LRU)
- 最少频率未使用(LFU)
- 先进先出
- 时钟
- 分页和分段有什么区别
- 分页大小相同 页表
- 分段大小不同 段表
- 分页主要用于实现虚拟内存,从而获得更大的地址空间;分段主要是为了使程序和数据可以被划分为逻辑上独立的地址空间并且有助于共享和保护
- 操作系统中进程调度策略有哪几种
- 先来先服务
- 最少执行时间
- 优先级
- 时间片轮转
- 程序从堆中动态分配内存时,虚拟内存上怎么操作的