操作系统知识点总结
操作系统知识点总结:
第一章:操作系统概述
1.1操作系统的概念:
操作系统是一种系统软件,与其他系统软件和应用软件不同,它有自己的基本特征。它的四大基本特征也就是并发,共享,虚拟,异步。
1.2操作系统的特征(四大基本特征):
- 并发: 这里我们要理解什么是并发,什么是并行。并发是指多个事件在同一时间间隔内发生。而并行是指多个事件在同一时刻发生。
- 共享: 共享分为两种共享方式:互斥共享方式:在一定时间内只允许一个进程去访问。同时共享方式:在一定时间内允许多个进程去访问。
其中 **并发和共享是操作系统最基本的特征。两者互为存在条件,**资源共享是以并发为条件的,没有并发就没有办法谈共享。若系统不能对资源并发进行有效的管理,那么必将影响到程序的并发执行。
3.虚拟
4.异步: 进程的执行不是一贯到底的,而是走走停停,不断向前推进。
虚拟性以并发性和共享性为前提,异步性是并发性和共享性的必然结果。
1.3操作系统的目标和功能:
1.操作系统是计算机系统资源的管理者:
(1).处理机管理
(2).存储器管理
(3).文件管理
(4).设备管理
2.操作系统作为用户和计算机硬件系统之间的接口
3.操作系统实现了对计算机资源的扩充
操作系统的目标:实现方便性,有效性,可扩充性,开放性。
1.4操作系统的发展历程:
1.人工操作阶段:
2.单道批处理阶段:
实现了对作业的连续处理,但由于只有一个通道,它解决了人机矛盾和CPU与IO设备速度不匹配的矛盾。提高了系统的资源利用率和吞吐量。
缺点:不能充分利用资源,原因是只有一个通道。
3.多道批处理阶段:
优点:提高了资源的利用率,系统的吞吐量大。
缺点:平均周转时间长,没有交互能力。
实现多道批处理的关键是: 如何分配处理器,多道程序的内存分配问题,I/O设备如何分配,如何保证其安全性和一致性。
4.分时操作系统
分时系统实现的关键是如何让用户与自己的作业进行交互。
5.实时操作系统
//TODO
1.5操作系统的运行环境:
两种指令(特权指令和非特权指令):
特权指令: 指的是不允许用户直接使用的指令。
非特权指令: 是指允许用户直接使用的指令,它不能访问系统的软硬资源。
随之而来的是两种运行模式(用户态和核心态):
当CPU处于核心态时就可以使用特权指令,同时切换到用户态的指令也是特权指令。当CPU处于用户态时也只能使用非特权指令。
★★★中断与异常
中断:
中断也被称为外中断,是指CPU执行指令外部的事件。
异常也被称为内中断,是指CPU执行指令内部的事件。
中断和异常的分类:
外中断可分为可屏蔽中断和不可屏蔽中断。
异常分为故障,自陷和终止。
中断和异常的处理过程:
当CPU在执行用户程序的第i条指令时检测到一个异常事件,或者发现了一个中断请求信号,这是CPU打断当前的用户程序,然后转到相应的中断或异常处理程序中去执行。若中断或者异常处理程序能够解决相应的问题,则在中断或者异常处理程序最后,通过执行中断和异常返回指令,回到被打断的用户程序的下一条指令(i+1)条指令继续执行,若发现是不可修复的错误就终止用户程序。
原语:
所谓原语就是由若干条指令组成的,用于完成某一特定功能的过程,它是有原子性的,也就是说原语在执行过程中不能被中断,只能一气呵成。原子操作在内核态下执行,并且常驻内存。
1.6系统调用:
所谓的系统调用是指用户在程序中调用操作系统所提供的一些子功能,系统调用可视为特殊的公共子程序。
系统调用按功能可分为:
由于系统调用对整个系统的影响非常的大,因此需要由内核程序负责完成,要运行在内核态,用户可以通过陷入指令(trap/访管指令)来发起系统调用,即是将CPU的使用权交给操作系统的内核程序(CPU的状态从用户态转变为内核态)。让内核程序对系统调用请求进行相应得处理,处理完成后将CPU得使用权还给用户程序(即由内核态转变为用户态)。目的就是让用户程序不能执行对系统影响大得操作。必须通过系统调用得方式请求操作系统代为执行。增加了安全性。
列举从用户态转变到内核态的例子:
(1).用户程序要求操作系统的服务,即系统调用。
(2).发生一次中断。
(3).用户程序产生了一个错误状态。
(4).用户程序企图执行一条特权指令。
(5).从核心态转向用户态由一条指令实现,这条指令也是特权指令(因为是在内核态下执行的指令),一般是中断返回指令。
访管指令是将用户态转向核心态,因此它是在用户态下使用的指令,不是特权指令。
1.7操作系统的结构(新知识点):
大内核: 所有的系统功能都放在了内核里。这也保证了状态切换的次数减少,性能增加内核内部的各个程序可以互相调用。缺点:所有的程序都放在内核导致维护起来很难,并且当一个程序出现错误,可能就导致整个内核出现错误。
微内核: 只把最核心的功能放入内核,优点:内核易于维护,可靠性高,一个功能出错不会影响内核。缺点:性能低,需要频繁的进行状态切换。
1.8虚拟机:
虚拟机:使用虚拟化技术将一台物理机虚拟化为多台虚拟机器,每台虚拟机都可以独立运行1个操作系统。
二者对比:
第二类的虚拟机就是我们常用的Vmware,我们将虚拟机安装在我们的宿主机上,所有的资源都依靠于宿主机,这也就意味着性能会差,但是可迁移性非常好,我们只需要将我们的镜像文件ISO拷贝到另一台电脑上即可。
第一章知识点补充:
1.操作系统管理计算机的硬件资源和软件资源。
2.系统调用是操作系统为应用程序使用内核功能所提供的接口。
3.操作系统为编程人员提供的接口是程序接口,即系统调用。
4.用户不能直接操作硬件资源,只能通过系统调用的方式来请求内核为其提供服务,间接的去访问资源。
5.操作系统不能直接用来编程,配置操作系统的机器与裸机相比,资源利用率提高了。
6.操作系统的接口分为 命令接口 和 程序接口(系统调用)。
7.计算机开机后,操作系统被加载到RAM中。
8.实时操作系统必须在被控制对象的规定时间内来处理来自外部的请求。
9.计算机通过硬件中断机制完成了由用户态转变为核心态。
10.内核包含四个部分:时钟管理,中断机制,原语和广义指令。输入和输出涉及中断操作,也属于内核。
11.关中断属于特权指令。
12.微内核结构中,内核的功能越少越稳定。支持分布式系统。windows属于宏内核
第二章:进程与线程
2.1进程:
进程的概念:
进程是程序的一次执行过程,是一个程序及其数据在处理机上顺序执行时所发生的活动,是具有独立功能的程序在一个数据集合上运行的过程,他是系统进行资源分配和调度的一个独立单位。
重点:
(1).进程是动态的,具有过程性。
(2).PCB是进程存在的唯一标识。
(3).进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
进程的特征: (1)动态性,(2),并发性(3),异步性(4),独立性
2.2进程的状态与转换:
五种状态以及五种状态之间的转换:
运行态: 进程正在处理机上运行。
就绪态: 进程获得了除处理机之外的其他所有资源。一旦得到处理机就可以开始运行。
阻塞态: 进程正在等待某一事件而暂停运行。
注意: 一个进程从运行态转变到阻塞态是主动的行为,从阻塞态转变为就绪态是被动的。
2.3进程的组成:
PCB(最核心的进程控制块,是进程存在的唯一标识) + 程序段 + 数据段
2.4进程控制:
进程的创建: 终端用户登录系统,作业调度,系统提供服务都会引起进程的创建。
进程的终止: (1).正常结束(2).异常结束,表示进程在运行时,发生了某种异常事件导致无法继续运行(3).外界干预
进程的阻塞和唤醒
2.5进程通信:
进程通信是指进程之间的信息交换,其中我们所知道的PV操作则是低级通信方式,而高级通信方式是 共享内存,消息传递,管道通信。
2.6线程:
在引入线程后,进程作为除CPU外的系统资源的分配单元,而线程则作为处理机的分配单元 ,是程序执行流的最小单位。
引入进程的目的是更好的使多道程序并发执行,提高资源利用率和系统吞吐量。引入线程则是减少程序在并发执行时所付出的时空开销,提高操作系统的并发性能。
2.7线程和进程的比较:
(1).调度:
拥有资源和独立调度的基本单位都是进程,进程之间的切换开销很大。而线程独立调度的基本单位,线程之间切换的开销远小于进程。同时线程之间的切换不会影响进程。进程之间的切换会影响线程。
(2).并发性:
进程之间可以并发,一个进程中的多个线程也可以并发,不同进程中的线程也可以并发。
(3).独立性:
每个进程都拥有独立的地址空间和资源。不允许其他进程访问,线程共享进程的地址空间和资源,并且某个进程中的线程对其他进程是不可见的。
(4).系统开销:
创建和撤销进程的开销要远大于创建和撤销线程的开销。
(5).支持多处理机:
进程只能运行在一个处理机上,对于多线程进程可以在多个处理机上运行。
2.8线程的实现:
用户级线程:
内核级线程:
由图可以看除内核级线程是放在操作系统中的,因此是由操作系统进行管理的。线程的调度,切换等工作都是由内核负责的,因此内核级线程的切换必须在内核态下完成。每个线程都有自己的线程控制块(TCB),同时内核级线程是操作系统能够看到的线程。
优点: 当一个线程被阻塞时,别的线程还能正常运行,并发能力强,多线程可以在多核处理机上并行执行。
缺点: 一个用户级线程会占用多个内核级线程,线程的切换需要切换到内核态,需要状态转换,开销大。
2.9一对一模型:
2.10多对一模型:
2.11多对多模型:
注意: 内核级线程要小于用户级线程的。
2.12线程的状态转换:
线程的状态转换图和进程类似,我们只需要关注三状态转换(就绪,运行,阻塞)
2.13进程调度:
进程调度的时机:
-
当前运行的进程主动放弃处理机:
进程正常的运行完终止。
进程运行过程中发生异常终止。
进程主动请求进入阻塞。
-
当前运行的进程被动放弃处理机:
在运行过程中来了一个优先级更高的进程。
分配给进程的时间片用完。
有更紧急的事情要处理(I/O)。
进程调度的方式:
抢占式和非抢占式
重点知识:
进程在操作系统内核程序临界区是不能进行调度和切换的。
进程处于临界区时是可以进行处理机调度的,为了防止某个进程一直等待临界资源,占用CPU。
2.14调度算法:
重要的几个公式:
(1).先来先服务(FCFS)(非抢占式):
按照作业到达的先后顺序进行调度:
用于作业调度和
相关文章:

