操作系统复试面试题

操作系统复试面试题

记录一下操作系统的面试题

什么是操作系统

操作系统的本质是一个运行在计算机上的软件程序,用于管理计算机硬件和软件资源
通常情况下,计算机上会运行着许多应用程序,他们都需要对内存和CPU进行交互,操作系统的目的就是保证这些访问和交互能够准确无误的进行。

操作系统的分类

单体系统:整个操作系统是以程序集合来编写的,链接在一块形成一个二进制可执行程序

分层系统:每一层都适用下面的层来执行其功能

微内核:微内核架构的内核只保留最基本的能力,把一些应用放到了用户空间

客服-服务器:服务器用来提供服务,客户端用来使用服务

什么是内核

只有内核程序可以访问的内存空间,我门称之为内核。一些应用需要调用IO,调用io的时候就需要cup从用户态转到内核态,然后将对应的数据拷贝到进程。

内核分为:微内核、宏内核、混合类型内核

微内核:微内核架构的内核只保留最基本的能力,把一些应用放到了用户空间

宏内核:宏内核的特征是系统内核的所有模块都运行在内核态。

混合类型内核:内核里面会有一个最小版本的内核,然后其他模块会在这个基础上搭建,宏内核的方式包裹着一个微内核。

什么是系统调用

我们运行的用户程序中,凡是系统态级别的资源有关的操作,都必须通过系统调用的方式想操作系统提出服务请求,并由操作系统代为完成。

RAM和ROM的区别

RAM为随机存储,掉电不会保存数据,而ROM可以在掉电的情况下,依然保存原有的数据

什么是进程和进程表

进程就是正在执行程序的实例

为了跟踪每个进程的活动状态,维护了一个进程表。进程表里面大概有三个地方:进程管理、存储管理、文件管理

什么是线程,线程和进程的区别

一个进程里面可以有多个线程,多个线程共享进程的堆和方法区。但是每个县城有自己的程序计数器、虚拟机栈和本地方法栈。

进程是资源分配的最小单位,线程是cpu调度的最小单位。

进程在用户态和内核态的区别

内核在创建进程的时候,会为进程创建相应的堆栈
当进程在用户空间运行时,使用用户栈。
当进程在内核空间时,使用内核栈。

发生系统调用的时候,用户态的程序发起系统调用,用户态程序权限不足,因此会中断执行,发生中断后,当前cpu执行的程序会中断,跳转到中断处理程序。内核程序开始执行,也就是开始处理系统调用。内核处理完成后,这样会再次发生中断,切换会用户态工作。

用户态切换到内核态的3种方式:系统调用、异常、外围设备的中断

进程有哪几种状态

创建状态:进程正在被创建,尚未到就绪状态
就绪状态:进程已经处于准备运行状态,即进程获得了除了处理器之外的一切所需资源,一旦得到处理器资源即可运行。
运行状态:进程正在处理器上运行
阻塞状态:又称为等待状态,进程正在等待某一事件而暂停运行
结束状态:进程正在从系统中消失

进程间的通讯方式

大概有八中常见的通信方式

1.匿名管道:半双工,数据只能单项流动,只能在父子进程之间使用

2.高级管道通信:将另一个程序当做一个新的进程在当前程序进程中启动,算作当前进程的子进程

3.有名管道通信:半双工,但是允许无亲缘的进程之间同信

4.消息队列通信:

5.信号量通信:

6.信号:用于通知接收进程某个事件已经发生

7.共享内存通信:如题

8.套接字通信: 一种约定

进程的调度算法

先到服务调度算法(选择最先进入队列的进程)
短作业优先度调度算法,选择时间最短的进程
时间片轮转调度算法,每个进程分配一个 时间段
多级反馈队列调度算法,
优先级调度

死锁

两个线程由于资源的竞争造成的阻塞现象

出现死锁的四个条件:
互斥:资源必须处于非共享状态
占有并等待:一个进程至少应该占有一个资源,并等待另一资源
循环等待:有一组等待进程,P0等待的资源被P1占有,p1等待的资源被p2占有


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。后续可能会有评论区,不过也可以在github联系我。