961操作系统知识总结
部分图片可能无法显示,参考这里:https://zhuanlan.zhihu.com/p/701247894
一 操作系统概述
1. 操作系统的基本概念
重要操作系统类型:批处理操作系统(批量处理作业,单道批处理/多道批处理系统,用户不能与之交互),分时操作系统(时间片轮转,可以进行用户交互),实时操作系统(相对分时操作系统,紧急任务无需排队等待)
并发与并行:并发性,又称共行性,是指能处理多个活动的能力。并行与并发是不同的,并行是指进程在CPU上同时执行,而并发只要求一段时间内进程同时能够运行,有可能是在这段时间内两者是串行执行的。
程序:放在外存中的程序代码
作业:正准备从外存调入内存的程序
进程:正在从内存中运行的程序
2. 操作系统的重要概念
用户态+核心态/管态
操作系统内核相关内容:时钟管理,中断机制,原语,系统控制的数据结构及处理
原语:处于计算机最底层,用来实现一些规定操作的指令,且不能被中断,需一次性执行完(一般执行时间也很短)。
系统控制的数据结构及处理:如进程控制块,设备控制块等。
二 进程管理
1. 进程、线程的基本概念以及两者的区别
在操作系统中引入进程的目的,是为了使多个程序并发执行,以改善资源利用率及提高系统的吞吐量;那么,在操作系统中再引入线程则是为了减少程序并发执行时所付出的时空开销,使操作系统具有更好的并发性。
支持线程的操作系统中,进程是资源分配的基本单位,线程是处理器调度的基本单位。
2. 进程控制块、进程的状态与转换
当遇到特殊情况,需要暂停进程,然后将进程会从内存调到外存,该过程就称为进程的挂起。被挂起的程序在解决了特定问题之后,可以恢复到内存继续运行。
注意,进程的挂起不是进程的阻塞,处于阻塞状态的进程依然在内存中,但处于挂起状态的进程已经不在内存了。
进程 = 程序 + 数据 + 进程控制块PCB
3. 进程调度算法
优先级算法
时间片轮转算法
短作业优先算法
先来先服务算法
最重要评估原则:周转时间,平均周转时间
其他比较次要的原则:
调度的层次:低级调度(作业调度,程序),中级调度(内存调度,挂起),高级调度(进程调度,进程)
4. 死锁的探讨与处理
死锁的预防
死锁发生的四个必要条件:循环等待条件,不可剥夺条件,请求保持条件,互斥使用条件
死锁的避免
银行家算法,安全性算法,资源分配矩阵,安全序列
死锁的检测
资源分配图的化简
死锁的解除
资源剥夺法,撤销进程法
死锁处理总览
从预防,避免,检测,解除四个角度出发,大题可能出银行家算法,安全性算法,资源分配图,其实本质都一样,思想都是试探性分配
5. 进程间通信
低级通信:交换少量信息,PV操作是低级通信方式,实现对临界资源的同步和互斥。
高级通信:以较高的效率交换大量数据的通信方式
高级通信方式:共享存储,消息传递系统,管道通信
6. 进程同步互斥的基本概念
临界资源:系统中一次只允许一个进程使用的资源
临界区:各个进程中对某个临界资源实施操作的程序片段
同步:一个进程执行到某一步时,必须等待另一个进程发来信息才能继续运行下去,这种关系叫同步。
互斥:由于各个进程需要使用共享资源,而这些资源需要排它性使用,各个进程之间竞争使用这些资源,这种关系叫互斥。
临界资源的访问代码分区:进入区,临界区,退出区,剩余区
7. 实现临界区互斥的基本方法
软件实现法
在进入区设置和检查一些标志来表明是否有进程进入临界区。若有,则循环检查一直等待,直到进入临界区。离开临界区后,在退出区修改标志。这种不断循环检查标志的值实质上,浪费了处理机资源。
硬件实现法
硬件实现主要两种方法:中断屏蔽法和硬件指令法
中断屏蔽法:一个进程进入临界区后,关中断。可以防止其他进程进入临界区。此方法限制了CPU交替执行程序的能力,有可能会使系统崩溃(如异常得不到中断处理)
硬件指令法:每条硬件指令都是原子操作,因为它们是硬件直接实现,因此执行硬件指令时不会被中断
信号量机制
一种十分有效,重要的同步方法,可以同时实现同步和互斥关系,实现灵活方便快捷
8. 信号量机制及P、V操作
信号量机制可用来解决同步和互斥问题,信号量semaphore只能被两个操作(P操作和V操作)来访问。
信号量的数据结构描述如下:
typedef struct {int value;struct process *L;
} semaphore;
说明:该数据结构由两个变量组成,value是当前状态可用资源的数量,L是存放因资源限制被阻塞的进程队列指针。
P操作:请求访问临界资源
V操作:请求释放临界资源
信号量机制原理简述
当一个进程需要临界资源时:
- 进行P操作,value的值减1
- 若value>=0,说明存在可用临界资源,进程继续执行,否则转3
- 若value<0,说明不存在可用临界资源,将当前进程加入阻塞队列L
- 阻塞进程,等待适当时机被唤醒
当一个进程释放临界资源时:
- 进行V操作,value的值加1
- 若value>0,说明不存在阻塞的进程,否则转3
- 若value<=0,说明存在阻塞的进程等待临界资源,唤醒一个阻塞进程
只需要将临界区代码置于P,V操作之间,即可实现同步与互斥
分析:此时,P操作相当于进入区,临界区依然是临界区,V操作相当于退出区,剩余区依然不变;P,V操作为原语,执行过程中不能被中断。
9. 经典同步问题
主要三个问题:生产者消费者问题,读者写者问题,哲学家进餐问题,前两个问题相对更重要,是实际做题的思路来源
生产者消费者问题
读者写者问题
哲学家进餐问题
三 内存管理
1. 程序从外存调入内存细节
程序从外存到内存,实现了外存中作业到内存中进程的转变,大体经过编译,链接,装入三大过程。
编译
编译过程主要有编译和汇编两个阶段。编译阶段主要将高级语言转换为汇编语言,汇编阶段主要将汇编语言翻译成机器语言。
链接
由链接程序将编译后形成的目标模块以及所需要的库函数链接在一起,形成一个完整的装入模块。链接主要在编译时,加载时,运行时进行。链接若发生在编译时,就是静态编译,程序运行前完全确定链接;而运行时链接,表示程序运行到需要的函数库才链接对应对象,为动态编译。
装入
由装入程序将装入模块装入内存运行,此时会创建对应进程。装入分为静态重定位和动态重定位。涉及的主要问题是程序中的逻辑地址与实际内存的物理地址之间如何映射。静态重定位在装入时一次性完成逻辑地址与物理地址的映射关系,而动态重定位需要运行时动态确定逻辑地址与物理地址的映射关系。
2. 内存保护的基本方法
内存保护的关键在于检查进程是否有内存地址越界行为。
上下限寄存器
在CPU中设置上下限寄存器,用于分别存放作业在主存中的上限和下限地址,当CPU要访问地址时,与这两个寄存器的值进行比较即可判断是否越界,适合逻辑地址即对应相应物理地址的情形(如物理地址与逻辑地址事先就确定只差一个固定的偏移量)
界地址寄存器
界地址寄存器存有进程的最大逻辑地址(通过分配内存后由起始物理地址与分配空间大小计算得出),可通过逻辑地址是否大于该界地址寄存器的值比较是否发生越界,若不越界,加上重定位寄存器(存有进程的起始物理地址)的值即为物理地址。
3. 分区管理存储
可细分两种:固定式分区存储管理和动态式分区存储管理
固定式分区分配方法:单一队列分配方式,多队列分配方式
可变式分区分配方法:首次适应算法,下次适应算法,最佳适应算法,最坏适应算法
碎片方面:固定式分区产生内碎片,可变式分区产生外碎片
4. 交换覆盖技术
覆盖技术
交换技术
5. 分页存储管理(重点内容,展开比较详细)
作业在请求内存空间的分配时,一般按照页为单位来分配,每个进程记住自己分得哪些页(一般记录页号)形成页表,页表数据存储在进程控制块PCB中。
地址变换过程
多级页表
6. 分段存储管理
7. 段页存储管理
8. 虚拟存储管理
虚拟存储技术的实现依赖于局部性原理,即进程往往会不均匀地高度局部性地访问内存。局部性原理表现在时间局部性和空间局部性。
9. 页面置换算法
如果进程在运行中发生缺页现象,需要进入缺页中断机构进行处理,请求操作系统将所缺页面调入内存。此时进程被阻塞,等待调页完成时的唤醒。
重要算法
OPT
LRU
FIFO
CLOCK
四 设备管理
1. 设备管理基本概念
设备按传输分类:块设备(数据块为单位),字符设备(字符为单位)
设备按用途分类:存储设备,传输设备,人机交互设备
设备按共享分类:共享设备,独占设备(临界资源),虚设备(虚拟技术上的逻辑设备)
设备控制方式:程序控制,中断驱动,DMA方式,通道方式
2. 直接控制方式
3. 中断驱动方式
4. DMA方式
5. 通道方式
6. 缓冲技术
当缓冲区的数据非空时,不能往缓冲区注入数据;当缓冲区数据为空时,才能注入数据。
当缓冲区的数据不满时,不能获取缓冲区数据;当缓冲区数据为满时,才能获取数据。
主要缓冲技术有:单缓冲技术,双缓冲技术,循环缓冲技术,缓冲池技术
7. 假脱机技术
五 文件管理
1. 文件系统概念
文件由文件体和文件控制块FCB构成
文件分两种:普通文件(正常意义下的文件),特殊文件(目录,本质上为文件),磁盘里面存储的都是文件,以文件为逻辑单位进行组织
对文件的不同组织方式,就构成了不同的文件系统,常见的文件系统有:FAT,NTFS
2. 普通文件基础
文件结构分为逻辑结构和物理结构
逻辑结构:文件在操作系统角度的组织方式,主要为用户所看到
物理结构:文件在物理磁盘角度的组织方式,主要为系统所看到
3. 目录文件基础
4. 文件系统实现
5. 磁盘调度算法
6. 冗余磁盘阵列
RAID0:条带化存储
RAID1:镜像存储
RAID2:汉明码存储
RAID3:校验码-字节存储
RAID4:校验码-数据块存储
RAID5:校验码-交叉存储
相关文章:

