快速体会操作系统常见基础概念

1 初识基本概念

1.1 操作系统

  • 一个软件程序;
  • 用于解决计算机多任务执行时的资源争抢问题;
  • 管理计算机中的各种资源,确保计算机正常完成各种工作(任务),解决多任务环境中任务的调度和资源分配等问题。

1.2 系统资源

计算机中含有的可提供给计算机执行某些工作的软硬件资源

1.3 任务

  • 计算机需要完成的某一工作
  • 空间或资源有限时,多个任务进行时可能会产生冲突

1.4 进程

计算机正在执行的某一工作

1.5 资源争抢

多任务执行时需要共享有限的资源

1.6 顺序执行

任务一个接一个执行

1.7 多任务并行

多个任务同时执行(宏观层面,实际 CPU 可能分时切换 )

1.8 任务优先级

按照任务类型和控制需求规定的任务执行优先程度


2 高级操作系统的一般特性

2.1 任务切换

满足一个任务的某个需求进而满足另一个任务的过程(不一定完成整个任务的切换)

2.2 多任务并行

系统资源足够充足时,计算机同时执行多个任务(逻辑上的并行,物理 CPU 可能分时 )的过程

2.3 任务优先级

  • 给每个任务分配的、表示任务重要性或进行频度的优先级值的大小所决定的各个任务执行的顺序。
  • 例如当某类资源有限,而需要进行使用一类资源的多个任务时,不同任务会根据其设定好的优先级值来分别进行(高优先级的任务先执行)。

2.4 操作系统的作用

此时操作系统要做的事情,就是管理好资源的合理分配,满足每个任务的执行需求,同时能够灵活的处理不同任务执行时产生的突发情况,根据不同任务的优先级来调整任务执行的顺序。


3 时间片轮转与上下文切换

当有多个任务需要执行时,操作系统需要保证计算机轮流执行各个任务,此时操作系统给每个任务执行分配的时间就是所谓的“时间片”。

3.1 时间片

  • 操作系统为执行各个任务所分配的一段固定时间
  • 比如计算机当前要执行任务1、任务2、任务3等多个任务,此时操作系统就会给每个任务分配一段固定的时间,如10ms,此时计算机就会先用10ms执行任务1、在使用10ms执行任务2、在使用10ms执行任务3,这样反复去执行。这里的10ms就是所谓的“时间片”,这种按照时间片轮流执行多个任务的过程相当于"时间片轮转"。

3.2 上下文切换

各个任务之间进行执行状态的切换过程称为 “上下文切换”。

简单理解为让 CPU 从执行任务 A 切换到执行任务 B 时,需要保存任务 A 的执行状态(寄存器、程序计数器等信息 ),加载任务 B 的执行状态,这个过程就是上下文切换。因为操作系统轮流让CPU执行不同任务时,很难在一个时间片内就完成某个任务,所以在执行任务A的时间片结束切换到任务B的时间片的这个状态时,就需要记住前一个任务执行到的位置(上下文保存),避免后面再次切换到任务A的时间片时丢失上次进度。


在计算机中,操作系统通过合理的时间片机制和上下文切换来调度管理多个任务,保障计算机资源清晰合理的分配。

当操作系统为每个任务分配的时间非常短时,操作系统会以很快的速度轮询让计算机执行每一个任务,比如 10ms 的时间片。此时在每个任务之间的切换就很难被察觉,所以计算机呈现给任务的用户反应就是 “同时” 在执行,因此对于每个任务来说,就会感觉操作系统一直在给自己服务一样。


4 操作系统与任务调度

在计算机中,多个任务并行的情况是非常常见的,此时就很容易产生资源争抢或者说冲突问题。比如当资源仅足够支撑一项任务执行时,存在两个任务都需要获取这份资源,此时这俩任务就会发生资源争抢。这时候,操作系统就需要管理这些任务,采取一些策略来解决资源争抢问题。

