21天网站建设实录pdf,上海互联网seo公司,抖音广告推广,怎么做网站聊天视频直播目录
一、相关面试题
1. 进程的调度算法有哪些#xff1f;
调度原则
#xff08;1#xff09;先来先服务调度算法
#xff08;2#xff09;最短作业优先调度算法
#xff08;3#xff09;高响应比优先调度算法
#xff08;4#xff09;时间片轮转调度算法 调度原则
1先来先服务调度算法
2最短作业优先调度算法
3高响应比优先调度算法
4时间片轮转调度算法
5最高优先级调度算法
6多级反馈队列调度算法
2. 说一说僵尸进程和孤儿进程
1孤儿进程
2僵尸进程
二、其他问题
1. 什么是中断和异常它们有什么区别
1中断
2异常
3区别综述
2. 用户态和核心态
1用户态和内核态的区别
2在什么场景下会发生内核态和用户态的切换 一、相关面试题
1. 进程的调度算法有哪些 一旦 操作系统 把进程 切换到 运行状态也就意味着该 进程 占用着 CPU 在执行但是当操作系统把进程 切换 到其他状态时那就不能在 CPU 中执行了于是 操作系统会 选择 下一个 要运行的 进程。选择一个 进程运行 这一功能是在 操作系统 中完成的通常称为调度程序scheduler。 在进程的生命周期中当进程从一个运行状态到另外一状态变化的时候都会触发一次调度。如 从就绪态 - 运行态当进程被 创建时会进入到 就绪队列操作系统会 从就绪队列 选择一个进程 运行从运行态 - 阻塞态当进程发生 I/O 事件 而阻塞时操作系统 必须选择 另外一个 进程运行从运行态 - 结束态当进程 退出结束后操作系统得从 就绪队列 选择另外一个 进程运行 如果 硬件时钟 提供 某个频率的 周期性中断那么 可以 根据 如何处理 时钟中断把调 度算法 分为两类
非抢占式调度算法挑选一个进程然后 让该进程 运行 直到被阻塞或者 直到 该进程 退出才会 调用 另外一个 进程也就是说 不会理时钟中断 这个事情。抢占式调度算法挑选一个进程然后 让该进程 只运行 某段时间如果 在该时段结束时该进程 仍然在 运行时则会把它 挂起接着 调度程序 从就绪队列 挑选另外一个 进程。这种 抢占式调度处理需要 在时间间隔的 末端 发生时钟中断以便 把 CPU 控制 返回给 调度程序 进行调度也就是常说的 时间片机制。 调度原则 CPU 利用率调度程序应 确保 CPU 是 始终匆忙的 状态这可提高 CPU 的 利用率系统吞吐量吞吐量 表示的是 单位时间内 CPU 完成 进程的数量长作业的 进程会 占用 较长的 CPU 资源因此会 降低 吞吐量相反短作业的 进程会 提升 系统吞吐量周转时间周转时间是 进程运行阻塞时间等待时间的 总和一个进程的 周转时间 越小越好等待时间这个 等待时间 不是阻塞状态的 时间而是 进程 处于 就绪队列的 时间等待的 时间越长用户 越不满意响应时间用户 提交请求 到系统 第一次 产生响应 所花费的 时间在 交互式 系统中响应时间是 衡量 调度算法 好坏 的主要标准。 1先来先服务调度算法 非抢占式的 先来先服务First Come First Serve, FCFS算法。 每次 从 就绪队列 选择 最先进入队列 的进程然后 一直运行直到 进程退出 或被 阻塞才会继续 从队列中 选择 第一个 进程 接着运行。 当一个 长作业 先运行了那么 后面的 短作业 等待的时间 就会很长不利于 短作业。FCFS 对长作业有利适用于 CPU 繁忙型 作业的 系统而 不适用于 I/O 繁忙型作业的系统。 2最短作业优先调度算法 最短作业优先Shortest Job First, SJF调度算法会 优先选择 运行时间最短 的 进程来运行这有助于 提高系统的 吞吐量。 这显然对长作业不利很容易造成一种极端现象。 比如一个 长作业 在就绪队列 等待运行而这个 就绪队列有 非常多的短作业那么就会 使得 长作业 不断的 往后推周转时间变长致使 长作业 长期不会被运行。 3高响应比优先调度算法 上述「先来先服务调度算法」和「最短作业优先调度算法」都没有很好的 权衡 短作业和长作业。 高响应比优先Highest Response Ratio Next, HRRN调度算法 主要是 权衡了 短作业和长作业。每次 进行 进程调度时先计算「响应比优先级」然后把「响应比优先级」最高的 进程 投入运行「响应比优先级」的计算公式 从上面的公式可以发现 如果两个进程的「等待时间」相同时「要求的服务时间」越短「响应比」就越高这样 短作业的进程 容易 被选中运行如果 两个进程「要求的服务时间」相同时「等待时间」越长「响应比」就越高这就 兼顾 到了长作业 进程因为 进程的响应比 可以 随时间等待的增加 而提高当其 等待时间 足够长时其 响应比 便可以 升到很高从而 获得运行 的机会 4时间片轮转调度算法 最古老、最简单、最公平且 使用最广的算法 就是 时间片轮转Round Robin, RR调度算法。 每个进程被分配一个时间段称为 时间片Quantum即 允许 该进程在 该时间段中 运行。 如果 时间片 用完进程 还在运行那么 将会 把此进程从 CPU 释放出来并把 CPU 分配给另外一个进程如果 该进程在时间片 结束前 阻塞或结束则 CPU 立即 进行切换 关于 时间片的长度 如果时间片设得太短会导致过多的进程上下文切换降低了 CPU 效率如果设得太长又可能引起对短作业进程的响应时间变长。 一般来说时间片设为 20ms~50ms 通常是一个比较合理的折中值。 5最高优先级调度算法 「时间片轮转算法」做了个假设即 让所有的 进程 同等重要运行时间都一样。但是对于多用户 计算机系统 希望调度 是有优先级的即 希望调度程序 能 从就绪队列中 选择 最高优先级的 进程进行运行这称为 最高优先级Highest Priority First, HPF调度算法。 进程的优先级可以分为静态优先级和动态优先级 静态优先级创建进程时候就已经确定了优先级了然后 整个运行时间 优先级 都不会变化动态优先级根据 进程的 动态变化 调整优先级比如 如果进程 运行 时间增加则 降低其 优先级如果 进程 等待时间就绪队列的 等待时间增加则升高其 优先级也就是 随着时间的 推移 增加 等待进程的 优先级。 该算法也有 两种 处理优先级高的 方法非抢占式和抢占式 非抢占式当 就绪队列中 出现优先级高的 进程运行完 当前进程再 选择优先级高的 进程。抢占式当 就绪队列中 出现 优先级高的 进程当前进程 挂起调度 优先级高 的 进程运行。但是 依然有 缺点可能会导致 低优先级的 进程永远不会运行。 6多级反馈队列调度算法 多级反馈队列Multilevel Feedback Queue 调度算法是「时间片轮转算法」和「最高优先级算法」的综合和发展。 「多级」表示有多个队列每个队列 优先级 从高到低同时 优先级越高 时间片越短。「反馈」表示 如果 有新的进程 加入优先级高的 队列时立刻 停止当前 正在运行的 进程转而去 运行优先级高的 队列。 它是如何工作的
设置了 多个队列赋予 每个队列不同的 优先级每个队列 优先级 从高到低同时 优先级 越高时间片越短新的进程会 被放入到 第一级队列的 末尾按 先来先服务的 原则 排队 等待被调度如果在 第一级队列 规定的 时间片 没运行完成则 将其 转入到 第二级队列的 末尾以此类推直至完成当 较高优先级的 队列为空才 调度 较低优先级 的队列中的 进程运行。如果 进程运行时有 新进程 进入 较高优先级的 队列则 停止当前 运行的 进程 并将其 移入到 原队列 未尾接着让 较高优先级的 进程运行 可以发现对于 短作业 可能可以在 第一级 队列很快被处理完。对于长作业如果在 第一级 队列处理 不完可以 移入 下次队列 等待 被执行虽然 等待的时间 变长了但是 运行时间 也变 更长了所以 该算法 很好的兼顾了 长短作业同时有 较好的 响应时间。 银行设置了 多个排队就绪队列每个队列 都有不同的 优先级各个队列 优先级 从高到低同时 每个队列 执行时间片的长度也不同优先级 越高的 时间片越短。新客户进程来了先进入 第一级 队列的 未尾按 先来先服务 原则 排队等待 被叫号运行。如果 时间片 用完客户的 业务 还没办理完成则让 客户进入到 下一级队列的 末尾以此类推直至 客户业务 办理完成。当 第一级队列 没人排队 时就会 叫号 二级队列的 客户。如果 客户办理业务 过程中有新的 客户加入 到较高 优先级的 队列那么 此时 办理中的 客户需要 停止办理回到 原队列的 末尾 等待再次叫号因为 要把 窗口让给 刚进入 较高优先级队列的 客户。 可以发现对于 要办理短业务的 客户来说可以 很快的 轮到并解决。对于 要办理 长业务的客户一下子解决不了就可以 放到下一个 队列虽然 等待的 时间稍微 变长了但是 轮到自己的办理时间 也变长了也可以接受不会造 成极端的现象可以说是综合上面几种算法的优点。 2. 说一说僵尸进程和孤儿进程
1孤儿进程 一个 父进程 退出而 它的 一个 或 多个 子进程 还在运行那么那些 子进程 将成为 孤儿进程。孤儿进程 将被 init 进程进程号 为 1所 收养并由 init 进程 对它们 完成 状态收集 工作。
2僵尸进程 一个 进程 使用 fork 创建 子进程如果 子进程 退出而 父进程 并没有 调用 wait阻塞 或 waitpid非阻塞 获取 子进程的 状态 信息那么 子进程 的 进程描述符 仍然 保存在 系统中。这种 进程 称之为 僵尸进程。
二、其他问题
1. 什么是中断和异常它们有什么区别 中断和异常都会 导致处理器 暂停 当前正在执行的 任务并 转向 执行一个 特定的 处理程序中断处理程序 或 异常处理程序。然后 在处理完 这些特殊情况 后处理器 会返回 到被打断的 任务继续执行。
1中断 中断 是由 计算机系统 外部事件触发的通常 与硬件设备 相关。中断的 目的是 为了 及时 响应 重要事件 而暂时 中断正常的 程序执行。典型的 中断 包括 时钟中断、I/O 设备中断如 键盘输入、鼠标事件和 硬件错误中断等。 操作系统 通常会 为每种类型的 中断 分配一个 中断处理程序用于 处理相应的事件。
2异常 异常 是由 计算机系统 内部事件触发的通常 与正在执行的 程序或指令 有关比如 程序的 非法操作码、地址越界、运算溢出等 错误引起的 事件异常 不能被 屏蔽当出现异常时计算机系统会 暂停正常的 执行流程并 转到 异常处理程序 来处理 该异常。
3区别综述 中断 是由 外部设备 或 其他 处理器 产生的它们 通常是 异步的也就是 说它们 可以 在 任何时候 发生与 当前 执行的 指令无关。例如键盘输入、鼠标移动、网络数据 到达 等 都会 产生 中断信号通知 CPU 去处理 这些 事件。异常是 由 CPU 内部 产生的它们 通常是 同步的也就是说它们 只会在 执行 某些 指令时发生与 当前 执行的 指令有关。例如除法运算时 除数为零、访问 非法 内存地址、执行 非法指令等 都会 产生 异常信号通知 CPU 去处理 这些 错误 或 故障。中断 可以 被屏蔽 或 禁止这 意味着 CPU 可以 通过 设置 某些标志位 或 寄存器 来 忽略 或 延迟响应 某些 中断信号。这样 可以避免 中断过于 频繁 或 干扰 重要的 任务。异常 不能 被 屏蔽 或 禁止这 意味着 CPU 必须 立即 响应异常信号并 进行相应的 处理。这样可以 保证程序的 正确性 和 系统的 稳定性。 2. 用户态和核心态
1用户态和内核态的区别 用户态 user Mode和 内核态Kernel Mode 是操作系统 为了 保护系统资源 和 实现 权限控制 而设计的 两种不同的 CPU 运行级别可以 控制进程 或 程序 对 计算机硬件资源的 访问权限 和 操作范围。
用户态在用户态下进程 或 程序 只能 访问受限的 资源 和 执行受限的 指令集不能 直接访问 操作系统的 核心部分也不能 直接访问 硬件资源。核心态核心态是 操作系统的 特权级别允许 进程 或 程序执行 特权指令 和 访问操作系统的 核心部分。在核心态下进程 可以 直接访问 硬件资源执行 系统调用管理内存、文件系统等 操作。
2在什么场景下会发生内核态和用户态的切换
系统调用当用户程序 需要请求 操作系统 提供的服务 时会 通过 系统调用 进入内核态。异常当 程序执行过程中 出现错误 或 异常情况 时CPU 会自动 切换到 内核态以便 操作系统能够 处理 这些异常。中断外部设备如键盘、鼠标、磁盘等产生的 中断信号 会使 CPU 从用户态 切换到 内核态。操作系统会 处理这些 中断执行 相应的 中断处理 程序然后再 将 CPU 切换回 用户态。