计算机专业保研面试复习笔记——操作系统

2023-05-16

计算机专业保研面试复习笔记:
计算机专业保研面试复习笔记——数据结构中的重要算法
计算机专业保研面试复习笔记——数据库
计算机专业保研面试复习笔记——操作系统
计算机专业保研面试复习笔记——计算机网络


文章目录

  • 死锁
    • 定义
    • 原因
    • 条件
    • 处理方法
      • 死锁预防
      • 死锁避免
      • 死锁检测
      • 死锁恢复
    • 银行家算法
  • 进程
    • 概念
    • 特点
    • 基本状态
    • 状态转换
    • 进程与程序的区别
    • 进程控制块(PCB)
    • 进程调度
    • 进程间通信
      • 管道
      • 消息队列
      • 信号量
        • P操作
        • V操作
        • 二值信号量
      • 共享内存
    • 互斥锁
  • 线程
    • 概念
    • 内核线程
    • 用户线程
    • 轻量级进程(LWP)
    • 进程和线程的区别
      • 概念
      • 资源
    • 线程同步
      • 互斥锁
      • 条件变量
      • 信号量
      • 信号
  • 缓冲区溢出
    • 什么是缓冲区溢出?
    • 有什么危害?
    • 其原因是什么?
  • 分页和分段有什么区别


死锁

定义

多个进程因循环等待资源而造成无法执行的现象

原因

进程互相申请对方占有的资源

条件

  • 互斥:至少有一个资源必须处于非共享模式,即一次只有一个进程可使用。如果另一进程申请该资源,那么申请进程应等到该资源释放为止。

  • 持有并等待:一个进程应占有至少一个资源,并等待另一个资源,而该资源为其它进程所占有。

  • 非抢占:资源不能被抢占,即资源只能被进程在完成任务后自愿释放。

  • 循环等待:进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。

处理方法

死锁预防

通过限制申请资源来避免死锁

  • 通过破坏“互斥”条件:

    • 部分锁是“只读”的,即不是互斥的。
  • 通过破坏“持有并等待”条件:

    • 每个进程执行前申请并获得所有资源。
    • 进程仅在没有资源时才可申请资源。
  • 通过破坏“无抢占”条件:

    • 如果一个进程持有资源并申请另一个不能立即分配的资源,那么它现在分配的资源可以被抢占。
  • 通过破坏“循环等待”条件:

    • 为资源设定顺序,必须先申请到顺序靠前的资源,才能申请顺序靠后的资源。

死锁避免

针对每次申请要求,系统在做决定时考虑现有可用资源、现已分配给每个进程的资源和每个进程将来申请与释放资源。

死锁检测

检测系统中是否有死锁。

死锁恢复

通过终止进程/抢占资源来恢复死锁。

银行家算法

用于资源分配,防止出现死锁的情况。

需要如下数据结构协助完成算法:

  • n为系统进程的数量,m为资源类型的种类。

  • available 长度为m的向量,表示每种资源的可用实例数量。

  • max n*m矩阵,定义每个进程的最大需求。

  • allocation n*m矩阵,定义每个进程现在分配的每种资源类型的实例数量。

  • need n*m矩阵,表示每个进程还需要的剩余资源。

利用每次每个进程的请求资源数量和剩余资源、可用资源做比较,确定新的资源分配是否安全。


进程

概念

操作系统执行一个程序的过程,不止是程序代码,还包括当前活动,如程序计数器的值和处理寄存器的内容等。

特点

第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。

文本区域存储处理器执行的代码;

数据区域存储变量和进程执行期间使用的动态分配的内存;

堆栈区域存储着活动过程调用的指令和本地变量。

第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。

基本状态

  • 等待态:等待发生某个事件
  • 就绪态:等待分配处理器
  • 运行态:正在占用处理器

状态转换

运行态->等待态: 等待外设、等待主存等资源分配或等待人工干预

等待态->就绪态: 等待条件已经满足,分配到处理器就可以运行了

就绪态->运行态: 系统按某种策略选中就绪队列中的一个进程占用处理器,占用后就变成了运行态

运行态->就绪态: 不是由于自身原因,是因为外界原因使运行状态的进程让出处理器,变成了就绪态。

进程与程序的区别

  • 程序作为一个静态文件存储在计算机系统的硬盘等存储空间中
  • 进程是处于动态条件下由操作系统维护的系统资源管理实体

进程控制块(PCB)

