当前位置:网站首页>操作系统常见面试题目:

操作系统常见面试题目:

2022-04-23 14:08:00 白马非马·

1. 操作系统基础

1.1 什么是操作系统:

定义:管理计算机硬件和软件资源的程序,是计算机的基石
硬件资源:硬件设备的管理
软件资源:内存管理,文件系统管理和应用程序管理。

1.2 什么是系统调用:

根据进程访问资源的特点,进程在系统的运行分为两个状态:
1)用户态:运行的进程能够访问用户程序的数据
2)系统态:进程能够访问所有资源
3)系统调用:在用户态的情况,如何访问系统态的数据?就是通过系统调用,由操作系统进行访问。
4)相互关系:用户态 <----进程调用----> 系统态

2.进程和线程

2.1 进程和线程的区别?

  1. 进程定义:并发执行的程序在执行过程中,资源分配的基本单位。拥有系统资源。
  2. 线程定义:是进程的一个执行单元,处理器独立调度的基本单位。不拥有系统资源。
  3. 进程和线程的区别:
    1)地址空间:进程独享一个;共享本进程地址空间
    2)资源:进程资源是独立的(便于管理和保护};线程共享本进行的资源,不独立。(不利于保护)
    3)健壮性:进程之间不用相互影响;线程之间相互影响耦合
    4)执行过程:进程执行开销大,线程开销小
    5)进程是资源分配的基本单位,线程是独立调度的基本单位。
    6)进程包含多个线程
    7)进程之间是独立的,但是线程之间经常相互耦合。
    8)线程执行开销小,但是不利于资源的管理和保护;进程执行开销大,利于资源的管理和保护

2.2 进程有哪几种状态?

进程的五种状态:

  1. 创建状态: 进程正在被创建,操作系统为进程分配资源,初始化PCB
  2. 就绪状态: CPU : × 其他所需资源:
  3. 运行状态: CPU : 其他所需资源: ×
  4. 阻塞状态: CPU : × 其他所需资源: × 正在等待某一事件而暂停运行/等待IO操作
  5. 结束状态:进程正在从系统中撤销,操作系统会回收进程拥有的资源,撤销PCB

2.3 进程之间状态的状态转换?

  1. 就绪态-> 运行态: 进程被调度
  2. 运行态-> 就绪态:时间片到,或CPU被其他高优先级的进程抢占。
  3. 运行态->阻塞态:等待系统资源分配或等待某事件发生(主动行为)
  4. 阻塞态->就绪态:资源分配到位,等待的事件发生(被动行为)
  5. 创建态-> 就绪态:系统完成创建进程相关的工作
  6. 运行态-> 终止态:进程运行结束,或进程过程中遇到了不可修复的错误

2.4 进程间的通信方式(7种)

  1. 共享内存:多个进程可以互斥访问同一块内存空间。(最有用,通过能过互斥锁和信号量实现同步操作)
  2. 匿名管道(Pipes) :具有亲缘关系的父子进程间或者兄弟进程之间的通信。只存在于内存中的文件。
  3. 有名管道(Names Pipes) :严格遵循先进先出(first in first out),以磁盘文件的方式存在。
  4. 信号(Signal):通知接收进程某个事件已经发生
  5. 信号量(Semaphores:信号量是一个计数器,意图在于进程间同步。
  6. 消息队列:传递结构化消息。消息队列是消息的链表,具有特定的格式,存放在内存中并由消息队列标识符标识。
  7. Sockets:客户端和服务器之间通过网络进行通信。是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。
  8. 消息队列优势明显:
    1)克服了信号承载信息量少
    2)管道只能承载无格式
    3)字节流缓冲区大小受限等缺点。

2.5 进程同步和进程异步的区别?

  1. 进程同步:
    概念:进程的并发执行带来异步性,但是进程有时是有顺序的,通过进程同步解决异步性问题。
  2. 进程同步方法:
    1)软件
    (1)单标志法:公用整形变量记录。两个进程交替进入临界区。一个进程在访问完临界区,会把访问权限给另一个进程。
    (2)双标志先检查:先检查对象状态,再置自己的标志。
    (3)双标志后检查:先置自己的标志,再检查对象状态。双标志法的缺点:可能同时访问和不访问,因为修改和判断不能同时完成。
    (4)皮尔逊算法:单标志和双标志后检查的结合,避免无限等待。
    2)硬件
    (1)TestAndSet使用指令进行原子操作
    中断屏蔽
  3. 进程异步:多个进程不能对临界资源同时进行访问,需要互斥访问,同一时间,有一个访问。

