面经笔记本(操作系统篇)
基础篇
进程调度说说吧?讲讲进程调度算法?
进程分为三种基本状态:运行态、就绪态、阻塞态。
运行态是进程拥有了CPU资源和其他所需资源,该进程正在运行。
就绪态是经常已经准备好了其他所需资源,正在等待运行。
阻塞态是进程既没有CPU资源也没有其他所需资源,通常指的是进程需要访问IO设备的时候进入阻塞态。
进程调度算法就是用来调度进程的算法。
分为先进先出算法(FIFO)、短进程优先、时间片轮转。
先进先出算法:就是先来先服务,直到阻塞态才到下个进程运行。
短进程优先:对所有进程按照运行时间排序,然后时间短的优先。
时间片轮转:每个进程都只能运行一段固定的时间,如果改进程没运行完,再放到队尾。
用户态和内核态的概念
当一个进程在执行用户自己的代码时处于用户运行态(用户态),此时特权级最低,为3级,是普通的用户进程运行的特权级,大部分用户直接面对的程序都是运行在用户态。3级状态不能访问0级的地址空间,包括代码和数据;
当一个进程因为系统调用陷入内核代码中执行时处于内核运行态(内核态),此时特权级最高,为0级。执行的内核代码会使用当前进程的内核栈,每个进程都有自己的内核栈。
主存与高速缓存
为了使用高速缓存,主存被划分为若干cache行,通常每行长32或64字节。每次缓存一整个cache行,每次缓存一整行而不是一个字节或一个字,这样的优点是什么?
存储器访问表现出引用局部原则,即如果读取某一个位置,则接下来访问这个位置的概率非常高,增加缓存命中的概率;读取速度快
每个字节的读取直接由 CPU 处理而没有 DMA ,这对于多道程序来说这种组织方式有啥意义?
DMA (Direct Memory Access,直接内存存取) 它允许不同速度的硬件装置来沟通 而不需要依赖于 CPU 的大量中断负载。在多道程序的情况下 CPU 处理读取会占用 CPU 大量的时间造成效率的降低;
什么是陷阱指令?在操作系统中解释它的用途。
陷阱指令将一个处理器的执行模式从用户模式切换到内核模式。该指令允许用户程序调用操作系统内核中的函数。
在分时系统中为什么需要进程表?在只有一个进程存在的个人计算机系统中,该进程控制整个机器直到进程结束,这种机器也需要进程表吗?
进程表是为了存储当前被挂起、甚或是被延迟和阻塞的进程状态。在单一进程的系统中是不需要,因为单一进程从不挂起。