4.1 常见调度策略

  • 优先级分配
  • 时间片轮转
  • 根据不同场景业务需求,也可以两者结合进行。

4.2 优先级分配

操作系统根据不同任务的优先程度来分配资源。比如两个任务同时需要调用该资源时,操作系统会根据这俩任务的优先程度将资源优先分配给优先级高的一方。

4.3 时间片轮转

操作系统也可以通过分配时间片让多个任务公平地使用资源,避免一个任务长时间独占资源。

4.4 总结

操作系统通过对每个任务所代表的优先级以及使用时间片对资源合理的分配,保障每个任务所需要的资源得到满足,进而解决多任务并行时产生的资源争抢问题。


5 资源调度与资源争抢

对于单核 CPU(如早期的传统计算机、简单嵌入式设备 )、SMT32 等,其计算资源非常稀缺,MCU 只有一个算术逻辑单元 ALU(用于运算 )。此时若多任务并行,CPU 对 ALU 资源的调度就像一个 “资源竞争” 的场景。比如,我们需要在这个单片机上执行多个任务(任务 1、任务 2、任务 3 ),那么势必会出现各个任务对 CPU 资源的调度和争抢问题。

为了解决资源竞争等问题,我们可以给单片机加载一个操作系统,通过操作系统的一些(对 CPU )资源调度策略,来避免单片机(MCU )在多任务执行时产生的资源争抢冲突问题。

5.1 常见策略

  • 批处理:按照各个任务产生顺序依次去执行多个任务。如最初的DOS操作系统就是这样处理的多任务;
  • 优先级分配:操作系统设定一定的任务优先级规则,然后各个任务根据自身的优先级先后获取 CPU的ALU 资源,资源紧张时高优先级任务可 “抢占” 低优先级任务资源;
  • 时间片轮转:操作系统为各个任务合理分配时间片,如10ns,然后各个任务按照时间片轮流使用CPU的ALU资源。每一个任务的时间片使用完后,需要等待下一个自己的时间片到来后使用CPU资源。

5.2 总结

在单片机中,可以通过以上资源调度策略合理的管理和控制单片机的 CPU 资源,保障每个任务都能够顺利执行,避免资源的浪费和争抢。


6 中断系统

6.1 中断

CPU正在执行任务时产生的突发事件,需要CPU暂停当前任务,立刻响应和处理这一事件,当处理完突发事件后,CPU会回到原来任务执行时产生中断前的位置继续往后执行。

在计算机系统中,中断的加入使得CPU能够在执行任务的同时,及时响应和处理异常或突发事件(如键盘按键、硬件故障),提高系统的实时性和灵活性。


7 非实时操作系统

对于任务的管理没有严格的时间限制,各任务执行时间的提前、延迟或波动,不会对系统(软硬件或任务)功能的有效性或整体运行造成严重影响,即对任务的时间约束没有严格要求的操作系统。


8 实时操作系统

对于各个任务执行的起始和结束时间点有较为严格的约束,各个任务执行时间的提前、延迟或波动会导致系统(软硬件或任务)功能失效或危险后果,即需要保证CPU在特定时间内响应和完成特定任务的操作系统。

  • 软实时:对于 CPU 执行任务有特定的时间限制,但任务的某些波动导致整体的任务结果的延迟或失效不会造成极其严重后果(比如任务超时可能导致体验下降,但不影响系统安全 )
  • 硬实时:对于 CPU 执行的任务有极其严格的时间限制,任务执行时间的微小偏差都会导致系统失效或造成严重后果。比如在一些工业控制、航空航天场景中,任务延迟可能引发危险,常见的硬实时操作系如 FreeRTOS 实时操作系统。

笔者小白,能力有限,以上内容难免存在不足和纰漏,仅供参考,各位阅读时请带着批判性思维学习,遇到问题多查查。同时欢迎各位评论区批评指正。谢谢。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全-同形异义字攻击:眼见并非为实(附案例详解)

