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

操作系统概述(3)

批处理系统

1.单道批处理系统

  • 单道批处理系统是成批地处理作用,并且始终只有一道作业在内存中的系统。
  • 优点:提高系统资源的利用率和系统吞吐量。
  • 缺点:系统中的资源得不到充分利用。

2.多道批处理系统

  • 引入多道程序设计技术,是为了进一步提高系统资源的利用率和系统吞吐量。
  • 优点:系统资源利用率高,系统吞吐量大。
  • 缺点:平均周转时间长,无交互能力。

分时系统

  • 分时系统是指在一台主机上连续若干个配有显示器和键盘的终端,并由此组成的系统。
  • 分时系统允许若干个用户同时通自己的终端以交互方式使用主机,共享主机中的资源。
分时系统的特性:

1.多路性系统按分时原则为每个用户服务,宏观上若干个用户是同时工作的,微观上每个作业轮流执行一个时间片。

2.独立性:每个用户都是独立操作的,互不干扰。

3.及时性:用户的请求能在很短的时间内获得响应。

4.交互性:用户可以通过自己的终端与系统进行交互。

实时系统

  • 实时系统是指能够及时响应外部事件的请求,在规定时间内完成相应的处理,并且控制所有实时任务协调一致地运行的系统。
  • 实时系统的特征是将时间作为关键参数,具有多路性、独立性、及时性、交互性、可靠性。
  • 常见的实时系统有工业控制系统、武器控制系统、信息查询系统、多媒体系统、嵌入式系统。

微机操作系统

  • 微机操作系统是指配置在微型机上的操作系统。分为单用户单任务操作系统、单用户多任务操作系统、多用户多任务操作系统。

网络操作系统

  • 网络操作系统是指在计算机网络环境下,管理和控制网络资源,实现数据通信,共享网络资源,为用户提供与网络资源之间接口的一组软件和规程的集合。
  • 由于现代操作系统通常具有上网功能,所以如今一般不再特指某个操作系统为网络操作系统。

微内核结构的操作系统

微内核操作系统的主要特点:

  1. 足够小的内核
  2. 基于客户/服务器模式
  3. 利用“机制与策略分离”的原理,将控制放在操作系统的微内核中
  4. 采用面向对象技术

优点 :可扩展性高、可靠性高、可移植性强、支持分布式系统、采用面向对象技术、提高了系统性能、减少了开发系统的开销。

操作系统的基本特征

1.并发性:并发性是指两个或多个时间在同一时间间隔内发生。

2.共享性:共享性是指内存中并发执行的若干个进程共享系统中的各种系统。

3.虚拟性:虚拟是将一个物理实体变为若干个逻辑上的对应物。

4.异步性:异步性是指在多道程序环境下,每个进程何时进行、何时暂停未知,并以不可预知的速度向前推进。

  • 并发性和共享性是多用户多任务操作系统的两个基本特征。
  • 因为操作系统具有并发性,所以能极大地提高系统资源利用率并增大系统的吞吐量。
并发性和并行性的区别
  • 并发性:两个或多个事件在同一时间间隔发生。
  • 并行性:两个或多个事件在同一时刻发生。

操作系统的主要功能

操作系统的主要功能有:

处理机管理功能存储器管理功能设备管理功能文件管理功能操作系统与用户之间的接口现代操作系统的新功能

  1.  处理机管理 对进程进行管理、包括进程控制、进程同步、进程通信、调度(包括作业调度、进程调度等)。对于引入了线程的操作系统,处理机管理也包含对线程进行管理。
  2. 存储器管理:包括内存分配与回收、内存保护、地址映射、内存扩充等。存储器管理功能可以为多道程序提供良好的运行环境,提高存储器的利用率,减少内存碎片,便于用户使用,从逻辑上扩充内存。
  3. 设备管理:包括缓冲管理、设备分配、设备处理、虚拟设备等。设备管理功能可以完成用户进程的I/O请求,提高I/O速度,提高CPU与I/O设备的利用率,让用户更方便地使用I/O设备。
  4. 文件管理:包括文件存储空间管理、目录管理、文件读/写管理、文件共享、文件保护等。文件管理功能可以方便用户管理用户文件和系统文件,并提供了有效的存取控制功能,保证了文件的安全性。
  5. 操作系统与用户之间的接口:操作系统向用户提供了“操作系统与用户之间的接口”,接口分为用户接口和程序接口两种类型。操作系统由于用户之间的接口便于用户使用操作子系统。

