计组基础知识

news2024/12/23 7:20:36

操作系统的特征

并发
共享
虚拟
异步

操作系统的功能

1、资源分配,资源回收
硬件资源 CPU、内存、硬盘、I/O设备。
2、为应⽤程序提供服务
操作系统将硬件资源的操作封装起来,提供相对统⼀的接⼝(系统调⽤)供开发者调⽤。
3、管理应⽤程序
即控制进程的⽣命周期:进程开始时的环境配置和资源分配、进程结束后的资源回收、进程调度等。
4、操作系统内核的功能
(1)进程调度能⼒: 管理进程、线程,决定哪个进程、线程使⽤CPU。
(2)内存管理能⼒: 决定内存的分配和回收。
(3)硬件通信能⼒: 管理硬件,为进程和硬件之间提供通信。
(4)系统调⽤能⼒: 为应用提供系统调⽤。

⽤户态和核⼼态

在什么场景下,会发⽣内核态和⽤户态的切换
系统调⽤:当⽤户程序需要请求操作系统提供的服务时,会通过系统调⽤进⼊内核态。
异常:当程序执⾏过程中出现错误或异常情况时,CPU会⾃动切换到内核态,以便操作系统能够处理这些异常
中断:外部设备(如键盘、⿏标、磁盘等)产⽣的中断信号会使CPU从⽤户态切换到内核态。操作系统会处理
这些中断,执⾏相应的中断处理程序,然后再将CPU切换回⽤户态。

 

进程和线程

Linux内核是不区分进程和线程
‌进程‌:是一个正在执行的程序实例,它拥有自己独立的地址空间、内存、数据和文件描述符。
线程‌:是进程内的执行单元,多个线程共享相同的内存空间和系统资源。
进程:资源分配最小单位。
线程:系统调度最小单位。


资源:进程是系统中拥有资源的基本单位,⽽线程不拥有系统资源,属于同一进程的线程共享资源。
调度:线程切换的代价远低于进程。
并发:
独⽴性:每个进程都拥有独⽴的地址空间和资源、除了共享全局变量,不允许其他进程访问。同⼀进程中的不同线程是为了提⾼并发性以及进⾏相互之间的合作⽽创建的,它们共享进程的地址空间和资源。
系统开销:线程所需要的开销⽐进程⼩

 进程控制块

系统通过 进程控制块PCB 来描述进程的基本情况和运⾏状态,就进⽽控制和管理进程,它是进程存在的唯⼀标识, 其包括以下信息:

1. 进程描述信息:进程标识符、⽤户标识符 
2. 进程控制和管理信息:进程当前状态,进程优先级 
3. 进程资源分配清单:有关内存地址空间或虚拟地址空间的信息,所打开⽂件的列表和所使⽤的I/O设备信息。 
4. CPU相关信息: 当进程切换时,CPU寄存器的值都被保存在相应PCB中,以便CPU重新执⾏该进程时能从断 点处继续执⾏; 

并发与并⾏

1. 单个处理核在很短时间内分别执⾏多个进程,称为并发
2. 多个处理核同时执⾏多个进程称为并⾏

进程的状态切换

运⾏态: 该时刻进程占⽤CPU
就绪态:可运⾏,由于其他进程处于运⾏状态⽽暂时停⽌运⾏
阻塞态:该进程正在等待某⼀事件发⽣(如等待输⼊/输出操作的完成)⽽暂时停⽌运⾏

挂起状态可以分为两种:
阻塞挂起状态:进程在外存(硬盘)并等待某个事件的出现;
就绪挂起状态:进程在外存(硬盘),但只要进⼊内存,即刻⽴刻运⾏;

 进程的上下⽂切换

⼀个进程切换到另⼀个进程运⾏,称为进程的上下⽂切换, 进程的上下⽂切换包括虚拟内存、栈、全局变量 等⽤户空间的资源,还包括了内核堆栈、寄存器等内核空间的资源。 

进程的时间⽚耗尽
阻塞等待
⾼优先级进程运⾏
中断处理
进程通过睡眠函数 sleep 这样的⽅法将⾃⼰主动挂起

 进程的创建

为新进程分配⼀个独特的进程控制块(PCB)
为新进程分配所需要的资源,⽐如内存、CPU时间
初始化进程控制块(PCB)的各种字段,包括状态、优先级、寄存器初始值等。
将其状态设置为就绪状态,使其能够被调度执⾏。进程进⼊就绪队列,等待分配处理器时间。

7、进程的终⽌

