我是靠谱客的博主 优雅吐司,最近开发中收集的这篇文章主要介绍操作系统知识总结与常见面试题(持续更新),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

操作系统常见面试题

参考来源:
知乎@Joe.Zhao
CSDN@易阳
CSDN@JXH_123

1. 什么是进程?

(比较典型的定义)
(1)进程是程序的一次执行
(2)进程是一个程序及其数据在处理机上顺序执行时发生的活动
(3)进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

2. 进程之间的状态和状态转换有哪些?

  • 就绪:进程已处于准备好运行的状态,即进程已分配到除CPU外的所有必要资源后,只要再获得CPU,便可立即执行
  • 执行:进程已经获得CPU,程序正在执行状态
  • 阻塞:正在执行的进程由于发生某事件(如I/O请求、申请缓冲区失败等)暂时无法继续执行的状态

3. 进程同步与互斥之间的区别?

互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。

同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。

简单地说:同步体现的是一种协作性,互斥体现的是一种排他性。

4. 进程之间的通信方式有哪些?

(1) 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。

(2)有名管道 (named pipe) :有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。

(3)信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。

(4) 消息队列( message queue ) :消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

(5)信号 ( sinal ) :信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

(6)共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。

(7)套接字( socket ) :套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。

5. 进程的调度?

1.调度种类

  • 高级调度(High-Level Scheduling)
    又称为作业调度,它决定把后备作业调入内存运行

  • 低级调度(Low-Level Scheduling)
    又称为进程调度,它决定把就绪队列的某进程获得CPU

  • 中级调度(Intermediate-Level Scheduling)
    又称为在虚拟存储器中引入,在内、外存对换区进行进程对换

2.非抢占式调度与抢占式调度

  • 非抢占式
    分派程序一旦把处理机分配给某进程后便让它一直运行下去,直到进程完成或发生进程调度进程调度某事件而阻塞时,才把处理机分配给另一个进程

  • 抢占式
    操作系统将正在运行的进程强行暂停,由调度程序将CPU分配给其他就绪进程的调度方式

3.调度算法

  • FIFO或First Come, First Served (FCFS)先来先服务

    调度的顺序就是任务到达就绪队列的顺序
    公平、简单(FIFO队列)、非抢占、不适合交互式
    未考虑任务特性,平均等待时间可以缩短

  • Shortest Job First (SJF)最短的作业(CPU区间长度最小)最先调度

    • SJF可以保证最小的平均等待时间

    • Shortest Remaining Job First (SRJF)SJF的可抢占版本,比SJF更有优势

    • SJF(SRJF): 如何知道下一CPU区间大小?根据历史进行预测: 指数平均法 优先权调度

      每个任务关联一个优先权,调度优先权最高的任务
      注意:优先权太低的任务一直就绪,得不到运行,出现“饥饿”现象

  • Round-Robin(RR)轮转调度算法

    设置一个时间片,按时间片来轮转调度(“轮叫”算法)
    优点: 定时有响应,等待时间较短;缺点: 上下文切换次数较多
    时间片太大,响应时间太长;吞吐量变小,周转时间变长;当时间片过长时,退化为FCFS

  • 多级队列调度

    按照一定的规则建立多个进程队列
    不同的队列有固定的优先级(高优先级有抢占权)
    不同的队列可以给不同的时间片和采用不同的调度方法
    存在问题1:没法区分I/O bound和CPU bound
    存在问题2:也存在一定程度的“饥饿”现象

  • 多级反馈队列

    在多级队列的基础上,任务可以在队列之间移动,更细致的区分任务
    可以根据“享用”CPU时间多少来移动队列,阻止“饥饿”
    最通用的调度算法,多数OS都使用该方法或其变形,如UNIX、Windows等

6. 什么是线程?

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。

7. 进程与线程之间的区别?

(1) 粒度性分析:线程的粒度小于进程。

(2) 调度性分析:进程是资源拥有的基本单位,线程是独立调度与独 立运行的基本单位,出了寄存器,程序计数器等必要的资源外基本不拥有其他资源。

(3) 系统开销分析:由于线程基本不拥有系统资源,所以在进行切换时,线程切换的开销远远小于进程。

8.什么是大小端

9.分页分段和段页的区别

10.进程切换的开销

https://blog.csdn.net/L13763338360/article/details/104961469

最后

以上就是优雅吐司为你收集整理的操作系统知识总结与常见面试题(持续更新)的全部内容,希望文章能够帮你解决操作系统知识总结与常见面试题(持续更新)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(76)

评论列表共有 0 条评论

立即
投稿
返回
顶部