裸机应用编程

1.什么是裸机?

  • 无软件的计算机硬件系统。

2.什么是裸机应用编程?

  • 编写语言:直接使用CPU指令集。
  • 开发环境:基于硬件电路上的硬件接口。
3.所有台式机,CPU一样吗?
  • 台式计算机和手机的CPU就不同。
  • 即使家用电器里面都有不同的CPU。
4.不同类型CPU,指令集一样吗?
  • 指令集一样,就不能叫不同类型CPU,即使同类型,也会有变化。
5.为什么计算机CPU不做成一样?
  • 技术发展的差异:半导体技术水平导致制造过程的差异。
  • 应用发展的需求:成本控制和电路设计,例如家用电器、早期的手机。

裸机上机器语言编程

  • 裸机编程最早基于指令集结构(Instruction Set Architecture, ISA)编写应用程序,即机器语言源程序
  • 提问:上面两种机器语言代码为什么不同,有哪些不同?这样的编程你有什么感觉?
  • x-86指令长度可变,而MIPS定长,数据好像一样,但字节顺序颠倒。能不能让编程更轻松?
两种机器语言代码不同的原因及不同点
  1. 根本原因:X86 与 MIPS 属于不同的指令集架构(ISA),ISA 定义了指令格式、操作码、寄存器使用等底层规则,导致机器语言代码的编码规则不同。

  2. 具体不同点

    • 指令长度:X86 指令长度可变(如不同指令码字节数不同),MIPS 指令定长(通常为 4 字节)。
    • 字节顺序:存在大端 / 小端存储差异,如数据相同但字节顺序颠倒。
    • 指令编码规则:两者操作码、寻址方式的机器码表示不同,反映了各自架构的硬件设计逻辑。
  3. 编程感受:直接使用机器语言编程繁琐易错,需记忆复杂的二进制 / 十六进制编码,开发效率低,代码可读性、可维护性差。

让编程更轻松的方法

可通过抽象层简化编程:

  • 使用汇编语言:用助记符(如 ADD、MOV)替代机器码,降低记忆成本,再通过汇编器转换为机器语言。
  • 高级编程语言:利用 C、Python 等高级语言,通过编译器 / 解释器将代码转换为机器语言,程序员无需关注底层细节,聚焦逻辑实现,提升开发效率。

 裸机上汇编语言编程

  • 裸机编程基于汇编语言格式编写应用程序,即汇编语言源程序代码,即汇编程序自动转换汇编指令成机器指令代码
  • 通过机器语言与汇编语言代码相比,其语言符号易于理解指令功能,而且汇编数据以10进制和字符为主,而机器语言以16进制编码为主,CPU不一样指令也不一样,可能字节顺序不同。
  • 能否通过C语言源程序追踪发现逻辑编程中的指令处理的信息?
借助 C 语言源程序追踪逻辑编程中的指令处理信息:
  1. 编译生成汇编代码:使用编译工具(如gcc -S)将 C 语言源程序编译为汇编语言代码。汇编代码中会直接呈现底层指令(如movaddjmp等),清晰展示指令处理逻辑,包括寄存器操作、内存访问、运算指令等裸机编程层面的指令处理细节。
  2. 反汇编可执行文件:将 C 语言编译生成的可执行文件(机器码),通过反汇编工具(如objdump -d)还原为汇编代码。反汇编结果会暴露机器码对应的指令处理信息,包括指令类型、操作数、执行顺序等,从而追踪到底层指令处理逻辑。

