操作系统 - 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等…...
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 热修复有比较深的理解࿱…...
虚拟机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的如何改进进行详细的介绍&…...
Qiling框架终极指南:如何快速模拟和分析IoT固件安全漏洞
Qiling框架终极指南:如何快速模拟和分析IoT固件安全漏洞 【免费下载链接】qiling A True Instrumentable Binary Emulation Framework 项目地址: https://gitcode.com/gh_mirrors/qi/qiling Qiling框架是一款功能强大的二进制仿真工具,能够帮助安…...
【VSCode 2026启动加速黄金法则】:20年微软生态专家亲授7步冷启动<800ms实战方案
更多请点击: https://intelliparadigm.com 第一章:VSCode 2026启动性能优化的底层原理与测量基准 VSCode 2026 引入了基于 V8 TurboFan 编译器增强的主进程懒加载机制,将扩展初始化、语言服务器注册及 UI 渲染管线拆分为可调度的微任务队列&…...
PostgreSQL vs MySQL:深度技术对比与选型指南
引言 在数据库选型时,PostgreSQL和MySQL是两个最热门的选择。它们都是成熟的开源关系型数据库,但底层架构和设计理念有显著差异。 本文从技术角度深入分析两者的区别,帮助你做出正确的选型决策。 本文由PGCCC(中国权威PG认证机构…...
别再重复造轮子了!Power Apps组件库保姆级教程,从创建到团队共享一次搞定
Power Apps组件库实战指南:从零构建到团队高效协作 在多人协作的Power Apps开发项目中,你是否遇到过这样的困扰:每个页面都需要重复设计相同的导航栏,当UI风格调整时不得不逐个修改几十个页面;团队成员各自开发的按钮样…...
如何在 MATLAB 中调用 Taotoken 聚合的大模型 API 接口
如何在 MATLAB 中调用 Taotoken 聚合的大模型 API 接口 1. 准备工作 在 MATLAB 中调用 Taotoken 的大模型 API 接口前,需要确保具备以下条件: 有效的 Taotoken API Key,可在 Taotoken 控制台中创建。目标模型 ID,可在 Taotoken…...
原神自动化脚本终极指南:解放双手,专注游戏乐趣
原神自动化脚本终极指南:解放双手,专注游戏乐趣 【免费下载链接】genshin-impact-script 原神脚本,包含自动钓鱼、自动拾取、自动跳过对话等多项实用功能。A Genshin Impact script includes many useful features such as automatic fishing…...
初次使用模型广场如何根据场景与预算选择合适模型
初次使用模型广场如何根据场景与预算选择合适模型 1. 理解模型筛选的核心维度 在 Taotoken 模型广场中,用户可以通过多个关键维度筛选适合自身需求的模型。首要任务是明确实际应用场景的具体要求。对于文本生成任务,需要关注模型的上下文窗口长度。例如…...
从CubeMX配置到代码实战:手把手教你为STM32F4 FreeRTOS任务添加“说话”能力(串口通信篇)
让STM32F4在FreeRTOS中"开口说话":串口通信实战指南 想象一下,你的STM32开发板就像一个沉默的执行者,默默完成各种任务却从不表达自己。今天,我们要赋予它"说话"的能力——通过串口通信让它在执行多任务时能够…...
用Python绘制动态边宽的网络图
在数据可视化中,网络图(Network Graph)是一种强大的工具,可以直观地展示节点之间的关系。在Python中,NetworkX和Matplotlib库结合使用可以非常方便地创建和绘制这些图形。今天,我们将探讨如何利用这些工具绘…...
别再让GPT瞎猜了!用‘Let‘s think step by step’魔法,5分钟提升ChatGPT数学推理准确率
解锁AI数学推理潜能:零样本思维链的实战指南 引言 当你在深夜面对一道复杂的数学题,向ChatGPT求助却得到一串看似合理实则错误的答案时,那种挫败感不言而喻。这不是AI的缺陷,而是我们与机器沟通的方式需要升级。最新研究发现&…...