2.6 那线程间的同步的方式有哪些呢?

  1. 为什么需要线程间的同步?
    因为线程间共享本进程的资源,如果多个线程并发执行,需要避免关键共享资源变量的使用冲突。

  2. 如何进行线程同步:
    1)临界区:在任意时刻只允许一个线程对共享资源变量进行访问, 如果有多个线程试图访问公共资源,后来者会被挂起。
    2)互斥量(Mutex):采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。(互斥对象只有一个)。例子:比如 Java 中的 synchronized 关键词和各种 Lock 都是这种机制。锁是其互斥对象。
    3)信号量(Semphares):允许同一时刻多个线程访问同一资源,控制同一时刻访问此资源的最大线程数量。
    4)事件(Event):通过通知操作来保持多线程同步。

2.7 操作系统中进程的调度算法有哪些吗?

  1. 先到先服务(FCFS)调度算法(对短进程不友好) :
    先来的先服务,直到运行结束或者被阻塞,和银行派对一样。

  2. 短作业优先(SJF)的调度算法 (照顾短进程,忽略长进程,会饥饿):
    从就绪队列中选出一个估计运行时间最短的进程为之分配资源,直到运行结束或者被阻塞。

  3. 最高响应比优先:
    响应比=响应时间/服务时间

  4. 优先级调度 :
    根据进程的优先级进行调度,直到调度完。

  5. 时间片轮转调度算法 :
    每个进程都运行时间片的时间,进行遍历执行。

  6. 多级反馈队列调度算法 :
    公认最好调度算法:既能使高优先级作业得到响应,又能使短作业迅速完成。
    多级优先对列,高优先级低时间片,然后先处理高优先级消耗完时间片,然后处理次优先级时间片。

2.8 什么是死锁?

  1. 死锁是描述如下一种情况:
    各进程相互等待对手的资源,导致进程堵塞,无法前进。
    对不可剥夺资源的分配不合理,可能导致死锁。
  2. 死锁,饥饿和死循环的区别是是什么?
    1)死锁:至少两个进程同时被阻塞 —操作系统解决
    2)饥饿:只能是一个进程被阻塞 -----操作系统解决
    3)死循环:可能只有一个。 ------出现bug,程序员解决
  3. 死锁产生的必要条件:
    1)互斥:资源必须处于非共享状态,一次只能一个进程使用。
    2)非抢占:资源不能够被抢占
    3)占有并等待:进程至少占有一个资源,并等待另一个资源
    4)循环等待:资源等待形成闭环
    5)四个条件同时满足,才能够出现死锁。

2.9 如何解决死锁问题?

解决死锁问题的四种方法:

  1. 预防:不允许死锁发生;静态:预防死锁;破坏死锁产生的四个必要条件
  2. 避免:不允许死锁发生;动态:避免死锁;避免系统进入不安全状态(银行家算法)
  3. 检测:允许死锁发生;死锁发生时,精确检测到与死锁发生的位置和相关资源
  4. 解除:允许死锁发生;与检测相互配合,将进程从死锁中释放出来
  1. 预防是避免四大条件发生,避免是利用四大条件,找出最合理的;
  2. 预防和避免是死锁不会发生;检测和解除是死锁发生后的操作。
  3. 避免中的银行家算法:通过试探分配进程的资源,通过安全性算法判断分配后系统是否处于安全状态。

3. 操作系统内存管理基础

3.1 操作系统的内存管理主要是做什么?

主要是完成内存的分配与回收地址的转换;内存空间的扩充存储保护

  1. 内存的分配,回收:malloc函数,申请内存;free函数,释放内存
  2. 地址转换:逻辑地址转变为物理地址。
  3. 内存空间的扩充:虚拟存储技术或者自动覆盖技术
  4. 存储保护:各道作业在各自存储空间运行,互不干扰。

3.2 常见的内存管理机制

内存管理分为两个大类,四个小类:
1)连续分配管理方案:单一连续,固定分区和动态分区
2)非连续分配管理方案:基本分页管理;基本分段管理和段页式管理;

  1. 块管理:将内存分为固定的块,进程/作业连续存储;
  2. 基本分页管理:把内存分为若干块,进程也分为对应大小的块。提高内存利用率;页表对逻辑地址和物理地址
  3. 基本分段管理:分页管理,每一页没有具体意义,分段管理赋予每一段具体意义(主程序段,子程序段等),通过段表对应逻辑地址与物理地址。
  4. 基本段页管理:把主存先分段,再分页,结合两者的优点

3.3 什么是快表和多级页表?

3.4 分页机制和分段机制的共同点和区别?

3.5 逻辑(虚拟)地址和物理地址的区别?

3.6 CPU 寻址了解吗?为什么需要虚拟地址空间?

4. 虚拟内存

4.1 什么是虚拟内存?

4.2 什么是局部性原理

4.3 什么是虚拟存储器

4.4 虚拟内存的实现技术

4.5 页面置换算法

版权声明
本文为[白马非马·]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_42974034/article/details/124258387