操作系统概述(3)
批处理系统
1.单道批处理系统
- 单道批处理系统是成批地处理作用,并且始终只有一道作业在内存中的系统。
- 优点:提高系统资源的利用率和系统吞吐量。
- 缺点:系统中的资源得不到充分利用。
2.多道批处理系统
- 引入多道程序设计技术,是为了进一步提高系统资源的利用率和系统吞吐量。
- 优点:系统资源利用率高,系统吞吐量大。
- 缺点:平均周转时间长,无交互能力。
分时系统
- 分时系统是指在一台主机上连续若干个配有显示器和键盘的终端,并由此组成的系统。
- 分时系统允许若干个用户同时通自己的终端以交互方式使用主机,共享主机中的资源。
分时系统的特性:
1.多路性:系统按分时原则为每个用户服务,宏观上若干个用户是同时工作的,微观上每个作业轮流执行一个时间片。
2.独立性:每个用户都是独立操作的,互不干扰。
3.及时性:用户的请求能在很短的时间内获得响应。
4.交互性:用户可以通过自己的终端与系统进行交互。
实时系统
- 实时系统是指能够及时响应外部事件的请求,在规定时间内完成相应的处理,并且控制所有实时任务协调一致地运行的系统。
- 实时系统的特征是将时间作为关键参数,具有多路性、独立性、及时性、交互性、可靠性。
- 常见的实时系统有工业控制系统、武器控制系统、信息查询系统、多媒体系统、嵌入式系统。
微机操作系统
- 微机操作系统是指配置在微型机上的操作系统。分为单用户单任务操作系统、单用户多任务操作系统、多用户多任务操作系统。
网络操作系统
- 网络操作系统是指在计算机网络环境下,管理和控制网络资源,实现数据通信,共享网络资源,为用户提供与网络资源之间接口的一组软件和规程的集合。
- 由于现代操作系统通常具有上网功能,所以如今一般不再特指某个操作系统为网络操作系统。
微内核结构的操作系统
微内核操作系统的主要特点:
- 足够小的内核
- 基于客户/服务器模式
- 利用“机制与策略分离”的原理,将控制放在操作系统的微内核中
- 采用面向对象技术
优点 :可扩展性高、可靠性高、可移植性强、支持分布式系统、采用面向对象技术、提高了系统性能、减少了开发系统的开销。
操作系统的基本特征
1.并发性:并发性是指两个或多个时间在同一时间间隔内发生。
2.共享性:共享性是指内存中并发执行的若干个进程共享系统中的各种系统。
3.虚拟性:虚拟是将一个物理实体变为若干个逻辑上的对应物。
4.异步性:异步性是指在多道程序环境下,每个进程何时进行、何时暂停未知,并以不可预知的速度向前推进。
- 并发性和共享性是多用户多任务操作系统的两个基本特征。
- 因为操作系统具有并发性,所以能极大地提高系统资源利用率并增大系统的吞吐量。
并发性和并行性的区别
- 并发性:两个或多个事件在同一时间间隔发生。
- 并行性:两个或多个事件在同一时刻发生。
操作系统的主要功能
操作系统的主要功能有:
处理机管理功能、存储器管理功能、设备管理功能、文件管理功能、操作系统与用户之间的接口、现代操作系统的新功能。
- 处理机管理: 对进程进行管理、包括进程控制、进程同步、进程通信、调度(包括作业调度、进程调度等)。对于引入了线程的操作系统,处理机管理也包含对线程进行管理。
- 存储器管理:包括内存分配与回收、内存保护、地址映射、内存扩充等。存储器管理功能可以为多道程序提供良好的运行环境,提高存储器的利用率,减少内存碎片,便于用户使用,从逻辑上扩充内存。
- 设备管理:包括缓冲管理、设备分配、设备处理、虚拟设备等。设备管理功能可以完成用户进程的I/O请求,提高I/O速度,提高CPU与I/O设备的利用率,让用户更方便地使用I/O设备。
- 文件管理:包括文件存储空间管理、目录管理、文件读/写管理、文件共享、文件保护等。文件管理功能可以方便用户管理用户文件和系统文件,并提供了有效的存取控制功能,保证了文件的安全性。
- 操作系统与用户之间的接口:操作系统向用户提供了“操作系统与用户之间的接口”,接口分为用户接口和程序接口两种类型。操作系统由于用户之间的接口便于用户使用操作子系统。
裸机应用编程
1.什么是裸机?
- 无软件的计算机硬件系统。
2.什么是裸机应用编程?
- 编写语言:直接使用CPU指令集。
- 开发环境:基于硬件电路上的硬件接口。
3.所有台式机,CPU一样吗?
- 台式计算机和手机的CPU就不同。
- 即使家用电器里面都有不同的CPU。
4.不同类型CPU,指令集一样吗?
- 指令集一样,就不能叫不同类型CPU,即使同类型,也会有变化。
5.为什么计算机CPU不做成一样?
- 技术发展的差异:半导体技术水平导致制造过程的差异。
- 应用发展的需求:成本控制和电路设计,例如家用电器、早期的手机。
裸机上机器语言编程