操作系统知识点总结
操作系统知识点总结: 第一章:操作系统概述 1.1操作系统的概念: 操作系统是一种系统软件,与其他系统软件和应用软件不同,它有自己的基本特征。它的四大基本特征也就是并发,共享,虚拟,异步。 1.2操作系统的特征(四大基本特征): 并发: 这里我们要理解什么是并发,什么是…...
(C++) 多线程之生产者消费者问题
文章目录 前言CodeCode运行效果 分解讲解main()class ProducerConsumerProblemproduce()consumer() END 前言 生产者消费者问题_百度百科 (baidu.com) 生产者消费者问题 (英语:Producer-consumer problem),也称有限缓冲问题&…...

【C语言学习】逃逸字符(转义字符)
逃逸字符(转义字符) 1.\" 双引号 \" printf("请分别输入身高的英尺和英寸,""如输入\"5 7\"表示5英尺7英寸:");这里的"\就是双引号的作用,因为在双引号里面直接用双引号无意义&…...
开发手册|Java后端开发规范重点条目整理
Ps:部分熟知的开发规范未收录在本文中! 一、编程规约 1.1 命名风格 代码中的命名严禁使用拼音与英文混合的方式 alibaba / taobao / youku / hangzhou 等国际通用的名称可视同英文 类名使用大驼峰的形式命名,例如 UpperCameCase 方法、参数…...

