Operation System Review

"Hello World, Hello Blog"

Posted by Leonard Yuan on May 2, 2019

操作系统复习

基本概念复习

操作系统面试题集合

  • 进程是由程序段、数据段、PCB组成。
  • 进程状态切换有如下的状态:
  • 只有就绪态和运行态可以相互切换,其他情况下都是单向的
  • 产生死锁的根本原因是,资源分配不均和资源数量不足,产生死锁的四个必要条件:互斥条件,请求与保持条件,不可抢占条件,环路等待条件。防止死锁的方式就是对后面三种方式进行打破
  • 页式管理的基本原理:
    • 进程的虚拟空间被划分成长度相等的页
    • 内存空间也按页的大小划分成长度相等的页面
    • 采用请求调页或预调技术实现内外存储器的统一管理
  • 进程调度有哪些功能
    • 记录系统中所有进程的执行情况
    • 选择占有处理机的进程
    • 进行进程上下文切换
  • 中断与轮询的方式
    • 计算机系统对I/O设备的管理方式
    • 轮询——效率低,等待时间很长,CPU利用率不高
    • 中断——容易遗漏一些问题,CPU利用率高
  • 什么是临界区,如何解决冲突
    • 每个进程中访问临界资源的那段程序称为临界区,每次只准许一个进程进入临界区,进入后不允许其他进程进入
    • 一次只允许一个进程进入
    • 任何时候,处于临界区内的进程不可多于一个,没进入的进程需要等待
    • 进入临界区的进程要在有限时间内退出,以便其它进程能及时进入自己的临界区
    • 如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象
  • 分段和分页的概念
    • 页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率。分页仅仅是由于系统管理的需要。段是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好的满足用户的需要
    • 页的大小固定而且由系统决定,由系统把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而在系统中只能有一种大小的页面。段的长度不固定,决定于用户所编写的程序
    • 页是单一现行空间,一维的。段访问的时候,即需要知道段的地址,还需要知道段内地址
  • 缓冲区溢出:缓冲区溢出是指当计算机向缓冲区内填充数据时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据
  • 实时系统:是指操作系统工作时,其各种资源可以根据需要随时进行动态分配
  • 线程的优势
    • 创建时间开销远小于进程的创建。因为不需要分配用户空间和那么多初始化动作
    • 销毁线程的成本也远低于进程
    • 线程之间的切换消耗低于进程,特别是同一进程内的线程切换消耗更低
    • 线程间通信的效率比进程间通信要高,因为进城之间安全性问题需要隔离和互斥,同一进程内的线程可以共享进程资源而不需要提前获取锁
  • 线程的类型
    • 用户级线程
    • 内核级线程
  • 死锁的恢复
    • 取消所有的死锁的进程
    • 回滚到死锁前的最后状态
    • 连续取消死锁进程,直到不出现死锁的情况
    • 连续抢占资源直到不出现死锁的情况
  • 分页中的概念:内存被划分成许多等大小的帧,程序被划分成与帧大小相等的若干页
  • 主存与外存的存储管理方式
    • 段式存储管理
    • 页式存储管理
    • 段页式虚拟存储管理:对主存的调入调出是按页面进行的, 但它又可以按段实现共享和保护
  • 在页式管理中:内存被划分成许多等大小的帧,程序被划分成与帧大小相等的若干页。如果在快表中查不到,那就要费一个访主存时间查慢表,从中查到物理页 号送入实存地址寄存器,并用替换算法替换快表中内容
  • cache的管理完全由硬件完成,虚存管理由软件(操作系统)和硬件共同完成
  • 进程的调度算法
    • 先来先服务调度算法FCFS
    • 短作业优先调度算法SJF
    • 优先级调度算法PSA
    • 高响应比优先调度算法HRNN
    • 时间片轮转调度RR
    • 多级反馈队列调度算法:就是优先级会随着时间不断变化
  • 进程间通信的方式
    • 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
    • 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信
    • 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段
    • 消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点
    • 信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生
    • 共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信
    • 套接字( socket ) : 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信
  • 线程同步的方式
    • 临界区
    • 互斥量
    • 信号量
    • 事件