包含许多与某个特定进程相关的信息,相当于这些信息的仓库:

  • 进程状态:包括就绪、运行、停止、等待等。
  • 程序计数器:计数器表示进程将要执行的下一个指令的地址。
  • CPU寄存器:包括堆栈指针、通用寄存器等。
  • CPU调度信息:包括进程优先级,调度队列的指针等。
  • 内存管理信息:基地址、界限寄存器的值、页表或段表。
  • 记账信息:包括CPU时间、实际使用时间等。
  • I/O状态信息:包括分配给进程的I/O设备列表、打开文件表。

进程调度

FIFO/FCFS 先进先出:调度顺序是人物到达就绪队列的顺序。

SJF(Shortest Job First):最短的作业(CPU区间长度最小)最先调度。SJF可以保证最小的平均等待时间。

**优先权调度:**每个任务关联一个优先权,调度优先权最高的任务。注意:优先权太低的任务一直就绪,得不到运行,出现“饥饿”现象。

Round-Robin(RR) 轮转调度:设置一个时间片,每次轮到这个进程时分配不超过一个时间片的CPU。优点: 定时有响应,等待时间较短;缺点: 上下文切换次数较多;

多级队列调度:按照一定的规则建立多个进程队列。不同的队列有固定的优先级(高优先级队列可以抢占低优先级队列)。不同的队列可以给不同的时间片和采用不同的调度方法。

多级反馈队列:在多级队列的基础上,任务可以在队列之间移动,更细致的区分任务。

进程间通信

管道

管道是最基本的进程通信机制。可以想象成一个管道,两端分别连着2个进程,一个进程往里面写,一个进程从里面读。如果读或写管道的时候没有内容可供读或写,进程将被阻塞,直到有内容可供读写为止。

管道分为匿名管道(普通管道)命名管道

  • **匿名管道(普通管道)**创建后本质上是2个文件描述符,父子进程分别持有就能够使用管道。只允许单向通信。

  • 命名管道是根据路径来使用管道,故能够在任意进程间通信。

消息队列

消息队列本质上是开辟了一块内存空间,这块内存是其他进程可以访问到的,在其中使用链表的方式实现了一个队列,进程可以向该队列中发送数据块或者读取数据块,从而达到进程间通信的目的。

信号量

专门用于解决进程同步与互斥问题的一种通信机制,说明可用资源的数量。

P操作

对信号量-1,进程在使用资源之前声明“自己将占有一份资源”。

V操作

对信号量+1,使用完资源后归还时声明“我完成了”。

二值信号量

如果资源只有一份,那么信号量的初始值将是1,最多只能有一个进程使用该资源。这种信号量被称为“二值信号量”。

共享内存

本质是把两个或多个进程的虚拟地址映射到同一块物理内存。这样,一个进程通过对这块内存的读写就能被其他进程访问到,从而实现进程通信的功能。

互斥锁

可以使用互斥锁解决临界区问题。

采用互斥锁保护临界区,一个进程在进入临界区时调用acquire()获得锁,在退出临界区时调用release()释放锁。

当一个进程试图获取不可用的锁时,它会阻塞,连续循环的调用acquire(),这叫做忙等待。这种类型的锁也被称为自旋锁,因为进程不停地旋转,以等待锁变得可用。


线程

概念

是系统调度的最小单位。包括线程ID、程序计数器、寄存器组合堆栈。没有独立的系统资源,与同一进程的其他线程共享代码段、数据段和其他操作系统资源。

内核线程

调度器在内核中,内核负责创建和调度。

用户线程

调度器在用户空间。用户线程的创建和调度都是由上层的应用程序使用线程库的方式来完成的,内核并不知道。

轻量级进程(LWP)

Linux使用轻量级进程实现线程这个概念。在linux中,当一个进程与其他进程共享资源时,它就是轻量级进程,如果独享资源,那么它就是进程。

进程和线程的区别

概念

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动。进程是系统进行资源分配和调度的一个独立单位。

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。

资源

进程独立拥有系统资源。

线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

线程同步

互斥锁

与进程互斥锁相同。

条件变量

使用条件变量控制线程同步时,线程访问共享资源的前提是程序中设置的条件变量得到满足。条件变量不会对共享资源加锁,但也会使线程阻塞。若条件变量规定的条件不满足,线程就会进入阻塞状态直到条件满足。

信号量

与进程信号量相似。

信号

通过通知操作的方式来保持多线程同步。


缓冲区溢出

什么是缓冲区溢出?

缓冲区溢出是指当计算机向缓冲区填充数据时超出了缓冲区本身的容量,溢出的数据覆盖在合法数据上。

