操作系统基础知识1

news2024/10/6 22:24:27

1、用户态和内核态的区别?
a、访问权限。用户态下,应用程序只能访问受限的的资源和执行受限的程序;而在内核态下,操作系统具有完全的访问权限,可以访问系统的所有资源和执行所有操作;
b、CPU指令集。用户态下,用户只能执行非特权指令,而内核态下,CPU可以执行特权指令,例如访问设备、修改系统状态;
c、中断和异常处理。用户态下,发生中断或者异常时,操作系统会进行中断处理,京控制权转移到内核态下的中断处理程序。内核态下,操作系统可以直接处理中断和异常,并进行相应的处理操作;
d、内存保护。用户态下,应用程序只能访问自己的内存空间,无法访问其他应用程序的内存空间和操作系统的内存空间;内核态下,操作系统可以访问所有的内存空间,包括应用程序的内存空间;
e、安全性。用户态的应用程序受到限制,操作系统系统可以对其进行隔离和保护,防止恶意更改代码对系统造成伤害;内核态下的操作系统具有更高的权限,需要对其进行严格的安全管理,防止非法访问和恶意操作。
2、进程调度算法有哪些?
a、先来先服务:每次从就绪队列中选择最先进入队列的进程,然后一直执行,直到进程退出或者阻塞,才会去选择下一个进程,适用于CPU繁忙型作业的系统,不适用与I/O繁忙型作业的系统
b、最短作业优先调度:优先选择运行时间最短的进程来运行,提高系统吞吐量;
c、高响应比优先调度算法:每次进行进程调度时。先计算响应比。把响应比优先级最高的进程投入运行。
优先权=(等待时间+要求服务时间)/(要求服务时间)
d、时间片轮转调度算法:每个进程被分配一个时间片,在该时间段内执行对应的进程。时间片太短会导致过多的上下文切换,降低CPU效率;时间片太长可能会导致短作业进程的的响应时间边长
e、最高优先级调度算法:从就绪队列中选择最高优先级的进程进行运行。
静态优先级:创建进程时,已经确立好优先级,在整个运行时间内优先级都不会改变。
动态优先级:根据进程的动态变化调整优先级,比如随着进程运行时间增加,则降低其优先级,随着进程等待时间增加,则升高其优先级。随着时间推移增加等待进程的优先级。
非抢占式:当就绪队列中出现优先级高的进程,运行完当前进程,再选择优先级高的进程。
抢占式:当就绪队列中出现优先级更高的进程,当前进程挂起,调度优先级更高的进程运行。
缺点:低优先级的进程永远不会被执行。
f、多级反馈队列:是优先级和时间片算法的融合。
(1)、设置多级就绪队列,各级优先队列优先级从高到底,时间片从小到大;
(2)、新进程到达时先进入第1级队列末尾。按先来新服务的原则排队等待被调度。如果第1mei级队列规定的时间片没运行完成,则将其转入到第2级队列的末尾,以此类推,直到完成;
(3)、当优先级高的队列为空时,才调用优先级低的队列中的任务执行,如果Sn队列中的进程执行时,S1-n中进入新的进程,则停止当前正在执行的进程,并将其放到原队列的末尾,接着执行高优先级的进程。

