当前位置: 首页 > news >正文

操作系统 - 1. 绪论

目录

        • 操作系统基本概念
          • 概念
          • 特征
          • 功能
        • 操作系统的分类与发展
          • 手工操作
          • 单道批处理系统
          • 多道批处理系统
          • 分时系统
          • 实时系统
        • 操作系统的运行环境
          • CPU 运行模式
          • 中断和异常的处理
          • 系统调用
          • 程序的链接与装入
          • 程序运行时内存映像和地址空间
        • 操作系统的体系结构
        • 操作系统的引导

操作系统基本概念

概念

📌 操作系统是裸机上的第一层软件,是 对硬件功能的首次扩充。引入操作系统的目的是:提供一个用户与计算机系统之间的 接口;有效地 控制和管理 计算机系统中的各种 硬件和软件资源;合理地 组织 计算机系统的 工作流程

特征

1️⃣ 并发性
🔔 注意:
并行:同一时刻            并发:同一时间间隔
并发宏观上看起来是并行。

2️⃣ 共享性
🔔 注意:
❶ 并发和共享是操作系统两个最基本的特征,二者之间 互为存在条件
❷ 有两种共享方式:互斥共享、同时访问
3️⃣ 虚拟性
把一个物理上的实体变为若干个逻辑上的对应物。
时分复用技术:虚拟处理机技术、虚拟设备技术
空分复用技术:虚拟磁盘技术、虚拟存储器技术
4️⃣ 异步性
在多道程序环境中,程序是以 不可预知 的方式运行的。

功能

1️⃣ 处理器管理
2️⃣ 存储器管理
3️⃣ 设备管理
4️⃣ 文件管理
5️⃣ 用户接口
命令接口
联机 命令接口(交互式 命令接口)
脱机 命令接口(批处理 命令接口)
❷ 程序接口 (系统调用)
图形接口
6️⃣ 扩充机器 (虚拟机)

操作系统的分类与发展

手工操作

⭐️ 特点:
❶ 用户独占计算机资源
❷ 资源利用率低
CPU 等待人工操作

单道批处理系统

为了解决 CPU 和 I/O 设备之间速度不匹配的矛盾,引入了 脱机输入输出 方式:
请添加图片描述
采用脱机输入 / 输出方式后,低速 I/O 设备上的数据输入/输出都在外围机的控制下进行,而 CPU 只与高速的输入带及输出带打交道,从而有效地减少了 CPU 等待慢速 输入/输出 设备的时间。
⭐️ 特点:
自动性、顺序性、单道性
😣 缺点:
I/O 操作时, CPU 无事可做。

多道批处理系统

⭐️ 特点:
多道性、宏观上多任务并行、微观上多任务分片串行
😀 优点:
提高了 CPU 、内存 和 I/O 设备 的利用率,因此系统吞吐量得到提高
😣 缺点:
无交互能力

分时系统

⭐️ 特点:
多路性、独立性、及时性 和 交互性

实时系统

⭐️ 特点:
多路性、独立性、及时性、交互性 和 可靠性

操作系统的运行环境

CPU 运行模式

核心态 (管态、系统态) 💻 : 操作系统管理程序执行时机器所处的状态。
特权指令:I/O 指令、设置中断屏蔽指令、清内存指令、存储保护指令 和 设置时钟指令
用户态 (目态) 👧 : 用户程序执行时机器所处的状态。
🔔 注意:
用户程序在目态下使用特权指令引起的中断属于 访管中断

中断和异常的处理

🎇 中断(外中断):系统正常功能的一部分。中断处理完后会继续执行中断前的进程。
💣 异常(内中断):错误引起。
通常异常会引起中断,中断未必是异常引起的。
🔔 注意:
在中断发生后,进入中断处理的程序属于 操作系统程序。
❷ 中断处理需要保存系统所处的状态,即保存 程序状态字 中的内容。
❸ 外部中断处理过程中,程序计数器 的内容由 中断隐指令(硬件) 自动保存,通用寄存器 的内容由 操作系统 保存。

系统调用

🔢 执行系统调用的步骤:
1️⃣ 传递系统调用参数
2️⃣ 执行陷入 (trap) 指令
3️⃣ 执行相应的服务程序
4️⃣ 返回用户态
请添加图片描述

程序的链接与装入