c++11 标准模板(STL)(std::basic_ofstream)(二)
定义于头文件 <fstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_ifstream : public std::basic_istream<CharT, Traits> 类模板 basic_ifstream 实现文件流上的高层输入操作。它将 std::basic_istrea…...

k8s概念-pv和pvc
回到目录 kubernetes存储卷的分类太丰富了,每种类型都要写相应的接口与参数才行,这就让维护与管理难度加大。 persistenvolume(PV) 是配置好的一段存储(可以是任意类型的存储卷) 也就是说将网络存储共享出来,配置定义成PV。 PersistentVolumeClaim(PVC)是用户pod使…...

python算法指南程序员经典,python算法教程pdf百度云
大家好,小编来为大家解答以下问题,你也能看懂的python算法书 pdf,python算法教程这本书怎么样,现在让我们一起来看看吧! 给大家带来的一篇关于算法相关的电子书资源,介绍了关于算法、详解、算法基础方面的内…...
微服务使用步骤
Maven的依赖冲突解决方案: 路径最短原则配置优先原则破坏规则则使用排除 SpringBoot场景启动器starter的开发流程 c3p0-spring-boot-starter自定义场景启动器test-c3p0调用自定义场景启动器SpringBoot自动装配SpringBoot应用启动原理nacos服务治理 安装 启动bin/s…...

