操作系统复试面试题
记录一下操作系统的面试题
什么是操作系统
操作系统的本质是一个运行在计算机上的软件程序,用于管理计算机硬件和软件资源
通常情况下,计算机上会运行着许多应用程序,他们都需要对内存和CPU进行交互,操作系统的目的就是保证这些访问和交互能够准确无误的进行。
操作系统的分类
单体系统:整个操作系统是以程序集合来编写的,链接在一块形成一个二进制可执行程序
分层系统:每一层都适用下面的层来执行其功能
微内核:微内核架构的内核只保留最基本的能力,把一些应用放到了用户空间
客服-服务器:服务器用来提供服务,客户端用来使用服务
什么是内核
只有内核程序可以访问的内存空间,我门称之为内核。一些应用需要调用IO,调用io的时候就需要cup从用户态转到内核态,然后将对应的数据拷贝到进程。
内核分为:微内核、宏内核、混合类型内核
微内核:微内核架构的内核只保留最基本的能力,把一些应用放到了用户空间
宏内核:宏内核的特征是系统内核的所有模块都运行在内核态。
混合类型内核:内核里面会有一个最小版本的内核,然后其他模块会在这个基础上搭建,宏内核的方式包裹着一个微内核。
什么是系统调用
我们运行的用户程序中,凡是系统态级别的资源有关的操作,都必须通过系统调用的方式想操作系统提出服务请求,并由操作系统代为完成。
RAM和ROM的区别
RAM为随机存储,掉电不会保存数据,而ROM可以在掉电的情况下,依然保存原有的数据
什么是进程和进程表
进程就是正在执行程序的实例
为了跟踪每个进程的活动状态,维护了一个进程表。进程表里面大概有三个地方:进程管理、存储管理、文件管理
什么是线程,线程和进程的区别
一个进程里面可以有多个线程,多个线程共享进程的堆和方法区。但是每个县城有自己的程序计数器、虚拟机栈和本地方法栈。
进程是资源分配的最小单位,线程是cpu调度的最小单位。
进程在用户态和内核态的区别
内核在创建进程的时候,会为进程创建相应的堆栈
当进程在用户空间运行时,使用用户栈。
当进程在内核空间时,使用内核栈。
发生系统调用的时候,用户态的程序发起系统调用,用户态程序权限不足,因此会中断执行,发生中断后,当前cpu执行的程序会中断,跳转到中断处理程序。内核程序开始执行,也就是开始处理系统调用。内核处理完成后,这样会再次发生中断,切换会用户态工作。
用户态切换到内核态的3种方式:系统调用、异常、外围设备的中断
进程有哪几种状态
创建状态:进程正在被创建,尚未到就绪状态
就绪状态:进程已经处于准备运行状态,即进程获得了除了处理器之外的一切所需资源,一旦得到处理器资源即可运行。
运行状态:进程正在处理器上运行
阻塞状态:又称为等待状态,进程正在等待某一事件而暂停运行
结束状态:进程正在从系统中消失
进程间的通讯方式
大概有八中常见的通信方式
1.匿名管道:半双工,数据只能单项流动,只能在父子进程之间使用
2.高级管道通信:将另一个程序当做一个新的进程在当前程序进程中启动,算作当前进程的子进程
3.有名管道通信:半双工,但是允许无亲缘的进程之间同信
4.消息队列通信:
5.信号量通信:
6.信号:用于通知接收进程某个事件已经发生
7.共享内存通信:如题
8.套接字通信: 一种约定
进程的调度算法
先到服务调度算法(选择最先进入队列的进程)
短作业优先度调度算法,选择时间最短的进程
时间片轮转调度算法,每个进程分配一个 时间段
多级反馈队列调度算法,
优先级调度
死锁
两个线程由于资源的竞争造成的阻塞现象
出现死锁的四个条件:
互斥:资源必须处于非共享状态
占有并等待:一个进程至少应该占有一个资源,并等待另一资源
循环等待:有一组等待进程,P0等待的资源被P1占有,p1等待的资源被p2占有
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。后续可能会有评论区,不过也可以在github联系我。