程序由高级语言代码转化为在内存中可被计算机执行的指令主要分为三个步骤:
编译程序 (Compiler) 将用户源代码编译成 CPU 可执行的目标代码,产生若干个目标模块 (Object Module) (即若干程序段)
链接程序 (Linker) 将编译后形成的一组目标模块 (程序段) 以及它们所需要的库函数链接在一起,形成一个完整的装入模块 (Load Module)
程序的链接由三种方式:
❶ 静态链接 ❷ 装入时动态链接 ❸ 运行时动态链接
装入程序 (Loader) 将装入模块装入物理内存(地址重定位)
模块在装入内存时有三种方式:
❶ 绝对装入 ❷ 可重定位装入 (静态重定位) ❸ 动态运行时装入 (动态重定位)
请添加图片描述

程序运行时内存映像和地址空间

🪞 程序的内存映像:装载到内存中的程序代码区称为程序的内存映像。
程序区 : 程序指令
静态存储区:永久数据
❶ 常量区:常量
❷ 静态变量区:全局变量、静态变量
动态存储区:临时数据
❶ 栈区:自动变量(包括函数的形参)
❷ 堆区:动态变量(数组)

操作系统的体系结构

模块组合结构
😀 优点: 效率高
😣 缺点: 结构不清晰、可扩展性差、可适应性差
层次结构
😀 优点: 清晰、可读性、可适应性、可靠性强
😣 缺点: 分层不易
微内核结构
😀 优点: 适用于分布式系统、可靠、灵活、便于维护
😣 缺点: 效率低

操作系统的引导

硬盘通常分为几个区,在安装完一个操作系统或者开机后,需要 让计算机在开机时能识别分区中的系统,这个过程就是 系统引导
激活 CPU 读取 ROM 里的 BIOS 程序。
BIOS 读取 Boot Sequence, 寻找最后两个字节为 55AAH 的 MBR 主引导记录。
DPT (硬盘分区表) 中寻找首字节为 0x80H 的活动分区。
加载活动分区的第一个扇区 PBR (分区引导记录)
Boot Leader (启动管理器) 启动操作系统。(即操作系统初始化)
🔔 注意:
❶ MBR 是磁盘的第一个扇区,它 不属于任何的磁盘分区;而 PBR 位于磁盘活动分区的第一个扇区,即它是由磁盘分区归属的。
存储介质能否用于启动的唯一标志为:第一个扇区最后两个字节是否为 55AAH
❸ 操作系统最终被加载到 RAM
❹ 把硬盘作为启动盘,需要完成:
物理格式化(磁盘扇区的划分、为扇区排序、对已损坏的磁盘或扇区做 “坏” 标记)
对磁盘进行分区
逻辑格式化 (对扇区进行逻辑编号、建立逻辑盘的引导记录、文件分配表、文件目录表 和数据区等)
操作系统的安装

相关文章:

操作系统 - 1. 绪论

目录操作系统基本概念概念特征功能操作系统的分类与发展手工操作单道批处理系统多道批处理系统分时系统实时系统操作系统的运行环境CPU 运行模式中断和异常的处理系统调用程序的链接与装入程序运行时内存映像和地址空间操作系统的体系结构操作系统的引导操作系统基本概念 概念…...

详谈parameterType与resultType的用法

resultMap 表示查询结果集与java对象之间的一种关系,处理查询结果集,映射到java对象。 resultMap 是一种“查询结果集---Bean对象”属性名称映射关系,使用resultMap关系可将将查询结果集中的列一一映射到bean对象的各个属性&#…...

【Linux】进程概念、fork() 函数 (干货满满)

文章目录📕 前言📕 进程概念📕 Linux下查看进程的两种方法方法一方法二📕 pid() 、ppid() 函数📕 fork() 函数、父子进程初识再理解📕 fork做了什么📕 如何理解 fork 有两个返回值📕…...

【动态规划】最长上升子序列、最大子数组和题解及代码实现

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…...

Ajax进阶篇02---跨域与JSONP

前言❤️ 不管前方的路多么崎岖不平,只要走的方向正确,都比站在原地更接近幸福 ❤️Ajax进阶篇02---跨域与JSONP一、Ajax进阶篇02---跨域与JSONP(1)同源策略1.1 什么是同源1.2 什么是同源策略(2)跨域2.1 什…...

C 语言编程 — 线程池设计与实现