尽管 C 语言源程序本身未直接书写指令,但通过编译生成的汇编代码或反汇编可执行文件,能够间接追踪到指令处理的具体信息,建立高级语言与底层指令处理的关联。

裸机编程特性
  1. 如果换 CPU,CPU 指令集变了,基于 CPU 指令集的程序还能用?
    通常无法直接使用。程序执行依赖特定 CPU 指令集的操作支持,指令集变更后,原程序失去运行基础。

  2. 如果接口硬件(类型、规模)扩充,包含原硬件接口程序能选择使用?
    若扩充的硬件接口仍保留原接口,原程序可选择继续使用;若完全替换原接口,程序需重新适配新接口才能用。

  3. 如果硬件设计未变但应用功能添加,以前的程序还可选择使用?
    若原程序不依赖新增功能,可继续使用;若程序逻辑与新增功能有关联或依赖,则需修改调整后才能用。

  4. 如果基于 CPU 指令集编写的程序,在哪调试?怎么调试?CPU 变了怎么办?
    需在专门的开发板或开发设备上调试。若 CPU 变更,需更换适配新 CPU 的开发板 / 设备,重新搭建调试环境。

  5. 程序设计要考虑哪些?
    需考虑:满足应用业务功能需求;CPU 指令集提供的操作能力;CPU 寄存器数量限制;硬件中断支持机制;内存单元布局;外部设备接口类型、规模及操作逻辑。

 操作系统上编程:算法语言编程

  • 软件层抽象隐藏硬件接口,算法语言语句抽象为虚拟CPU指令,不与具体的CPU指令集、内存和外部硬件接口对应。
  • 算法语言源程序代码通过一种自动化的工具,即编译程序翻译成为针对一种CPU可识别的CPU指令集的汇编语言符号,再转换为二进制编码的机器语言指令格式。

OS 上应用编程问题

  1. 算法设计

    • 无需重点关注编码、类型、字节顺序、运算溢出及精度等限制,也可不细究运算和存贮访问次数对程序效率的影响。
    • 依据问题特性选择迭代或递归算法,部分算法可能突破 OS 极限。
  2. 语句组织

    • 忽略命名唯一性(全局 / 局部变量、函数)、语句编译或解释后机器指令的差异对程序运行效率的影响。
    • 未注意相同运算因参与类型不同,可能导致机器指令实现功能错误。
  3. 运行访问

    • 变量按类型和大小分配字节,地址连续编址,需先分配后访问,避免使用失效、超量或跨区地址,防止污染函数地址或返回地址,引发程序失控、效率低等问题。
    • 中断处理可能插入语句(机器指令组)中,引发主程序运行状态保护问题。

 


http://www.mrgr.cn/news/97457.html

相关文章:

  • nginx管理nacos集群地址
  • 剖析AI与5G:是夸大其词,还是时代变革的引擎?-优雅草卓伊凡
  • CMake实战指南一:add_custom_command
  • Linux学习笔记(2) 命令基础:从概念到实践(期末,期中复习笔记全)
  • Redis 的五种数据类型面试回答
  • 使用成员函数指针数组简化C++类中的操作
  • 计算机系统---性能指标(3)续航与散热
  • 基于大模型的GCSE预测与治疗优化系统技术方案
  • NVIDIA Jetson 环境安装指导 PyTorch | Conda | cudnn | docker
  • 面试题vue
  • Ubuntu 22 Linux上部署DeepSeek R1保姆式操作详解(Xinference方式)
  • AI Agent设计模式一:Chain
  • vue2拖拉拽做个模拟公式工具
  • 【零基础入门unity游戏开发——动画篇】Animation动画窗口,创建编辑动画
  • [C++面试] explicit关键字面试点总结
  • modprobe: can‘t open ‘modules.dep‘: No such file or directory
  • 使用NVM下载Node.js管理多版本
  • 下载安装Node.js及其他环境
  • Opencv计算机视觉编程攻略-第十节 估算图像之间的投影关系
  • Linux服务宕机,java服务导致的内存溢出