根据标识符,查找需要终⽌的进程的 PCB; 
如果进程处于执⾏状态,则⽴即终⽌该进程的执⾏,然后将处理器资源分配给其他进程; 
如果其还有⼦进程,则应将该进程的⼦进程交给 1 号进程接管; 
将该进程所拥有的全部资源都归还给操作系统; 将其从 PCB 所在队列中删除;

8、进程的阻塞

找到被阻塞进程的标识符对应的PCB 如果该进程为运⾏状态,则保护其现场,将其状态转为阻塞状态,停⽌运⾏; 
将该 PCB 插⼊到等待队列中,将处理机资源调度给其他就绪进程 

9、进程的唤醒

在该事件的阻塞队列中找到相应进程的 PCB; 
将其从阻塞队列中移出,并置其状态为就绪状态; 
把该 PCB 插⼊到就绪队列中,等待调度程序调度;

进程调度

进程通信

进程之间要通信必须通过内核。

 

共享存储
消息队列
管道
信号量
信号
Socket通信

守护进程

守护进程是指在后台运⾏的,没有控制终端与它相连的进程。它独⽴于控制终端,周期性地执⾏某种任务。

僵⼫进程

⼀个进程使⽤fork创建⼦进程,如果⼦进程退出,⽽⽗进程并没有调⽤wait或waitpid获取⼦进程
的状态信息,那么⼦进程的进程描述符仍然保存在系统中。这种进程称之为僵⼫进程。

孤⼉进程

⼀个⽗进程退出,⽽它的⼀个或多个⼦进程还在运⾏,那么那些⼦进程将成为孤⼉进程。孤⼉进程
将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集⼯作。

死锁

1、互斥
每个资源要么已经分配给⼀个进程,要么就是可⽤的
2、占有和等待
已经得到了某个资源的进程可以再请求新的资源
3、不可抢占
已经分配给⼀个进程的资源不能强制性地被抢占,它只能被占有它的进程显式地释放
4、环路等待
死锁发⽣时,系统中⼀定有由两个或两个以上的进程组成的⼀条环路,该环路中的每个进程都在等待着下⼀个进程
所占有的资源。 

处理⽅法

1、鸵⻦算法
把头埋在沙⼦⾥,假装根本没发⽣问题。
因为解决死锁问题的代价很⾼,因此鸵⻦算法这种不采取任务措施的⽅案会获得更⾼的性能。
当发⽣死锁时不会对⽤户造成多⼤影响,或发⽣死锁的概率很低,可以采⽤鸵⻦算法。
2、死锁检测与死锁恢复 

死锁预防

(1)破坏互斥条件
例如假脱机打印机技术允许若⼲个进程同时输出,唯⼀真正请求物理打印机的进程是打印机守护进程。
(2)破坏占有个等待条件
1. 规定所有进程在开始执⾏前请求所需要的全部资源。
2. 要求当⼀个进程请求资源时,先暂时释放其当前占⽤的所有资源,然后在尝试⼀次获得所需的全部资源。
(3)破坏不可抢占条件
1. 保证每⼀个进程在任何时刻只能占⽤⼀个资源,如果请求另⼀个资源必须先释放第⼀个资源
2. 将所有的资源统⼀编号,进程可以在任何时刻提出资源请求,但是所有请求必须按照资源编号的顺序(升序)提
出
(4)破坏环路等待 

死锁避免

(1)安全状态
如果没有死锁发⽣,并且即使所有进程突然请求对资源的最⼤需求,也仍然存在某种调度次序能够使得每⼀个进程
运⾏完毕,则称该状态是安全的。
(2)单个资源的银⾏家算法
⼀个⼩城镇的银⾏家,他向⼀群客户分别承诺了⼀定的贷款额度,算法要做的是判断对请求的满⾜是否会进⼊不安
全状态,如果是,就拒绝请求;否则予以分配。
(3)多个资源的银⾏家算法
检查⼀个状态是否安全的算法
1. 查找右边的矩阵是否存在⼀⾏⼩于等于向量 A。如果不存在这样的⾏,那么系统将会发⽣死锁,状态是不安全
的。
2. 假若找到这样⼀⾏,将该进程标记为终⽌,并将其已分配资源加到 A 中。
3. 重复以上两步,直到所有进程都标记为终⽌,则状态时安全的。

内存管理

虚拟内存<-->内存管理MMU<-->物理内存

⻚⾯置换算法

