当前位置: 首页 > 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的如何改进进行详细的介绍&…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...

CppCon 2015 学习:REFLECTION TECHNIQUES IN C++

关于 Reflection(反射) 这个概念,总结一下: Reflection(反射)是什么? 反射是对类型的自我检查能力(Introspection) 可以查看类的成员变量、成员函数等信息。反射允许枚…...

【Ftrace 专栏】Ftrace 参考博文

ftrace、perf、bcc、bpftrace、ply、simple_perf的使用Ftrace 基本用法Linux 利用 ftrace 分析内核调用如何利用ftrace精确跟踪特定进程调度信息使用 ftrace 进行追踪延迟Linux-培训笔记-ftracehttps://www.kernel.org/doc/html/v4.18/trace/events.htmlhttps://blog.csdn.net/…...

vb监测Excel两个单元格变化,达到阈值响铃

需求 在Excel中实现监控两个单元格之间的变化范围,当达到某个设定的值的范围内时,实现自动响铃提示。 实现: 首先设置Excel,开启宏、打开开发者工具,点击visual Basic按钮,然后在左侧双击需要监测的shee…...

Redis 集群批量删除key报错 CROSSSLOT Keys in request don‘t hash to the same slot

Redis 集群报错 CROSSSLOT Keys in request dont hash to the same slot 的原因及解决方案 1. 错误原因 在 Redis 集群模式下,数据根据 哈希槽(Slot) 分散存储在不同的节点上(默认 16384 个槽)。当执行涉及多个 key …...