什么是同形异义字攻击?对人眼而言,一切看起来完全正常。但实际上,例如单词 Ηоmоgraph 并不完全等同于单词 Homograph。它们之间的差异非常细微,难以察觉。Ηоmоgraph 实际上包含了几个非拉丁字母。在本例中,我们将…

windows服务器 maven 配置环境变量,验证maven环境变量是否配置成功

前置条件:先确认对应版本的jdk已安装配置好,可使用java -version检测; 我使用的apache-maven-3.6.3是对应jdk1.8 1.找到系统变量配置窗口 以windows server2019为例,右键计算机属性, 高级系统设置–》环境变量–》系统变量2.新建M…

安装 docker compose v2版 笔记250731

安装 docker compose v2版 笔记250731 简述 v2版是插件形式 确认系统要求, 已安装 Docker Engine(版本 20.10.5 或更高) 安装方式可分为 apt 或 yum 安装 (能自动升级) apt install docker-compose-pluginyum install docker-compose-plugin 手动二…

PHP 5.5 Action Management with Parameters (English Version)

PHP 5.5 Action Management with Parameters (English Version) Here’s a PHP 5.5 compatible script that uses URL parameters instead of paths for all operations: <?php // Start session for persistent storage session_start();// Initialize the stored actio…

GR-3(4B) 技术报告--2025.7.23--字节跳动 Seed

0. 前言 前两天字节发布了GR-3&#xff0c;粗略的看了一下&#xff0c;在某些方面超过了SOTA pi0&#xff0c;虽然不开源&#xff0c;但是也可以来看一看。 官方项目页 1. GR-3模型 1.1 背景 在机器人研究领域&#xff0c;一直以来的目标就是打造能够帮助人类完成日常任务…

Linux网络编程:UDP 的echo server

目录 前言&#xff1a; 一、服务端的实现 1、创建socket套接字 2、绑定地址信息 3、执行启动程序 二、用户端的实现 总结&#xff1a; 前言&#xff1a; 大家好啊&#xff0c;前面我们介绍了一些在网络编程中的一些基本的概念知识。 今天我们就借着上节课提到的&#…

AI+金融,如何跨越大模型和场景鸿沟?

文&#xff5c;白 鸽编&#xff5c;王一粟当AI大模型已开始走向千行百业之时&#xff0c;备受看好的金融行业&#xff0c;却似乎陷入了落地瓶颈。打开手机银行想查下贷款额度&#xff0c;对着屏幕说了半天&#xff0c;AI客服却只回复 “请点击首页贷款按钮”&#xff1b;客户经…

深度解析:从零构建跨平台对象树管理系统(YongYong框架——QT对象树机制的现代化替代方案)

一、技术背景与核心价值 1.1 QT对象树的局限性 在Qt框架中&#xff0c;QObject通过对象树机制实现了革命性的对象管理&#xff1a; #mermaid-svg-SvqKmpFjg76R02oL {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Sv…

力扣46:全排列

力扣46:全排列题目思路代码题目 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 思路 看到所有可能首先想到的就是回溯。 回溯的结束条件也很好写&#xff0c;用数组的长度来判断即可。这道题的难点主要是如何进行判…

mac环境配置rust

rustup 是一个命令行工具&#xff0c;用于管理 Rust 编译器和相关工具链 sh 体验AI代码助手 代码解读复制代码curl --proto ‘https’ --tlsv1.2 -sSf https://sh.rustup.rs | sh使得 Rust 的安装在当前 shell 环境中生效 如果你使用的是 bash, zsh 或其他类似的 shell&#xf…

脚手架搭建React项目

脚手架搭建项目 1. 认识脚手架工具 1.1. 前端工程的复杂化 1.1.1. 如果只是开发几个小的demo程序&#xff0c;那么永远不要考虑一些复杂的问题&#xff1a; 比如目录结构如何组织划分&#xff1b;比如如何关键文件之间的相互依赖&#xff1b;比如管理第三方模块的依赖&#xff…