1、最佳⻚⾯置换算法(OPT)
置换在「未来」最⻓时间不访问的⻚⾯,实际系统中⽆法实现,因此作为实际算法效率衡量标准。
2、先进先出置换算法(FIFO)
将⻚⾯以队列形式保存,先进⼊队列的⻚⾯先被置换进⼊磁盘。
3、最近最久未使⽤的置换算法(LRU)
根据⻚⾯未被访问时⻓⽤升序列表将⻚⾯排列,每次将最久未被使⽤⻚⾯置换出去。
4、时钟⻚⾯置换算法
把所有的⻚⾯都保存在⼀个类似钟⾯的「环形链表」中,⻚⾯包含⼀个访问位。
当发⽣缺⻚中断时,顺时针遍历⻚⾯,如果访问位为1,将其改为0,继续遍历,直到访问到访问位为0⻚⾯,进⾏
置换。

分段

1、纯分段
分段和分⻚本质上是不同的,⻚⾯是定⻓的⽽段不是。
2、分段和分⻚结合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2119394.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis 集群会有写操作丢失吗?为什么?

大家好&#xff0c;我是锋哥。今天分享关于 【Redis 集群会有写操作丢失吗&#xff1f;为什么&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; Redis 集群会有写操作丢失吗&#xff1f;为什么&#xff1f; Redis 并不能保证数据的强一致性&#xff0c;这意味这在…

Qt_概述

目录 1、图形用户界面 2、客户端开发 3、什么是界面 4、Qt的发展史 5、Qt支持的平台 6、Qt的版本 7、Qt的优点 8、Qt的应用场景 小结 前言&#xff1a; Qt是一个应用程序开发框架&#xff0c;他具有跨平台性质&#xff0c;主要使用C语言进行编程&#xff0c;Qt的开发…

透视表支持自定义聚合公式,新增字体管理功能,DataEase开源BI工具v2.10 LTS版本发布

2024年9月9日&#xff0c;人人可用的开源BI工具DataEase正式发布v2.10 LTS&#xff08;Long Term Support&#xff09;版本。DataEase开源项目组将对v2.10 LTS版本提供长期支持&#xff0c;定期迭代发布小版本&#xff0c;持续进行问题修复更新并针对部分功能进行优化。欢迎广大…

数据结构第二周做题总结_顺序表

id:17 A. DS顺序表–类实现 题目描述 用C语言和类实现顺序表 属性包括&#xff1a;数组、实际长度、最大长度&#xff08;设定为1000&#xff09; 操作包括&#xff1a;创建、插入、删除、查找 类定义参考 输入 第1行先输入n表示有n个数据&#xff0c;即n是实际长度&am…

【软件测试】盒木进销存管理系统 需求说明书

目录 1 引言 2 项目概述 3 平台、角色和权限 3.1 Web端 4 Web端需求 4.1 登录/注册页面 4.1.1 业务描述 4.1.2 需求描述 4.1.3 行为人 4.1.4 UI页面 4.1.5 业务规则 4.2 首页 4.2.1 业务描述 4.2.2 需求描述 4.2.3 行为人 4.2.4 UI界面 4.2.5 业务规则 4.3报…

软件测试工程师面试题大全(附答案)

1、什么是兼容性测试? 答&#xff1a;兼容性测试是检查软件在不同软件平台&#xff0c;硬件平台上是否可以正常运行的测试。主要查看软件在不同操作系统、浏览器、数据库中运行是否正常。 2、你能不能说下你3-5年的职业规划? 答&#xff1a;首先&#xff0c;要巩固自己的测…

电脑怎么切换IP地址 手机如何更改ip地址

深度IP转换器是一款专业的网络工具&#xff0c;旨在帮助用户轻松切换IP地址&#xff0c;保护个人隐私和网络安全。以下是使用深度IP转换器切换IP地址的详细步骤&#xff1a; ‌下载与安装‌&#xff1a; 首先&#xff0c;您需要在官方网站或正规下载渠道下载深度IP转换器的最新…

自选择问题和处理效应模型

自选择问题和处理效应模型 DGP 注意&#xff1a; 这里的概率密度超过了1&#xff0c;这是正常的。概率密度的三原则&#xff0c;1是大于等于0&#xff1b;2是积分等于1&#xff1b;对于连续型随机变量&#xff0c;给定一个具体的x值&#xff0c;f(x)并不是该事件发生的概率。而…

感谢关注 Thanks for your attention