961操作系统知识总结
部分图片可能无法显示,参考这里:https://zhuanlan.zhihu.com/p/701247894 961操作系统知识总结 一 操作系统概述 1. 操作系统的基本概念 重要操作系统类型:批处理操作系统(批量处理作业,单道批处理/多道批处理系统,用…...

电脑死机问题排查
情况描述:2024年6月2日下午16:04分电脑突然花屏死机,此情况之前遇到过三次,认为是腾讯会议录屏和系统自带录屏软件冲突导致。 报错信息:应用程序-特定 权限设置并未向在应用程序容器 不可用 SID (不可用)中运行的地址…...

百度地图1
地图的基本操作 百度地图3.0文档 百度地图3.0实例中心 设置地图 centerAndZoom(center: Point, zoom: Number)设初始化地图,center类型为Point时,zoom必须赋值,范围3-19级, // 百度地图API功能var map new BMap.Map("map"); //…...

Ubuntu 24.04 LTS 安装Docker
1 更新软件包索引: sudo apt-get update 2 安装必要的软件包,以允许apt通过HTTPS使用仓库: sudo apt-get install apt-transport-https ca-certificates curl software-properties-common 3 添加Docker的官方GPG密钥: curl -fs…...

【架构设计】Java如何利用AOP实现幂等操作,防止客户端重复操作
1实现方案详解 在Java中,使用AOP(面向切面编程)来实现幂等操作是一个常见的做法,特别是当你想在不修改业务代码的情况下添加一些横切关注点(如日志、事务管理、安全性等)时。幂等操作指的是无论执行多少次,结果都是相同的操作。 为了利用AOP实现幂等操作以防止客户端重…...