有什么危害?

  • 程序崩溃,导致拒绝服务
  • 跳转并且执行一段恶意代码

其原因是什么?

造成缓冲区溢出的主要原因是程序中没有仔细检查用户输入。

分页和分段有什么区别

1、段是信息的逻辑单位,它是根据用户的需要划分的,因此段对用户是可见的 ;页是信息的物理单位,是为了管理主存的方便而划分的,对用户是透明的。

2、段的大小不固定,有它所完成的功能决定;页大大小固定,由系统决定

3、段向用户提供二维地址空间;页向用户提供的是一维地址空间

4、段是信息的逻辑单位,便于存储保护和信息的共享,页的保护和共享受到限制。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机专业保研面试复习笔记——操作系统 的相关文章

  • MySQL基础(非常全)

    MySQL基础 一 MySQL概述 1 什么是数据库 答 数据的仓库 如 在ATM的示例中我们创建了一个 db 目录 称其为数据库 2 什么是 MySQL Oracle SQLite Access MS SQL Server等 答 他们均是
  • unix环境高级编程——文件IO

    本期主题 unix环境高级编程 文件IO 文件IO 0 引言 1 文件描述符 2 IO编程中常用的API接口 1 open函数 2 close函数 3 read函数 4 write函数 5 lseek函数 3 函数sync fsync和fd
  • Linux网络安全-Zabbix入门(一)

    一 基本概念 1 监控目的 运行情况 提前发现问题 2 监控资源类别 公开 tcp udp 端口 私有 cpu 磁盘 监控一切需要监控的东西 只要能够想到 能够用命令实现的都能用来监控 如果想远程管理服务器就有远程管理卡 比如Dell id
  • mapengpeng1999@163.com 操作系统4~处理机调度

    处理机调度 1 三级调度体系 1 处理机调度主要是对处理机运行时间进行分配 即 按照一定算法或策略 将处理机运行时间分配给各个并发进程 同时尽量提高处理机的使用效率 2 现代操作系统中 按调度所实现的功能分3种类型 高级调度 中级调度和低级
  • RTX线程通信之——线程标志

    文章目录 Thread Flags 概念 RTX线程标志API 案例 LED灯同步闪亮 小结 参考资料 Thread Flags In a real application we need to be able to communicate
  • 设备管理过程

    复杂度2 5 机密度2 5 最后更新2021 04 19 AIX中对设备会有如下五个操作 define aix下能看到设备的定义 但驱动程序并没有加载或初始化 该设备不可用 lsdev看到设备时defined 很多逻辑设备 vg lv等 只
  • 操作系统PV操作及读者写者问题

    操作系统PV操作及读者写者问题 目录 1 信号量 2 P V操作原语可描述为以下式子 3 解释 4 互斥模式原理 5 同步模式原理 6 读者写者问题 1 信号量 PV操作与信号量的处理有关 信号量是表示资源的实体 是一个与队列有关的整型变量
  • CF、SF、OF、ZF标志位

    没学汇编 这种题我真是做一道错一道 OF overflow flag 溢出标志位 溢出标志位 OF 1 表示带符号整数运算时结果发生溢出 对于无符号整数运算 OF没有意义 对于有符号数的溢出判断方式有 1 采用一位符号位 思想为 或 则为溢
  • nslookup命令详解

    nslookup命令用于查询DNS的记录 查看域名解析是否正常 在网络故障的时候用来诊断网络问题 nslookup的用法相对来说还是蛮简单的 主要是下面的几个用法 1 直接查询 这个可能大家用到最多 查询一个域名的A记录 nslookup
  • InfoQ视频直播分享报名:前贝尔实验室、Oracle架构师为你在线揭秘分布式平台内核...

    报名方式 关注InfoQ微信公众号 ID infoqchina 回复 InfoQ 即可观看在线直播技术分享 分享地点 u0026amp 时间 InfoQ直播微课堂将在熊猫 TV 网站播出 看腻了卖肉的女主播 来看看QCon 的明星讲师如何
  • 深入ftrace kprobe原理解析

    Linux krpobe调试技术是内核开发者专门为了编译跟踪内核函数执行状态所涉及的一种轻量级内核调试技术 利用kprobe技术 内核开发人员可以在内核的绝大多数指定函数中动态插入探测点来收集所需的调试状态信息而基本不影响内核原有的执行流程
  • Elasticsearch 日志

    下载并安装 Filebeat 首次使用 Filebeat 请参阅入门指南 复制代码片段 curl L O https artifacts elastic co downloads beats filebeat filebeat 7 2 0
  • Visual studio 2005 hangs on startup AppHangXProcB1 svchost devenv.exe svchost.exe:{2a811bb2-303b-48b...

    This problem has been torturing me for the whole afternoon and after searching on the web for a long time I finally get
  • [架构之路-185]-《软考-系统分析师》-3-操作系统基本原理 - 文件索引表

    目录 一 文件的索引块 二 索引分配表 三 索引表的链接方案 四 多层索引 五 混合索引分配 一 文件的索引块 存放在目录中的文件 并非是文件的真实内容 目录中记录了文件的索引块是几号磁盘块 文件对应的索引表是存放在指定的磁盘块中的 二 索
  • 自己动手写操作系统(一)

    本系列文章将一步步实现一个简单的操作系统 实验环境是在Linux系统下通过Bochs虚拟机运行我们自己写的操作系统 一 实验环境搭建 1 Ubuntu的安装 Windows用户可以选择在虚拟机中安装Ubuntu 具体安装教程可自行搜索 2
  • Ubuntu9.04太多乱码(中文不能正常显示)

    最近在使用Ubuntu9 04的过程中 发现有好多地方都出现乱码 其实是中文不能正常显示 现在把我所遇到的所有乱码问题集中一下 方便以后查阅参考 一 Flash乱码 在终端输入 sudo gedit etc fonts conf d 49
  • 操作系统常见面试题

    1 什么是进程 Process 和线程 Thread 有何区别 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动 进程是系统进行资源分配和调度的一个独立单位 线程是进程的一个实体 是CPU调度和分派的基本单位 它是比进程更小的能
  • 【操作系统】王道考研 p42 段页式管理方式

    段页式管理方式 知识总览 分段 分页管理方式中最大的优缺点 关于段式管理会产生外部碎片 ps 分段管理中产生的外部碎片也可以用 紧凑 来解决 只是需要付出较大的时间代价 分段 分页 段页式管理 示意图 先分段 后分页 段页式管理的逻辑地址结
  • C#实现FTP文件夹下载功能【转载】

    网上有很多FTP单个文件下载的方法 前段时间需要用到一个FTP文件夹下载的功能 于是找了下网上的相关资料结合MSDN实现了一段FTP文件夹下载的代码 实现的思路主要是通过遍历获得文件夹下的所有文件 当然 文件夹下可能仍然存在文件夹 这样就需
  • 八股文打卡day20——操作系统(3)

    面试题 线程同步的方式有哪些 我的回答 多线程同时访问和修改某个数据的话 会造成数据的不一致和冲突问题 所以就需要线程同步 线程同步的方式有 1 互斥锁 互斥锁就是 当一个资源被访问和操作时 会对这个资源加锁 把这个资源锁定 其他线程不能对

随机推荐

  • keil 突然跳转不了

    如题 keil 突然跳转不了 1 搞了好久 xff0c 最终发现我是把工程放在了中文目录下面 把它移出来然后重新编译就能正常跳转 2 也有可能是工程过大 xff0c 稍等一会或者重新打开工程也可以解决问题
  • Ubuntu20修改主机名

    编辑 etc hostname 文件
  • Linux运维|使用aptitude代替apt-get解决安装包依赖问题

    文章目录 问题描述aptitude安装过程 问题描述 在使用apt get安装libffi dev时出现如下报错 xff1a The following packages have unmet dependencies libffi spa
  • 全志T113-S3 RT-Thread SMP适配笔记

    T113 S3 SMP适配笔记 目标 给T113 S3适配RT Thread xff0c 并支持SMP 资料 没有太详细的资料和示例 xff0c 只有一些零星的信息 F133封装基本兼容Cortex A7双核 一些参考资料 https wh
  • 《Java核心技术精讲》读书笔记

    Java核心技术精讲 李兴华著 目录 xff1a 一 Java基础知识 二 面向对象 三 Java SE基础知识 四 设计开发 Java核心技术精讲 这本书以实战应用 就业实践为目的 xff0c 拒绝纸上谈兵 书中很多内容都是非常有针对性
  • 【STM32】HAL库自学记录-旋转编码器的使用

    STM32 HAL库自学记录 旋转编码器的使用 前言使用工具旋转编码器原理介绍方法一 定时器中断方式 xff08 实质就是外部中断 xff09 方法二 定时器方式 前言 通过本文可学会两种实现判断旋转编码器正转反转的方法 xff0c 可根据
  • Ubuntu20.04 loam_velodyne编译运行

    当你拿到了loam velodynede 的代码 xff0c 你想立刻catkin make起来 xff0c 看一下实际效果 结果你发现编译不通过 xff01 xff01 xff01 你发现报错是opencv的问题 然后 xff0c 你就可
  • 【运动控制】线性二次型最优控制(LQR)

    1 算法思想 对一个受控系统 xff0c 从一类允许的控制方案中找出一个最优的方案 xff0c 使系统由初始状态转移到目标状态的同时某个特定的性能指标为最优 在运动方程和允许控制范围的约束下 xff0c 对以控制函数和运动状态为变量的性能指
  • IMU与GPS的数据融合

    1 IMU简介 惯性测量单元 xff08 Inertial Measurement Unit xff09 通常由3个加速度计和3个陀螺仪组合而成 xff0c 加速度计和陀螺仪安装在互相垂直的测量轴上 xff0c 这里可以将其输出看作为三个方
  • 卡尔曼滤波算法

    了解过导航 雷达数据处理的必然听过卡尔曼滤波 xff0c 因为最近有项目需求 xff0c 要验证一下卡尔曼滤波对结果的优化程度 xff0c 所以入门学习一下卡尔曼滤波器 毕竟是经典的滤波器 xff0c 网上关于卡尔曼滤波的代码和文章有很多
  • C++STL在算法题中的应用-持续更新

    写洛谷的题 有时候不会总是会去看题解 有的思路很巧妙 需要学习 有的用了很厉害的STL 之前一直在看 现在想想也是要记下来好一点 这个帖子持续更新吧 再见到好用的STL就在这里记下来 1 vector 是个容器很好用 但是我基本没怎么用过
  • 卡尔曼滤波(联邦、一致性卡尔曼滤波)

    在信息融合中经常使用卡尔曼滤波 xff0c 现在我们对其进行讲解 xff1a 百度百科上写到 xff1a 卡尔曼滤波公式如上 这是另一种表述 xff0c 涉及的符号见下表 xff1a 对于联邦卡尔曼滤波 xff1a 对于一致性卡尔曼滤波 x
  • BP神经网络公式推导(西瓜书)自我理解

    公式推导 描述BP神经网络 xff1a 网络包含三层 xff1a 输入层 xff1a 神经元数量为 d d d 个 xff0c 输入为 x i
  • C++ 友元类

    1 在C 43 43 中 xff0c 我们使用类对数据进行了隐藏和封装 xff0c 类的数据成员一般都定义为私有成员 xff0c 成员函数一般都定义为公有的 xff0c 以此提供类与外界的通讯接口 但是 xff0c 有时需要定义一些函数 x
  • 浪潮服务器通过BMC安装银河麒麟OS记录

    浪潮服务器 xff08 X86 xff09 远程安装银河kylin操作系统记录 1 下载麒麟镜像OS 官网下载 xff1a 银河麒麟官网 xff0c 按需申请即可这个是首页 xff0c 不要走错哦 2 通过网络登录BMC 浪潮服务器的默BM
  • K8S 性能优化 - 大型集群 CIDR 配置

    前言 K8S 性能优化系列文章 xff0c 本文为第三篇 xff1a Kubernetes 大型集群 CIDR 配置最佳实践 系列文章 xff1a K8S 性能优化 OS sysctl 调优 K8S 性能优化 K8S APIServer 调
  • 完美实现Ubuntu系统迁移到另一台电脑/服务器

    一 以A电脑的系统向B电脑迁移为例 第一 xff0c 首先进入A电脑根目录并获取权限 命令 xff1a cd sudo su 第二 xff0c 将根目录所需文件打包为backup tar gz放在当前目录下 xff0c 也可以修改路径直接保
  • catkin 创建工作区

    先确定自己的环境变量是否设置正确 export grep ROS 若出现如下的 xff0c 说明是正确的 declare x ROSLISP PACKAGE DIRECTORIES 61 declare x ROS DISTRO 61 in
  • semtcl-信号量的操作

    头文件 include lt sys types h gt include lt sys ipc h gt include lt sys sem h gt 函数 int semctl xff08 int semid xff0c int se
  • 计算机专业保研面试复习笔记——操作系统

    计算机专业保研面试复习笔记 xff1a 计算机专业保研面试复习笔记 数据结构中的重要算法 计算机专业保研面试复习笔记 数据库 计算机专业保研面试复习笔记 操作系统 计算机专业保研面试复习笔记 计算机网络 文章目录 死锁定义原因条件处理方法死