目录 文章目录目录线程池(Thread Pool)tiny-threadpool数据结构设计Task / JobTask / Job QueueWorker / ThreadThread Pool ManagerPublic APIsPrivate Functions运行示例线程池(Thread Pool) 线程池(Thread Pool&am…...

并发编程要点

Java并发编程中的三大特性分别是原子性、可见性和有序性,它们分别靠以下机制实现: 原子性:原子性指的是对于一个操作,要么全部执行,要么全部不执行。Java提供了一些原子性操作,例如AtomicInteger等&#xf…...

HDFS黑名单退役服务器

黑名单:表示在黑名单的主机IP地址不可以,用来存储数据。 企业中:配置黑名单,用来退役服务器。 黑名单配置步骤如下: 1)编辑/opt/module/hadoop-3.1.3/etc/hadoop目录下的blacklist文件 添加如下主机名称&…...

基于stm32智能语音电梯消毒系统

这次来分享个最近做的项目,stm32智能语音电梯消毒系统功能说明:在电梯,房间,客道区域内,检测到人,则执行相关动作!例如继电器开关灯,喷洒酒精等行为。手机app/微信小程序可以控制需要…...

FreeRTOS系列第1篇---为什么选择FreeRTOS?

1.为什么学习RTOS? 作为基于ARM7、Cortex-M3硬件开发的嵌入式工程师,我一直反对使用RTOS。不仅因为不恰当的使用RTOS会给项目带来额外的稳定性风险,更重要的是我认为绝大多数基于ARM7、Cortex-M3硬件的项目,还没复杂到使用RTOS的地…...

基于.NET Core内置浏览器窗体应用程序界面框架

更多开源项目请查看:一个专注推荐.Net开源项目的榜单 平常我们在做项目过程中,桌面软件具备操作高效、利用本地计算机做一些复杂运算、或者设定快捷操作等优势,但是桌面软件也有很多缺点,比如升级问题、系统兼容问题、系统bug排查…...

【数据结构初阶】一文带你学会归并排序(递归非递归)

目录 前言 递归实现 代码实现 非递归实现 代码实现 总结 前言 归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 作为一种典型的分而治之思想…...

Simulink壁咚(一)——What and How

目录 一、前言 二、Simulink 知多少 三、滤波算法 四、Model Verification 五、Model Coverage 六、Simulink测试实例 七、Simulink Test 八、Test Manager 九、Test Harness 十、 学习 一、前言 Simulink从2017b以后更加工程化和实用化,基于MBD的功能日趋…...

【PyTorch】Pytorch基础第0章

本文参加新星计划人工智能(Pytorch)赛道:https://bbs.csdn.net/topics/613989052 这是目录PyTorch的简介PyTorch 构建深度学习模型的步骤搭建pytorch使用环境PyTorch的简介 PyTorch 是一个开源的机器学习框架,由 Facebook 的人工智能研究院(…...

Android学习总结

积累熟练掌握 Java 语言,面向对象分析设计能力,反射原理,自定义注解及泛型,多次采用设计模式重构公司项目;熟练掌握 IVM 原理,反射,动态代理以及对 ClassLoader 热修复有比较深的理解&#xff1…...

虚拟机ubuntu安装samba服务

安装samba apt-get install samba 新建一个共享目录 mkdir /home/l/work chmod 777 /home/l/work 配置服务 配置 /etc/samba/smb.confsudo smbpasswd -a l(添加用户名名称) 防火墙关闭 Ubuntu中 我们使用命令查看当前防火墙状态; sudo ufw status inactive状态是防火墙关闭…...

开发板中的内存压力测试,你了解多少?

1. 测试目的内存压力测试的目的是评估开发板中的内存子系统性能和稳定性,以确保它能够满足特定的应用需求。开发板通常用于嵌入式系统、物联网设备、嵌入式智能家居等场景,这些场景对内存的要求通常比较高。其内存压力测试的主要目的有:1.对确…...

MATLAB | 这些花里胡哨的热图怎么画

好早之前写过一个绘制相关系数矩阵的代码,但是会自动求相关系数,而且画出来的热图只能是方形,这里写一款允许nan值出现,任意形状的热图绘制代码,绘制效果如下: 如遇到bug请后台提出,并去gitee下…...

Java开发的一些编码建议

1、无论是类、方法、字段、变量,尽可能的限制他们的作用范围,可以避免出现不必要的错误;同时虚拟机也能有更大的优化空间。 2、错误越早发现越好,编译时发生错误比在运行时发生错误好。而且编译时错误能更好的定位问题所在。 这…...

【YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进NO.59】引入ASPP模块

前言作为当前先进的深度学习目标检测算法YOLOv8,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法。此后的系列文章,将重点对YOLOv8的如何改进进行详细的介绍&…...

实战教你用美股api获取实时行情与报价

前几天我在整理投资数据,突然发现自己平时关注的几支热门美股,价格波动比新闻还快。光靠网页刷新完全跟不上节奏,尤其是NVDA、META这样的科技股,几分钟就能有明显变化。想随时看到最新行情,又不想盯着网页刷新&#xf…...

Hackintool终极指南:三步解决黑苹果显卡、音频和USB配置难题

Hackintool终极指南:三步解决黑苹果显卡、音频和USB配置难题 【免费下载链接】Hackintool The Swiss army knife of vanilla Hackintoshing 项目地址: https://gitcode.com/gh_mirrors/ha/Hackintool 还在为黑苹果配置而烦恼吗?显卡驱动不工作、音…...

ESP32-S3驱动JW01二氧化碳传感器:从供电陷阱到数据解析的实战指南

1. 硬件连接:电压匹配是生死线 第一次拿到JW01传感器时,我像往常一样顺手接上了ESP32-S3开发板的5V引脚——毕竟大多数传感器模块都标着"5V供电"的字样。结果串口监视器里一片死寂,连乱码都没有。翻出万用表测量才发现,…...

Fluent Meshing体网格生成失败?别慌,先检查你的几何模型是不是‘点接触’了

Fluent Meshing体网格生成失败?别慌,先检查你的几何模型是不是‘点接触’了 当你在Fluent Meshing中看到体网格生成失败的红色报错提示时,那种感觉就像考试时突然发现漏做了一整页题目。特别是当截止日期迫在眉睫,这种报错往往让人…...

别再用FIFO了!AXI4-Stream CDC场景下,寄存器管道(Register Slice)模式实战与避坑

别再用FIFO了!AXI4-Stream CDC场景下寄存器管道模式的实战精要 在FPGA和SoC设计中,跨时钟域(CDC)数据传输一直是个让人头疼的问题。每当遇到不同时钟域间的数据同步,大多数工程师的第一反应就是掏出一个FIFO来解决。这…...

嵌入式开发调试宏与性能优化实战

1. 嵌入式开发调试宏的妙用在嵌入式开发中,调试是最耗时耗力的环节之一。每次修改代码后都需要重新烧录、运行、观察结果,这个过程往往要重复数十次。而合理使用编译器提供的调试宏,可以大幅提升调试效率。1.1 基础调试宏解析GCC编译器提供了…...

解锁AI编程效率:6个Continue插件实战技巧让开发效率提升10倍

解锁AI编程效率:6个Continue插件实战技巧让开发效率提升10倍 【免费下载链接】continue ⏩ Source-controlled AI checks, enforceable in CI. Powered by the open-source Continue CLI 项目地址: https://gitcode.com/GitHub_Trending/co/continue 作为一名…...

Qwen3-8B镜像站新手教程:如何选择模型并进行首次提问

Qwen3-8B镜像站新手教程:如何选择模型并进行首次提问 1. 认识Qwen3-8B:你的智能AI助手 Qwen3-8B是Qwen系列最新一代大型语言模型,拥有80亿参数,在推理能力、指令执行和多语言支持方面表现出色。这个模型特别适合个人开发者和小型…...

为什么选择Zabbix而不是Prometheus?K8s监控工具深度对比与实战配置

Zabbix与Prometheus在Kubernetes监控中的技术决策指南 当企业级容器平台需要构建监控体系时,技术选型往往成为困扰架构师的核心难题。作为当下最主流的两个开源监控解决方案,Zabbix与Prometheus在Kubernetes生态中的表现各有千秋。本文将基于实际生产环境…...

新手避坑指南:在Ubuntu 20.04 ROS Noetic下搞定宇树Z1机械臂Gazebo仿真(附依赖安装全流程)

宇树Z1机械臂ROS仿真全流程避坑指南:从零搭建到Gazebo控制 第一次在Ubuntu 20.04上配置宇树Z1机械臂的ROS Noetic仿真环境时,我几乎踩遍了所有可能的坑——依赖版本冲突、编译报错、环境变量配置错误...如果你也在经历类似的痛苦,别担心&…...