Ubuntu 23.04 作为系统盘的体验和使用感受
1.为啥主系统装了Ubuntu 由于公司发电脑了,我自己也有一台台式电脑,然后也想去折腾一下Ubuntu,就把自己的笔记本装成Ubuntu系统了, 我使用的是23.04的桌面版,带图形化界面的。我准备换回Windows 11了(因为…...

百分点科技跻身中国智慧应急人工智能解决方案市场前三
近日, 全球领先的IT市场研究和咨询公司IDC发布了《中国智慧应急解决方案市场份额,2022》报告,数据显示,2022年中国智慧应急整体市场为104亿元人民币。其中,智慧应急人工智能解决方案子市场备受关注,百分点科…...

vscode如何退出/切换 github 账号
退出/切换 github 账号 左下角点击头像按钮,选择注销,然后再重新登录...

maven发布到中央仓库
创建账号 https://issues.sonatype.org 【第二步】登录申请新项目 右上角点击Create,Project选择第一项,有的时候带不出来第二个New Project,可以再选一次Project的选项。...
C#IEnumberable<>
在C#中,IEnumerable<>是一个泛型接口,用于表示一个可枚举的集合。它定义了一个用于遍历集合元素的枚举器(enumerator)。通过实现IEnumerable<>接口,我们可以使用foreach语句或LINQ查询等方式来迭代访问集合…...

Flink非对齐checkpoint原理(Flink Unaligned Checkpoint)
Flink非对齐checkpoint原理(Flink Unaligned Checkpoint) 为什么提出Unaligned Checkpoint(UC)? 因为反压严重时会导致Checkpoint失败,可能导致如下问题 恢复时间长-服务效率低非幂等和非事务会导致数据…...
Linux crontab命令:循环执行定时任务(详解)
crontab 命令的基本格式如下: [rootlocalhost ~]# crontab [选项] [file] file 指的是命令文件的名字,表示将 file 作为 crontab 的任务列表文件并载入 crontab,若在命令行中未指定文件名,则此命令将接受标准输入(键盘…...

Linux系统jenkins+newman+postman持续集成环境搭建
1、首先安装nodejs 下载nodejs压缩包,下载地址:nodejs官网下载 建议不用下载最新的,我这里用的是推荐的v12.18版本 下载和解压命令 wget https://nodejs.org/dist/v12.18.3/node-v12.18.3-linux-x64.tar.xz解压安装包(记得没有z&…...

flutter:Future、Stream、RxDart
Future 在Flutter中,Future是Dart语言中的一个类,用于表示异步操作的结果。与Future相关的的重要关键字包括async和await。 async:这个关键字用于在方法或函数声明前添加,以指示该方法为异步方法。在异步方法中,执行…...
Jenkins安装、配置、自动化构建前(nodejs)后端(maven)项目
文章目录 0、Jenkins卸载安装1、Jenkins配置2、后台启动脚本startup.sh3、后台关闭脚本stop.sh4、实时数据启动脚本startup.sh5、实时数据关闭脚本stop.sh6、jenkins制定完任务后,点击立即构建,控制台报错(...无法生成父级目录)7、…...

【网络基础进阶之路】设计网络划分的实战详解
PS:本要求基于华为的eNSP模拟软件进行 具体要求: 完成步骤: 1、对192.168.1.0/24进行子网划分 2、对每一个路由器进行IP的配置 3、开始静态路由的书写,在写之前,我们可以先对每一个路由器写一条通向右边的缺省路由&…...

艺术二维码 API 申请及使用
艺术二维码是一种创新的技术产品,它将二维码与美观的背景图像相结合,创造出既实用又美观的作品。它们不仅具有传统二维码的功能性,能被智能设备快速扫描识别,还加入了艺术元素,增强了视觉吸引力和品牌识别度。其中&…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...