后端技术栈 前端技术栈 DevOps 运维技术栈 测试技术栈 开发工具 其他 汇总 一个基于websocket协议的分布式推送服务 ( https://github.com/webVueBlog/springboot-cloud-push )Mall-system-Java-Vue-Uni-app商城JAVA版&#xff0c;SpringBoot Maven Swagger Mybatis Plus R…

yarn create vite时报错error Error: EPERM: operation not permitted, mkdir

在构建项目的前端脚手架时&#xff0c;窗口出现了该错误&#xff0c;搜索了大量解决方案后&#xff0c;以下是我的步骤 &#xff1a; 再cd到我的D盘项目路径位置 再次运行yarn create vite 算了&#xff0c;换npm搞&#xff1a;npm create vitelatest 出现以下报错 我的解…

网络编程day04(UDP、Linux IO 模型)

目录 【1】UDP 1》通信流程 2》函数接口 1> recvfrom 2> sendto 3》代码展示 1> 服务器代码 2> 客户端代码 【2】Linux IO 模型 场景假设一 1》阻塞式IO&#xff1a;最常见、效率低、不耗费CPU 2》 非阻塞 IO&#xff1a;轮询、耗费CPU&#xff0c;可以处…

【C++ 面试 - 新特性】每日 3 题(三)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

RPKI应急管控网络拓扑搭建

应急管控网络拓扑搭建 一、网络拓扑图 二、拓扑配置 1.资源库批量导入roas 在rpki.qcl.edu.cn服务器上的/usr/local/rpki/目录下执行脚本 sh roa_get.sh add#!/bin/dash# TODO Aadd Rremove start10000 sum254 run(){for i in seq 1 20dofor j in seq 1 250doas_numberexpr…

正点原子阿尔法ARM开发板-IMX6ULL(三)——汇编LED驱动实验-上

文章目录 一、原理分析1.1 对于IMX6ULL的IO初始化1.2 IO的复用&#xff08;MUX&#xff09;1.3 电气属性寄存器&#xff08;PAD&#xff09;1.3.1 SRE(bit0)1.3.2 DSE(bit5:3)1.3.3 SPEED(bit7:6)1.3.4 ODE(bit11)1.3.5 PKE(bit12)1.3.6 PUE(bit13)1.3.7 PUS(bit15:14)1.3.8 HY…

6.5椒盐噪声

在OpenCV中联合C给一张图片加上椒盐噪声&#xff08;Salt and Pepper Noise&#xff09;可以通过随机选择像素点并将其置为黑色&#xff08;0&#xff09;或白色&#xff08;255&#xff09;来实现。椒盐噪声是一种随机噪声&#xff0c;通常表现为图像中的孤立黑点&#xff08;…

Windows环境下 VS2022 编译 LAME 源码

LAME LAME 是一个非常流行的开源 MP3 编码器库&#xff0c;它的全称是 “LAME Ain’t an MP3 Encoder”&#xff0c;这是一个带有讽刺意味的名字&#xff0c;因为 LAME 实际上是一个功能强大的 MP3 编码器。LAME 的开发始于 1998 年&#xff0c;目的是创建一个开放源代码的库&a…

AIPaperGPT写论文靠谱吗?

AIPaperGPT&#xff0c;论文写作神器~ https://www.aipapergpt.com/ 在信息爆炸的今天&#xff0c;学术写作的挑战日益增加&#xff0c;而AIPaperGPT作为一款旨在提升写作效率的工具&#xff0c;其可靠性自然成为了用户关注的焦点。本文将从多个维度对AIPaperGPT进行全面评估&…

(java+Seleniums3)自动化测试实战

一.web自动化测试基础 密码的加密处理--是在前端JavaScript 二.selenium IDE录制 打开火狐浏览器&#xff1a; 点击 寻找更多附加组件 输入&#xff1a; 选择&#xff1a; 跳转&#xff1a;点击 安装完成&#xff0c;打开之后是这个页面&#xff1a; 录制一个新的测试用例在一个…

黑马点评17——多级缓存-Lua语法

文章目录 Lua语法初始Lua变量和循环条件控制、函数 变量和循环函数和条件控制 Lua语法 初始Lua https://www.lua.org/ 魔兽的一些插件就是用lua开发的。 centOs已经装好了lua&#xff0c;直接用~ 变量和循环 条件控制、函数 变量和循环 函数和条件控制

python项目无法启动?在终端运行 manage.py runserver 8000 没反应该怎么解决

运行 manage.py runserver 8000 没反应&#xff0c;出现提示语句&#xff1a; 根据提示修改命令再次运行 .\manage.py runserver 8000 仍然没反应 解决办法&#xff1a; 1、添加当前目录到 PATH&#xff1a;临时将当前目录添加到 PATH 环境变量中。使用以下命令&#xff1a; …