在这里插入图片描述
3、进程间的通信?
管道、消息队列、共享内存、套接字、信号量。
4、线程间的通信?
互斥量、信号量、条件变量、读写锁。
5、IO多路复用?
select、poll、epoll
6、select、poll、epoll的区别?
select实现多路复用的方式是,将已连接的socket都放在一个文件描述符集合中,然后调用select函数将文件描述符集合拷贝到内核里,让内核来检查是否由网络事件的发生,遍历所有的文件描述符,检查到有事件产生后,将socket标记为可读或可写,然后把文件描述符拷贝到用户态,用户态还需要遍历找到可读或可写的socket,再进行处理。
遍历2次文件描述符,拷贝两次文件描述符。
select使用BitsMap,表示文件描述符集合,linux下,内核中的FD_SETSIZE默认最大值为1024,只能监听0-1023的文件描述符。
poll不再使用BitsMap来存储所关注的文件描述符,使用链表来组织关注的文件描述符,同时监听的socket可以变得更多。
epoll在内核中使用红黑树来跟踪进程所有待检测的文件描述符,把需要监控的socket通过epoll_ctl()函数加入到内核中的红黑树里。每次操作时只需要传入一个待检测的socket,减少了用户态和内核态的数据拷贝和内存分配。
epoll使用事件驱动机制,内核里维护了一个链表来记录就绪事件,当某个socket有事件发生时,通过回调函数内核会将其加入到就绪链表中,用户调用epoll_wait(),只会返回这个就绪链表,不需要扫描整个文件描述符,提高效率。
7、为什么要有虚拟内存?
1、进程隔离。如果没有虚拟内存的话,在内存中同时运行两个程序会发生冲突,造成系统崩溃。例如在0x1024位置时,进程a写入x=100,进程b写入x=1000,这时候就会出现问题。
2、地址空间扩展。缓解物理内存不足的压力,将硬盘空间作为内存扩展,增加计算机可用的内存量。
8、进程和线程的区别?
线程是CPU调度的最小单位,进程是操作系统资源分配的最小单位。
进程的调度是操作系统内核进行的,切换进程需要进行上下文切换,设计用户态和内核态之间的切换,开销相对较大。线程的调度是在用户程序中完成的,切换线程可以在用户态下快速切换,减少系统调用开销。
通信方式不同。
一个线程挂掉,进程中的全部线程都要挂掉。一个进程挂掉不影响其他进程。
进程拥有自己的内存空间,线程共享进程的内存空间。
9、进程、线程、协程对比?
协程只是一个特殊的函数。
一个进程可以包含多个线程,一个线程可以包含多个协程。
进程的切换者是操作系统,切换时机是根据操作系统自己定义的切换策略来决定的。用户是无感的,进程的切换内容包括页全局目录、内核栈和硬件上下文,切换内容被保存在内存中。进程的切换过程是用户态–内核态–用户态,切换效率低;
线程的切换者是操作系统,切换时机是根据操作系统自己定义的切换策略来决定的,用户是无感的,线程的切换内容包括内核栈和硬件上下文。线程切换内容被保存在内核栈中,线程切换过程是用户态–内核态–用户态;
协程的切换者是用户,切换时机是用户自己的程序决定的。协程的切换内容是硬件上下文,切换内容被保存在自己的变量中,协程的切换过程只有用户态,切换效率高。

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

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

相关文章

拍摄中的信息表达者---镜头语言!

炫我科技在影视动画行业为众多影片提供了渲染支持。涉及到的业务有云渲染系统、实时渲染系统、XR虚拟拍摄系统,强势赋能元宇宙。在影视动画创作过程中提供了多种解决方案,例如集群渲染、私有云渲染解决方案、虚拟拍摄等。 今天我们来聊一些不一样的东西…

学习pytorch15 优化器

优化器 官网如何构造一个优化器优化器的step方法coderunning log出现下面问题如何做反向优化? 官网 https://pytorch.org/docs/stable/optim.html 提问:优化器是什么 要优化什么 优化能干什么 优化是为了解决什么问题 优化模型参数 如何构造一个优化器…

【Proteus仿真】【51单片机】水质监测报警系统设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器,使用按键、LED、蜂鸣器、LCD1602、PCF8591 ADC、PH传感器、浑浊度传感器、DS18B20温度传感器、继电器模块等。 主要功能: 系统运行后&…

链表经典面试题之一讲

什么是链表? 链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。 今天给大家分享一道经典的单链表面试题 力扣题目——反转链表https://leetcode.cn/problems/reverse-linked-list/ 只给了头…

Wsl2 Ubuntu在不安装Docker Desktop情况下使用Docker

目录 1. 前提条件 2.安装Distrod 3. 常见问题 3.1.docker compose 问题无法使用问题 3.1. docker-compose up报错 参考文档 1. 前提条件 win10 WSL2 Ubuntu(截止202308最新版本是20.04.xx) 有不少的博客都是建议直接安装docker desktop,这样无论在windows…

实体属性映射框架mapstruct

1. 框架介绍 mapstruct框架是一种实体类间的映射框架,能够通过JAVA注解的形式将一个实体类的属性安全的赋值给另一个实体类。通过一系列注解可以定义实体类属性之间的映射关系,mapstruct会在编译期间生成映射实现类,而非通过反射的方式进行实…

Dcoker学习笔记(一)

Dcoker学习笔记一 一、 初识Docker1.1 简介1.2 虚拟机和docker的区别1.3 Docker架构1.4 安装Docker(Linux) 二、 Dcoker基本操作2.1 镜像操作2.2 容器操作练习 2.3 数据卷volume(容器数据管理)简介数据卷语法数据卷挂载 2.4 自定义…

