计算机专业保研面试备考:操作系统

保研路 专栏收录该内容
16 篇文章 11 订阅

本文总结了计算机专业保研面试中较为常考的操作系统题目,也是博主当年的备考材料。如果这篇文章对你有帮助,请给博主点个赞鼓励一下吧。

  • 进程与线程
    • 进程是具有一定功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源调度和分配的基本单位,实现了操作系统的并发。
    • 线程是进程的实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,实现进程内部的并发。
    • 一个进程可以有多个线程,多个线程可以并发执行,线程依赖于进程而存在。
    • 进程在执行过程中拥有独立的内存单元,而多个线程共享进程的内存。 
  • 同步与异步
    • 同步和异步关注的是消息通信机制
    • 同步,就是调用某个东西时,调用方得等待这个调用返回结果才能继续往后执行。
    • 异步,和同步相反, 调用方不会等待得到结果,而是在调用发出后调用者可用继续执行后续操作。当一个异步过程调用发出后,调用者不会立刻得到结果,而是在"调用"发出后,"被调用者"通过状态、通知来通知调用者,或通过回调函数处理这个调用。
  • 阻塞与非阻塞
    • 阻塞和非阻塞强调的是程序在等待调用结果(消息,返回值)时的状态。
    • 阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。
    • 非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。 对于同步调用来说,很多时候当前线程还是激活的状态,只是从逻辑上当前函数没有返回而已,即同步等待时什么都不干,白白占用着资源。
  • 线程同步的方式
    • 互斥量:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。
    • 信号量:它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量。
    • 事件(信号):通过通知操作的方式来保持多线程同步,还可以方便的实现多线程优先级的比较操作。
  • 什么是缓冲区溢出?有什么危害?其原因是什么?
    • 缓冲区溢出是指当前计算机向缓冲区填充数据时超出了缓冲区本身的容量,溢出的数据覆盖在合法数据上。
    • 危害有以下两点:
      • 程序崩溃,导致拒绝服务;
      • 跳转并执行一段恶意代码(缓冲区溢出攻击)。
    • 造成缓冲区溢出的主要原因是程序中没有仔细检查用户输入。
  • 什么是死锁?死锁产生的条件是什么?
    • 在两个或多个并发进程中,如果每个进程持有某种资源而又等待其他进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。通俗的讲就是两个或多个进程无限期的阻塞、相互等待的一种状态。
    • 死锁产生需要四个条件(有一个条件不成立,则不会产生死锁):
      • 互斥:一个资源只能被一个进程使用。
      • 占有并等待:一个进程因请求资源而阻塞时,对已获得资源保持不放。
      • 非抢占:进程获得的资源,在未完全使用之前,不能强行剥夺。
      • 循环等待:若干进程之间形成一种头尾相接的环形等待资源关系。
  • 进程有哪几种状态?
    • 就绪状态:进程已获得除处理机以外的所需资源,等待分配处理机资源。
    • 运行状态:占用处理机资源运行,处于此状态的进程数小于等于CPU数。
    • 阻塞状态:进程等待某种条件,在条件满足之前无法执行。
  • 分页和分段有什么区别?
    • 段是信息的逻辑单位,它是根据用户的需求划分的,因此段是对用户可见的;页是信息的物理单位,是为了管理主存的方便而划分的,对用户是透明的。
    • 段的大小不固定,由它所完成的功能决定;页的大小固定,由系统决定。
    • 段向用户提供的是二维地址空间;页向用户提供的是一维地址空间。
    • 段是信息的逻辑单位,便于存储保护和信息的共享,页的保护和共享受到限制。
  • 操作系统中进程(作业)调度策略
    • FCFS(先来先服务)
    • SJF(最短作业优先)
    • 优先级算法
      • 按是否抢占:抢占、非抢占
      • 按优先级是否可变:动态、静态
    • RR(时间片轮转)
    • 多级反馈
      • 设置多个就绪队列,每个队列的优先级不同
    • 彩票调度
  • 页面置换算法
    • 最佳(OPT)置换算法
      • 选择以后不会被使用或最长时间内不再被访问的页面换出,以保证最低的缺页率
      • 由于是对未来的预测,该算法无法实现,但OPT常被用于评价其他算法
    • 先进先出(FIFO)页面置换算法
      • 可能会有Belady现象:采用FIFO算法时,如果对一个进程未分配它所要求的全部页面,有时就会出现分配的页面数增多但缺页率反而提高的异常现象。
    • 最近最久未使用(LRU)置换算法
    • 时钟(CLOCK)置换算法
  • 磁盘调度算法
    • 先来先服务(FCFS)
    • 最短寻道时间优先(SSTF)
    • 扫描算法(电梯算法,SCAN)
    • 循环扫描算法(C-SCAN)
      • 在SCAN算法的基础上规定磁头单向移动提供服务,回返时直接快速移动到起始端
    • LOOK
      • 在SCAN基础上,磁头移动只需要达到最远端的一个请求即可返回,不需要达到磁盘端点
    • C-LOOK
      • 在C-SCAN基础上,磁头移动只需要达到最远端的一个请求即可返回,不需要达到磁盘端点
  • 死锁的处理基本策略和常用方法
    • 通过协议来预防或避免死锁,确保系统不会进入死锁状态。
    • 可以允许系统进入死锁状态,然后检测它,并加以恢复。
    • 可以忽视这个问题,认为死锁不可能在系统内发生。
  • 进程之间的通信方式
    • 管道(pipe)及命名管道(named pipe):管道可用于具有亲缘关系的父子进程间的通信,命名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;
    • 信号(signal):信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生;
    • 消息队列:消息队列是消息的链接表,它克服了上两种通信方式中信号量有限的缺点,具有写权限得进程可以按照一定得规则向消息队列中添加新信息;对消息队列有读权限得进程则可以从消息队列中读取信息;
    • 共享内存:可以说这是最有用的进程间通信方式。它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据得更新。这种方式需要依靠某种同步操作,如互斥锁和信号量等;
    • 信号量:主要作为进程之间及同一种进程的不同线程之间得同步和互斥手段;
    • 套接字:这是一种更为一般得进程间通信机制,它可用于网络中不同机器之间的进程间通信,应用非常广泛。
  • CPU的字节序
    • 小端字节序:低字节存于内存低地址;高字节存于内存高地址;
    • 大端字节序:高字节存于内存低地址;低字节存于内存高地址;
  • CPU结构
  • 银行家算法:避免死锁
  • 5
    点赞
  • 1
    评论
  • 27
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页

打赏作者

乔卿

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值