- 裸机编程最早基于指令集结构(Instruction Set Architecture, ISA)编写应用程序,即机器语言源程序。
- 提问:上面两种机器语言代码为什么不同,有哪些不同?这样的编程你有什么感觉?
- x-86指令长度可变,而MIPS定长,数据好像一样,但字节顺序颠倒。能不能让编程更轻松?
两种机器语言代码不同的原因及不同点
根本原因:X86 与 MIPS 属于不同的指令集架构(ISA),ISA 定义了指令格式、操作码、寄存器使用等底层规则,导致机器语言代码的编码规则不同。
具体不同点:
- 指令长度:X86 指令长度可变(如不同指令码字节数不同),MIPS 指令定长(通常为 4 字节)。
- 字节顺序:存在大端 / 小端存储差异,如数据相同但字节顺序颠倒。
- 指令编码规则:两者操作码、寻址方式的机器码表示不同,反映了各自架构的硬件设计逻辑。
编程感受:直接使用机器语言编程繁琐易错,需记忆复杂的二进制 / 十六进制编码,开发效率低,代码可读性、可维护性差。
让编程更轻松的方法
可通过抽象层简化编程:
- 使用汇编语言:用助记符(如 ADD、MOV)替代机器码,降低记忆成本,再通过汇编器转换为机器语言。
- 高级编程语言:利用 C、Python 等高级语言,通过编译器 / 解释器将代码转换为机器语言,程序员无需关注底层细节,聚焦逻辑实现,提升开发效率。
裸机上汇编语言编程