笔记:美团的测试
0.先启动appium 1.编写代码 如下: from appium import webdriver from appium.webdriver.extensions.android.nativekey import AndroidKeydesired_caps {platformName: Android,platformVersion: 10,deviceName: :VOG_AL10,appPackage: com.sankuai.meituan,ap…...

【30天精通Prometheus:一站式监控实战指南】第15天:ipmi_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细
亲爱的读者们👋 欢迎加入【30天精通Prometheus】专栏!📚 在这里,我们将探索Prometheus的强大功能,并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。🚀 Prometheus是云原生和DevOps的…...

STM32F103借助ESP8266连接网络
ESP8266配置 STM32F103本身是不具备联网功能的,所以我们必须借助其他单片机来进行联网,然后让STM32与联网单片机通信,就可以实现STM32联网了。 本文借助的是ESP8266模块,其通过UART协议与STM32通信(http://t.csdnimg.c…...

Feature Manipulation for DDPM based Change Detection
基于去噪扩散模型的特征操作变化检测 文章提出了一种基于去噪扩散概率模型(DDPM)的特征操作变化检测方法。变化检测是计算机视觉中的经典任务,涉及分析不同时间捕获的图像对,以识别场景中的重要变化。现有基于扩散模型的方法主要…...

第十三届蓝桥杯国赛大学B组填空题(c++)
A.2022 动态规划 AC; #include<iostream> #define int long long using namespace std; int dp[2050][15]; //dp[i][j]:把数字i分解为j个不同的数的方法数 signed main(){dp[0][0]1;for(int i1;i<2022;i){for(int j1;j<10;j){//一种是已经分成j个数,这时只需每一个…...

conda源不能用了的问题
conda旧没用了,不知道什么原因,安装源出问题,报如下错: Loading channels: failedUnavailableInvalidChannel: HTTP 404 NOT FOUND for channel anaconda/pkgs/main <https://mirrors.aliyun.com/anaconda/pkgs/main>The c…...

【C#】自定义List排序规则的两种方式
目录 1.系统排序原理 2.方式一:调用接口并重写 3.方式二:传排序规则函数做参数 1.系统排序原理 当我们对一个List<int>类型的数组如list1排序时,一个轻松的list1.sort();帮我们解决了问题 但是在实际应用过程中,往往我们…...

ANAH数据集- 大模型幻觉细粒度评估工具
大型语言模型(LLMs)在各种自然语言处理任务中取得了显著的性能提升。然而,它们在回答用户问题时仍面临一个令人担忧的问题,即幻觉,它们会产生听起来合理但不符合事实或无意义的信息,尤其是当问题需要大量知…...

AI前沿技术探索:智能化浪潮下的创新与应用
一、引言 随着科技的不断进步,人工智能(AI)已成为推动社会发展的重要力量。从自动驾驶汽车到智能医疗诊断,从智能家居到虚拟助手,AI技术正逐渐渗透到我们生活的方方面面。本文旨在探讨AI的前沿技术、创新应用以及未来…...

JVM类加载过程
在Java虚拟机规范中,把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java.lang.Class对象,这个过程被称作类加载过程。一个类在整个虚拟机周期内会经历如下图的阶段&…...

如何安装ansible
ansible安装 1、 准备环境----关闭防护墙和selinux 一般用ansible不会少于10台以上 环境: 主机:4台 一个控制节点 3个被控制节点 解析:本地互相解析(所有机器) # vim /etc/hosts 192.168.1.10 ansible-web1 192.168.1.11 ansible-web2 192.168.1.12…...

html+CSS+js部分基础运用11
一、改变新闻网页中的字号 1、设计如图1-1所示的界面,要求当网络访问者选择字号中的【大、中、小】时能实现页面字号大小变化,选择“中”时,页面效果如图1所示。 图1 单击前初始状态页面 图2 单击“中”链接后页面 2、div中内容如下&#x…...

6,串口编程———通过串口助手发送数据,控制led亮灭
//功能:串口助手每次发送数据格式:0000& // 第二个字节控制LED1亮灭 // 第三个字节控制LED2亮灭 // 第四个字节控制LED3亮灭 // 第无个字节控制LED4亮灭 //要求:代码能够一直运行,能够接收多字节数据 上节讲了串口的基本…...

【java】【python】leetcode刷题记录--栈与队列
232 用栈实现队列 题目描述 两个栈模拟队列的思路是利用栈(后进先出结构)的特性来实现队列(先进先出结构)的行为。这种方法依赖于两个栈来逆转元素的入队和出队顺序,从而实现队列的功能。 入队操作(使用s…...

java并发常见问题
1.死锁:当两个或多个线程无限期地等待对方释放锁时发生死锁。为了避免这种情况,你应该尽量减少锁定资源的时间,按顺序获取锁,并使用定时锁尝试。 2.竞态条件:当程序的行为依赖于线程的执行顺序或输入数据到达的顺序时…...

联芸科技偏高的关联交易:业绩波动性明显,海康威视曾拥有一票否决
《港湾商业观察》施子夫 5月31日,上交所上市审核委员会将召开2024年第14次审议会议,届时将审议联芸科技(杭州)股份有限公司招股书(以下简称,联芸科技)的首发上会事项。 据悉,此次系…...

hexo init命令报错:Error: EPERM: operation not permitted, mkdir ‘D:\‘
我用的是git bash通过hexo init安装hexo的,但是报错如下: $ hexo init INFO Cloning hexo-starter https://github.com/hexojs/hexo-starter.git fatal: unable to access https://github.com/hexojs/hexo-starter.git/: HTTP/2 stream 1 was not clos…...

day-37 最大正方形
思路 动态规划,这题主要得弄明白状态转换方程,dp[i][j]表示以(i,j)为右下角的最大正方形 解题方法 1.首先将第一行和第一列初始化,当对应位置的matrix为’0’时,dp数组对应位置也为零,否则为1 …...

springboot 3.3版本 类数据共享(CDS)提升启动速度 使用方法+Docker打包代码
springboot 3.3 版本已经正式发布,新版本提供了类数据共享(CDS)功能,通过将类元数据缓存在 Archive(归档/存档) 文件中,使其可以快速预加载到新启动的 JVM 中,从而帮助缩短 JVM 的启…...

Django 目录
Django 创建项目及应用-CSDN博客 Django 注册应用-CSDN博客 Django 应用的路由访问-CSDN博客 Django templates 存放html目录-CSDN博客 Django 解析路由参数-CSDN博客 Django 用re_path()方法正则匹配复杂路由-CSDN博客 Django 反向解析路由-CSDN博客 Django HttpReques…...

VirtualBox Ubuntu系统硬盘扩容
1、关闭虚拟机,找到需要扩容的硬盘,修改为新的容量80GB,应用保存。 2、打开VM,进入系统,使用lsblk可以看到硬盘容量已经变为80GB,但硬盘根分区还没有扩容,使用df查看根文件系统也没有扩容。 [19…...

【自动驾驶】针对低速无人车的线控底盘技术
目录 术语定义 一般要求 操纵装置 防护等级 识别代号 技术要求 通过性要求 直线行驶稳定性 环境适应性要求 功能安全要求 信息安全要求 故障处理要求 通信接口 在线升级(OTA) 线控驱动 动力性能 驱动控制响应能力 线控制动 行车制动 制动响应能力 线控转向 总体要求 线控…...

Kotlin 继承和实现
文章目录 前言继承(extend)实现(implement)继承与实现 前言 在 Kotlin 中,继承和实现都是在类名后使用冒号:,后边加上其他类或接口的名称来表示,二者之间写法没有太大区别(类需要加…...

MATLAB误差估计扩展卡尔博斯方法的目录大纲
MATLAB误差估计扩展卡尔博斯方法的目录大纲 目录: 一、引言 1.1 背景介绍 1.2 研究意义 二、基本理论 2.1 误差估计的基本概念 2.2 卡尔博斯方法的基本原理 三、MATLAB误差估计扩展卡尔博斯方法 3.1 MATLAB简介 3.2 MATLAB在误差估计中的应用 3.3 MATLAB扩展卡尔…...

NetMizer 日志管理系统前台RCE漏洞
声明 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 一、产品介绍 NetMizer日志管理系统是一个与NetMizer流量管理设备配合…...