操作系统八股文面经总结(含答案)

1 简述什么是进程?

进程是系统进行资源分配和调度的基本单位,进程本质上是运行中的程序是动态的,需要将进程运行的当前状态,所需资源等信息保存到进程控制块中,操作系统为了管理进程设计的数据结构叫进程控制块,里面存的字段可以分成进程标识符、处理机状态、进程调度信息、进程控制信息。

2 进程状态模型 —简述阻塞、非阻塞、同步、异步—简述为什么发送阻塞?

五状态模型:创建、就绪、终止、阻塞。运行

就绪状态:其他资源都准备好了,只差CPU资源的状态,只要在获得CPU使用权就可以随时被调度执行。

创建状态:创建进程是拥有PCB(进程控制块)但其他资源没有就绪为创建状态

先分配PCB(进程控制块)然后插入就绪队列。操作系统提供fork函数接口创建进程

终止状态:进程结束有系统清理或者归还PCB的状态为终止状态。

阻塞状态:进程因为某种原因(其他设备没有就绪包括磁盘、网卡等)无法继续执行而放弃cpu的使用权,把cpu资源让给其他进程。

图片

进程从就绪状态进行进程调度,分配cpu资源,然后到运行状态,当时间片用完之后进入就绪状态,而在运行状态时因为某些资源没有就绪比如IO请求包括网络IO、磁盘IO、都可能从运行状态切换到阻塞状态,当IO请求完成了进程从阻塞状态切换就绪状态。

阻塞、非阻塞、同步、异步。

阻塞状态(同步):阻塞的话典型的就是IO过程,从调用到返回会经历一段时间。因为比如外围设备包括磁盘。网卡等,在读写数据没有CPU快,所以通常读取数据的时候会经历一段时间,这段时间就是属于阻塞状态。在调用结果返回之前,当前进程会被挂起,只有得到结果才会返回。

同步:进程因为在这段时间并没有干其他事情,而是同步的等待数据返回

非阻塞状态(异步):并没有一直等待数据的返回,而是其他的工作,等到比如IO完成了会通知已经完成,进程再去返回IO任务去读取数据。

异步:进程在IO之后没有进行同步等待,去干其他事情,并且等待IO这个过程准备好之后进行通知,进程接收到通知ready之后再切换回去读取数据。当一个异步的调用发出之后,调用并不会得到结果而是,被调用者通过状态或者通知,来通知进程获取结果。

总结:同步异步抢到消息通讯机制,阻塞非阻塞抢到进程在等待调用结果的状态。

3 PBC是什么?(进程控制块)

PCB是进程控制块。

PCB是进程的唯一标识,操作系统调度进程时就是根据每个进程PCB中的信息进行调度的,当决定执行 某个进程后,会根据该进程PCB中保存的信息去恢复上次执行的现场,当分配到的CPU时间片用完 后,需要将当前状态保存到PCB中,以便下次恢复。

PCB组织方式:通过链表的方式组织成一个个队列,拥有相同状态的进程组成一个队列。比如就绪进程就会组成就绪队列、因为某些事件而阻塞的进程组成阻塞队列。也可以将相同状态的PCB按照其他策略排成多个链表

PCB包含进程的属性和状态信息:

  • 进程标识符(进程ID)

  • CPU状态信息(寄存器、PC)

  • 进程调度信息(进程状态、进程优先级、进程已等待时间等)

  • 进程控制信息(页表地址)

4 线程——介绍进程、线程、协程

线程:

线程是任务调度和执行的基本单位。CPU上真正运行的是线程,但线程本身几乎不拥有资源,线程自己只拥有一点运行时必不可少的资源,如PC、寄存器和栈,但线程可以和同一进程下的其他线程共享进程资源。

进程:

进程是系统进行资源分配和调度的基本单位,

进程本质上是“运行中的程序”,单纯的程序只是保存在磁盘中的一段代码,是静态的,而进程是运行中的代码,是动态的,除了需要保存这段代码外,还需要将进程运行的当前状态,所需资源等信息保存到进程控制块中,操作系统为了管理进程设计的数据结构叫进程控制块,里面存的字段可以分成进程标识符、处理机状态(进程当前运行到什么时候什么状态的一些信息)、进程调度信息、进程控制信息。所以进程由3部分组成:程序段、数据段和进程控制块。

**协程:**比线程更加轻量级,协程不被操作系统内核所管理,完全是用户态的

5 进程与线程区别

  • 一个进程包含多个线程,一个线程只能属于一个进程

  • 创建和销毁线程的速度快,因为创建线程不需要单独分配资源了。

  • 线程间切换的速度较快,只需要保存和恢复寄存器内容即可,而进程切换就需要保存当前CPU状态到PCB中,然后 将下一个进程的状态进行恢复。

  • 由于线程间共享进程的内存和文件,所以线程间通信不需要其他复杂的机制,也不需要涉及内核,既简便又快速

  • 进程的健壮性更强,一个线程挂掉会导致整个进程挂掉,但一个进程挂掉不会导致其他进程挂掉。

  • 进程是系统进行资源分配和调度的基本单位,线程是任务调度和执行的基本单位。

6 进程和线程的切换流程

进程切换流程:进程之间的虚拟地址空间是不同的,所以要先切换页表,清空快表缓存。切换内核栈和硬件上下文

进程上下文:当一个进程在执行时,CPU的所有寄存器中的值、进程的状态以及堆栈中的内容被称为该进程的上下文

线程切换流程:线程之间共享进程的虚拟地址空间,所以线程切换不需要切换页表 直接切换内核栈和硬件上下文即可

7 并发和并行的区别?

并发和并行在一个时间段内的表现都是多个进程得到了运行。

  • 并发在任意一个时刻下,只有一个进程在运行;

  • 并行在任意一个时刻下,有多个进程在同时运行。

8 进程调度策略

非抢占式:进程获得CPU资源后,一直运行直到进程结束或阻塞才释放CPU使用权。

  • 优点:简单、上下文切换开销小

  • 缺点:紧急任务不能马上执行、后到的短进程需要等待长进程完成,导致短进程周转时间变长

抢占式:操作系统可以在进程执行时剥夺CPU,分配给其他进程使用。典型的有:优先级原则、短进程优先原则、时间片原则

进程调度算法:

  • 短作业优先:抢占式、难以准确预测进程执行时间

  • 优先级调度 - 最常用:抢占式、分为静态优先级和动态优先级,动态优先级系统开销较大,静态优先级是在进程创建时就决定的

  • 时间片轮转 - 分时系统 :抢占式、为每个执行进程设置时间片,时间片用完则交出CPU

  • 先进先出算法 - FIFO:非抢占式、容易造成短进程等待时间变长

  • 最高响应比优先:非抢占式、对短进程有利,长进程由于等待时间变长会提高响应比,不至于让长进程饿死

  • 前后台调度 :前台执行分时程序,用时间片轮转调度;后台执行批处理程序,用FIFO调度。只有当前台没有程序 时,CPU才交给后台使用。

  • 多级反馈队列轮转算法:将就绪队列分成多个优先级不同的队列。刚创建和进程 和 因IO未用完时间片的进程排在最高优先级队列,2-3个时间片还未执行完的进程放入 较低优先级队列,只有优先级更高的队列为空时才会调度当前队列。

9 僵尸进程 孤儿进程 守护进程

  • 孤儿进程:子进程的父进程退出,子进程被ID号为1的inti进程收养,作为子进程的父进程.然后init进程会执行wait或waitpid操作,去释放孤儿进程的资源. 危害

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值