Golang 调试技巧:在 Goland 中查看 Beego 控制器接收的前端字段参数

&#x1f41b; Golang 调试技巧&#xff1a;在 Goland 中查看 Beego 控制器接收的前端字段参数 在使用 Beego 开发 Web 项目时&#xff0c;我们常常会在控制器中通过 c.GetString()、c.GetInt() 等方法获取前端页面传过来的字段值。而在调试过程中&#xff0c;如何在 Goland 中…

sqli-labs:Less-2关卡详细解析

1. 思路&#x1f680; 本关的SQL语句为&#xff1a; $sql"SELECT * FROM users WHERE id$id LIMIT 0,1";注入类型&#xff1a;数值型提示&#xff1a;参数id无需考虑闭合问题&#xff0c;相对简单 2. 手工注入步骤&#x1f3af; 我的地址栏是&#xff1a;http://l…

TRAE 软件使用攻略

摘要TRAE 是一款集成了人工智能技术的开发工具&#xff0c;旨在为开发者提供高效、智能的编程体验。它包括三个主要组件&#xff1a;TRAE IDE、TRAE SOLO 和 TRAE 插件。无论是编程新手还是经验丰富的开发者&#xff0c;都可以通过 TRAE 提高工作效率和代码质量。标题一&#x…

将开发的软件安装到手机:环境配置、android studio设置、命令行操作

将开发的软件安装到手机环境配置android studio4.1.2安装命令行操作环境配置 注意&#xff1a;所有的工具的版本都需要根据当下自己的软件需要的。 Node&#xff1a;14.16.0 &#xff08;如果安装了npm&#xff0c;可以使用npm进行当前使用node版本的更改&#xff09; &#x…

Jmeter 命令行压测、HTML 报告、Jenkins 配置目录

Jmeter 命令行压测 & 生成 HTML 测试报告 通常 Jmeter 的 GUI 模式仅用于调试&#xff0c;在实际的压测项目中&#xff0c;为了让压测机有更好的性能&#xff0c;多用 Jmeter 命令行来进行压测。 官方&#xff1a;Jmeter 最佳实践 同时&#xff0c;JMeter 也支持生成 HT…

记录几个SystemVerilog的语法——覆盖率

1. 前言 通常说的覆盖率有两种类型&#xff1a;code coverage(代码覆盖率)和functional coverage(功能覆盖率)。代码覆盖率是使用EDA工具自动从设计代码里提取出来的&#xff0c;功能覆盖率是用户指定的&#xff0c;用于衡量测试设计意图和功能进展。因此&#xff0c;功能覆盖…

深度学习基础—2

第一章、参数初始化 我们在构建网络之后&#xff0c;网络中的参数是需要初始化的。我们需要初始化的参数主要有权重和偏置&#xff0c;偏重一般初始化为 0 即可&#xff0c;而对权重的初始化则会更加重要&#xff0c;我们介绍在 PyTorch 中为神经网络进行初始化的方法。 1.1 常…

PyTorch深度学习快速入门学习总结(三)

现有网络模型的使用与调整 VGG — Torchvision 0.22 documentation VGG 模型是由牛津大学牛津大学&#xff08;Oxford University&#xff09;的 Visual Geometry Group 于 2014 年提出的卷积神经网络模型&#xff0c;在 ImageNet 图像分类挑战赛中表现优异&#xff0c;以其简…

是否需要买一个fpga开发板?

纠结要不要买个 FPGA 开发板&#xff1f;真心建议搞一块&#xff0c;尤其是想在数字电路、嵌入式领域扎根的同学&#xff0c;这玩意儿可不是可有可无的摆设。入门级的选择不少&#xff0c;全新的像 Cyclone IV、Artix 7 系列&#xff0c;几百块就能拿下&#xff0c;要是去二手平…