- 裸机编程基于汇编语言格式编写应用程序,即汇编语言源程序代码,即汇编程序自动转换汇编指令成机器指令代码。
- 通过机器语言与汇编语言代码相比,其语言符号易于理解指令功能,而且汇编数据以10进制和字符为主,而机器语言以16进制编码为主,CPU不一样指令也不一样,可能字节顺序不同。
- 能否通过C语言源程序追踪发现逻辑编程中的指令处理的信息?
借助 C 语言源程序追踪逻辑编程中的指令处理信息:
- 编译生成汇编代码:使用编译工具(如
gcc -S)将 C 语言源程序编译为汇编语言代码。汇编代码中会直接呈现底层指令(如mov、add、jmp等),清晰展示指令处理逻辑,包括寄存器操作、内存访问、运算指令等裸机编程层面的指令处理细节。- 反汇编可执行文件:将 C 语言编译生成的可执行文件(机器码),通过反汇编工具(如
objdump -d)还原为汇编代码。反汇编结果会暴露机器码对应的指令处理信息,包括指令类型、操作数、执行顺序等,从而追踪到底层指令处理逻辑。尽管 C 语言源程序本身未直接书写指令,但通过编译生成的汇编代码或反汇编可执行文件,能够间接追踪到指令处理的具体信息,建立高级语言与底层指令处理的关联。
裸机编程特性
-
问:如果换 CPU,CPU 指令集变了,基于 CPU 指令集的程序还能用?
答:通常无法直接使用。程序执行依赖特定 CPU 指令集的操作支持,指令集变更后,原程序失去运行基础。 -
问:如果接口硬件(类型、规模)扩充,包含原硬件接口程序能选择使用?
答:若扩充的硬件接口仍保留原接口,原程序可选择继续使用;若完全替换原接口,程序需重新适配新接口才能用。 -
问:如果硬件设计未变但应用功能添加,以前的程序还可选择使用?
答:若原程序不依赖新增功能,可继续使用;若程序逻辑与新增功能有关联或依赖,则需修改调整后才能用。 -
问:如果基于 CPU 指令集编写的程序,在哪调试?怎么调试?CPU 变了怎么办?
答:需在专门的开发板或开发设备上调试。若 CPU 变更,需更换适配新 CPU 的开发板 / 设备,重新搭建调试环境。 -
问:程序设计要考虑哪些?
答:需考虑:满足应用业务功能需求;CPU 指令集提供的操作能力;CPU 寄存器数量限制;硬件中断支持机制;内存单元布局;外部设备接口类型、规模及操作逻辑。
操作系统上编程:算法语言编程
- 软件层抽象隐藏硬件接口,算法语言语句抽象为虚拟CPU指令,不与具体的CPU指令集、内存和外部硬件接口对应。
- 算法语言源程序代码通过一种自动化的工具,即编译程序翻译成为针对一种CPU可识别的CPU指令集的汇编语言符号,再转换为二进制编码的机器语言指令格式。
OS 上应用编程问题
-
算法设计:
- 无需重点关注编码、类型、字节顺序、运算溢出及精度等限制,也可不细究运算和存贮访问次数对程序效率的影响。
- 依据问题特性选择迭代或递归算法,部分算法可能突破 OS 极限。
-
语句组织:
- 忽略命名唯一性(全局 / 局部变量、函数)、语句编译或解释后机器指令的差异对程序运行效率的影响。
- 未注意相同运算因参与类型不同,可能导致机器指令实现功能错误。
-
运行访问:
- 变量按类型和大小分配字节,地址连续编址,需先分配后访问,避免使用失效、超量或跨区地址,防止污染函数地址或返回地址,引发程序失控、效率低等问题。
- 中断处理可能插入语句(机器指令组)中,引发主程序运行状态保护问题。
相关文章:
操作系统概述(3)
批处理系统 1.单道批处理系统 单道批处理系统是成批地处理作用,并且始终只有一道作业在内存中的系统。优点:提高系统资源的利用率和系统吞吐量。缺点:系统中的资源得不到充分利用。 2.多道批处理系统 引入多道程序设计技术,是…...
SolidWorks2025三维计算机辅助设计(3D CAD)软件超详细图文安装教程(2025最新版保姆级教程)
目录 前言 一、SolidWorks下载 二、SolidWorks安装 三、启动SolidWorks 前言 SolidWorks 是一款由法国达索系统(Dassault Systmes)公司开发的三维计算机辅助设计(3D CAD)软件,广泛用于机械设计、工程仿真和产品开…...
powershell绑定按钮事件的两种方式
写一个powershell的简单GUI做本地任务,试验出2个方法: 方法1: function btn1_click {write-host $text1.Text -ForegroundColor Green -BackgroundColor Black }$btn1.Add_Click({btn1_click})方法2: $btn2_click {write-host $…...
JBDC Java数据库连接(1)
目录 JDBC概述 定义 JDBC API 实例 JDBC搭建 建立与数据库连接: 形式: 实例 获得Satement执行sql语句 Satement中的方法: 实例 实例 JDBC概述 定义 JDBC(Java DataBase Connectivity)java数据库连接是一种用于执行SQL…...
Spring Boot 3.x 集成 MongoDB 的 默认配置项及默认值,以及 常用需要修改的配置项 的详细说明
以下是 Spring Boot 3.x 集成 MongoDB 的 默认配置项及默认值,以及 常用需要修改的配置项 的详细说明: 一、默认配置项及默认值 Spring Boot 对 MongoDB 的默认配置基于 spring.data.mongodb 前缀,以下是核心配置项: 配置项默认…...
git rebase复杂场景验证
经常面临复杂的分支管理,这里对几种场景的行为做一些验证。 结论总结 git rebase br_name:等价与新建br_name分支,然后找到当前分支与br_name分支的分叉点。然后把分叉点以后的提交(当前分支)一个一个的cherry-pick过…...
【Introduction to Reinforcement Learning】翻译解读2
2.2 马尔可夫决策过程(MDPs) 马尔可夫决策过程(MDP)为顺序决策提供了框架,其中动作不仅影响即时奖励,还会影响未来结果。与多臂老虎机问题不同,MDP中的即时奖励与延迟奖励相平衡。在多臂老虎机…...
大数据(5)Spark部署核弹级避坑指南:从高并发集群调优到源码级安全加固(附万亿级日志分析实战+智能运维巡检系统)
目录 背景一、Spark核心架构拆解1. 分布式计算五层模型 二、五步军工级部署阶段1:环境核弹级校验阶段2:集群拓扑构建阶段3:黄金配置模板阶段4:高可用启停阶段5:安全加固方案 三、万亿级日志分析实战1. 案例背景&#x…...
Linux内核中TCP协议栈的实现:tcp_close函数的深度剖析
引言 TCP(传输控制协议)作为互联网协议族中的核心协议之一,负责在不可靠的网络层之上提供可靠的、面向连接的字节流服务。Linux内核中的TCP协议栈实现了TCP协议的全部功能,包括连接建立、数据传输、流量控制、拥塞控制以及连接关闭等。本文将深入分析Linux内核中tcp_close…...
从搜索丝滑过渡到动态规划的学习指南
搜索&动态规划 前言砝码称重满分代码及思路solution 1(动态规划)solution 2(BFS) 跳跃满分代码及思路solution 1(动态规划)solution 2 (BFS) 积木画满分代码及思路动态规划思路讲解solution 前言 本文主要是通过一些竞赛真题…...
(一)栈结构、队列结构
01-线性结构-数组-栈结构 线性结构(Linear List)是由n(n>0)个数据元素(结点) a[0], a[1], a[2], a[3],...,a[n-1]组成的有限序列 数组 通常数组的内存是连续的,所以在知道数组下标的情况下,访问效率是…...
AWS SNS深度解析:构建高可用、可扩展的云原生消息通信解决方案
引言 在云原生架构中,高效的消息通信是系统解耦、实时响应的核心需求。AWS Simple Notification Service(SNS)作为一款全托管的发布/订阅(Pub/Sub)服务,为开发者提供了灵活、可靠的消息分发能力。本文将从…...
MySQL基础 [五] - 表的增删查改
目录 Create(insert) Retrieve(select) where条件 编辑 NULL的查询 结果排序(order by) 筛选分页结果 (limit) Update Delete 删除表 截断表(truncate) 插入查询结果(insertselect&…...
4.7学习总结 可变参数+集合工具类Collections+不可变集合
可变参数: 示例: public class test {public static void main(String[] args) {int sumgetSum(1,2,3,4,5,6,7,8,9,10);System.out.println(sum);}public static int getSum(int...arr){int sum0;for(int i:arr){sumi;}return sum;} } 细节:…...
OpenGL学习笔记(简介、三角形、着色器、纹理、坐标系统、摄像机)
目录 简介核心模式与立即渲染模式状态机对象GLFW和GLAD Hello OpenGLTriangle 三角形顶点缓冲对象 VBO顶点数组对象 VAO元素缓冲对象 EBO/ 索引缓冲对象 IEO 着色器GLSL数据类型输入输出Uniform 纹理纹理过滤Mipmap 多级渐远纹理实际使用方式纹理单元 坐标系统裁剪空间 摄像机自…...
vmware虚拟机上Ubuntu或者其他系统无法联网的解决方法
一、检查虚拟机是否开启了网络服务 打开方式:控制面板->-管理工具--->服务 查找 VMware DHCP Service 和VMware NAT Service ,确保这两个服务已经启动。如下图,没有启动就点击启动。 二、设置网络类型 我们一般使用前两种多一些&…...
OpenVLA-OFT——微调VLA时加快推理的三大关键设计:支持动作分块的并行解码、连续动作表示以及L1回归(含输入灵活化及对指令遵循的加强)
前言 25年3.26日,这是一个值得纪念的日子,这一天,我司「七月在线」的定位正式升级为了:具身智能的场景落地与定制开发商 ,后续则从定制开发 逐步过渡到 标准产品化 比如25年q2起,在定制开发之外࿰…...
Linux脚本基础详解
一、基础知识 Linux 脚本主要是指在 Linux 系统中编写的用于自动化执行任务的脚本程序,其中最常用的便是 Bash 脚本。下面我们将从语法、使用方法和示例三个方面详细讲解 Linux 脚本。 1. 脚本简介 定义:Linux 脚本是一系列命令的集合,可以…...
LabVIEW 油井动液面在线监测系统
项目背景 传统油井动液面测量依赖人工现场操作,面临成本高、效率低、安全风险大等问题。尤其在偏远地区或复杂工况下,测量准确性与时效性难以保障。本系统通过LabVIEW虚拟仪器技术实现硬件与软件深度融合,为油田智能化转型提供实时连续监测解…...
泛微ECOLOGY9 解决文档中打开发票类PDF文件无内容的配置方法
解决文档中打开发票类PDF文件无内容的配置方法 情况如下: 如果OA文档中打开的PDF文件如下图这样空白的,那么可以试试下面的方法进行解决。 解决方法: 在OA安装目录中找到 ecology/WEB-INF/prop/docpreview.properties 配置文件ÿ…...
大模型RAG项目实战-知识库问答助手v1版
安装 Ollama 根据官网指导,安装对应版本即可。 下载安装指导文档: handy-ollama/docs/C1/1. Ollama 介绍.md at main datawhalechina/handy-ollama 注意:在 Windows 下安装 Ollama 后,强烈建议通过配置环境变量来修改模型存储…...
统计子矩阵
1.统计子矩阵 - 蓝桥云课 统计子矩阵 问题描述 给定一个 NM 的矩阵 A,请你统计有多少个子矩阵(最小 11,最大 NM)满足子矩阵中所有数的和不超过给定的整数 K? 输入格式 第一行包含三个整数 N,M 和 K。 …...
Vue.js 实现下载模板和导入模板、数据比对功能核心实现。
在前端开发中,数据比对是一个常见需求,尤其在资产管理等场景中。本文将基于 Vue.js 和 Element UI,通过一个简化的代码示例,展示如何实现“新建比对”和“开始比对”功能的核心部分。 一、功能简介 我们将聚焦两个核心功能&…...
C++第1讲:基础语法;通讯录管理系统
黑马程序员匠心之作|C教程从0到1入门编程,学习编程不再难_哔哩哔哩_bilibili 对应的笔记: https://github.com/AccumulateMore/CPlusPlus 标签: C&C | welcome to here 一、C初识 1.1.注释 1.2.变量 1.3.常量:记录程序中不可更改的数据 1.4.关…...
关于Spring MVC处理JSON数据集的详细说明,涵盖如何接收和发送JSON数据,包含代码示例和总结表格
以下是关于Spring MVC处理JSON数据集的详细说明,涵盖如何接收和发送JSON数据,包含代码示例和总结表格: 1. 核心机制 Spring MVC通过以下方式支持JSON数据的传输: 接收JSON数据:使用RequestBody注解将HTTP请求体中的J…...
MySQL 隐式转换与模糊匹配的索引使用分析
MySQL 隐式转换与模糊匹配的索引使用分析 MySQL服务版本字段结构索引结构查询分析int索引查询varchar 索引查询 like 匹配总结 MySQL服务版本 版本信息:Server version: 8.0.30 MySQL Community Server - GPL 字段结构 mysql> desc connection; -------------…...
DNS服务(Linux)
DNS 介绍 dns,Domain Name Server,它的作用是将域名解析为 IP 地址,或者将IP地址解析为域名。 这需要运行在三层和四层,也就是说它需要使用 TCP 或 UDP 协议,并且需要绑定端口,53。在使用时先通过 UDP 去…...
【愚公系列】《高效使用DeepSeek》058-选题策划
🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…...
Python高阶函数-filter
1. 基本概念 filter() 是Python内置的高阶函数,用于过滤序列中的元素。它接收一个函数和一个可迭代对象作为参数,返回一个迭代器,包含使函数返回True的所有元素。 filter(function, iterable)2. 工作原理 惰性计算:filter对象是…...
✅ Ultralytics YOLO验证(Val)时自动输出COCO指标(AP):2025最新配置与代码详解 (小白友好 + B站视频)
✅ YOLO获取COCO指标(3):验证(Val) 启用 COCO API 评估(自动输出AP指标)| 发论文必看! | Ultralytics | 小白友好 文章目录 一、问题定位二、原理分析三、解决方案与实践案例步骤 1: 触发 COCO JSON 保存步骤 2: 确保 self.is_coc…...