【Git】Git基础命令操作速记

【Git】Git基础命令操作速记 文章目录 【Git】Git基础命令操作速记1. 初始化1.1 设置用户名和邮箱1.2 初始化仓库 2. 基础命令2.1 add和commit2.2 reset2.3 查看日志2.4 删除/找回本地仓库文件2.5 找回暂存区文件2.6 diff命令(找不同) 3. 分支命令3.1 查看分支3.2 创建分支3.3 …

深度学习之基于YoloV5的火灾检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 火灾检测系统基于YoloV5的介绍 火灾检测是一项重要的安全任务,它旨在及时发现和报警火灾风险。基于深度…

postgresql|数据库|提升查询性能的物化视图解析

前言: 我们一般认为数字的世界是一个虚拟的世界,OK,但我们其实有些需求是和现实世界一模一样的,比如,数据库尤其是关系型数据库,希望在使用的数据库能够更快(查询速度),…

《008.Springboot+vue之自习室选座系统》

[火]《008.Springbootvue之自习室选座系统》 项目简介 [1]本系统涉及到的技术主要如下: 推荐环境配置:DEA jdk1.8 Maven MySQL 前后端分离; 后台:SpringBootMybatisredis; 前台:vueElementUI; [2]功能模块展示: 前端…

云端生成式 AI – 基于 Amazon EKS 的 Stable Diffusion 图像生成方案

Stable Diffusion 是当下生成式 AI 领域最受欢迎的开源多模态语言-图像模型,由于其易用的接口和良好的使用体验,受到了开源社区和广大设计行业从业者的追捧。Stable Diffusion 模型版本正在快速迭代,并带动了各行各业的生产力变革。目前市场上…

vmware16.1.2安装 windows7后 VMVMware tools 灰色 需要手动安装操作详情

问题1: 问题描述: 在Windows7镜像安装完成后,安装"VMware Tools"时出现:安装程序无法继续,需要将操作系统更新到SP1.2 重新安装后也没办法解决。 证明问题没有出在操作系统上;那么&#xff0c…

RISC Zero的Bonsai证明服务

1. 引言 Bonsai为通用ZKP网络,其支持任意链、任意协议、以及任意应用,利用ZKP来扩容、隐私和互操作。Bonsai的目标是为每条链都提供无限计算的能力。 借助Bonsai,可仅需数天的开发,即可实现对以太坊、L1链、Cosmos app链、L2 ro…

Mybatis-Plus使用Wrapper自定义SQL

文章目录 准备工作Mybatis-Plus使用Wrapper自定义SQL注意事项目录结构如下所示domain层Controller层Service层ServiceImplMapper层UserMapper.xml 结果如下所示:单表查询条件构造器单表查询,Mybatis-Plus使用Wrapper自定义SQL联表查询不用,My…

Java进击框架:Spring-数据存取(七)

Java进击框架:Spring-数据存取(七) 前言事务管理声明式事务管理 DAO支持JDBC的数据访问使用JdbcTemplate控制数据库连接JDBC批处理操作封装 SQL 语句中的参数 使用R2DBC进行数据访问对象关系映射(ORM)数据访问HibernateJPA XML模式 前言 参考…

目标检测算法 - YOLOv1

文章目录 1. 作者简介2. 目标检测综述3. YOLOv1算法3.1 预测阶段3.2 预测阶段后处理3.3 训练阶段 YOLO的全称是you only look once,指只需要浏览一次就可以识别出图中的物体的类别和位置。 YOLO是目标检测模型。目标检测是计算机视觉中比较简单的任务,用…

10-26 maven配置

打开idea 打开setting 基于Idea创建idea项目 加载jar包:(一般需要自己去手动加入,本地仓库是没有的)

【HarmonyOS】HarmonyOS备案获取公钥和指纹

【关键字】 HarmonyOS应用、鸿蒙应用、元服务、应用备案 HarmonyOS应用在华为云等平台进行应用备案时,平台需要提供用公钥和签名指纹的信息,Android可以直接通过keystore或jks签名文件进行签名信息获取,HarmonyOS签名方式与Android不同&…

LangChain之关于RetrievalQA input_variables 的定义与使用

最近在使用LangChain来做一个LLMs和KBs结合的小Demo玩玩,也就是RAG(Retrieval Augmented Generation)。 这部分的内容其实在LangChain的官网已经给出了流程图。 我这里就直接偷懒了,准备对Webui的项目进行复刻练习,那么…