操作系统 - 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的如何改进进行详细的介绍&…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...
【R语言编程——数据调用】
这里写自定义目录标题 可用库及数据集外部数据导入方法查看数据集信息 在R语言中,有多个库支持调用内置数据集或外部数据,包括studentdata等教学或示例数据集。以下是常见的库和方法: 可用库及数据集 openintro库 该库包含多个教学数据集&a…...
