批处理系统
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 极限。
-
语句组织:
- 忽略命名唯一性(全局 / 局部变量、函数)、语句编译或解释后机器指令的差异对程序运行效率的影响。
- 未注意相同运算因参与类型不同,可能导致机器指令实现功能错误。
-
运行访问:
- 变量按类型和大小分配字节,地址连续编址,需先分配后访问,避免使用失效、超量或跨区地址,防止污染函数地址或返回地址,引发程序失控、效率低等问题。
- 中断处理可能插入语句(机器指令组)中,引发主程序运行状态保护问题。