系统软件
系统软件:操作系统、中间件(middleware),OS是所有系统软件的基础
OS
发展历史
操作系统的发展与计算机硬件的发展并行
- 在最初内存以千字节衡量,磁带作为磁存储器的唯一形式时,OS仅仅作为常驻监控程序(resident monitor programs,OS的原型),只能装载、执行和终止程序
- 1960s——多道程序(multiprogramming),多个程序可以在内存中并发执行,通过每个程序一次循环占用CPU中的一个特定时间片实现
- 分时系统(time-sharing system)交互式多道程序系统,多台终端机连接到主系统上,支持多个用户对系统进行并发的访问;CPU可以在用户之间快速切换,每个用户都可以在一个极短的时间内获得处理器的使用权,在进程间切换的过程称为上下文切换
- 紧密耦合多处理器系统(tightly coupled multiprocessor systems):共享一个中央存储器和相同的一套I/O设备,广泛用于少于16各处理器的多处理器系统
- 松散耦合多处理器系统(loosely coupled multiprocessor systems):物理上拥有分布式存储器,也被称为分布式系统
OS的设计
两个至关重要的组件:内核(kernel)和系统程序(system program)
内核是OS的核心,为进程管理器、调度器、资源管理器、I/O管理器提供必要的支持,负责调度、同步、保护/安全、存储器管理和中断处理
内核分为微内核(microkernel)和宏内核(monolithic)
- 微内核:提供最少的功能(只提供OS最常见的功能),大多数服务由外部程序提供
优点:更安全、简单管理、可移植
缺点:速度慢、效率低
eg:windows 2000,Mach、QNX
- 宏内核:在一个进程中提供了所有必需的功能,远远大于微内核
优点:执行速度快
缺点:难以移植
eg:Linux、MacOS、DOS
- 混合型:Microsoft Windows NT kernel
OS的服务
进程管理:OS服务的核心,包括从进程创建,到调度进程的使用资源,再到删除进程以及进程终止后的清理工作等;OS跟踪每个进程,包括它的状态、正在使用的资源以及请求的资源,避免可能出现的同步问题(synchronization problem)
调度方法
- 先到先服务(First-come,first-served,FCFS):非抢占式,易于实现,按到达先后顺序
- 最短作业优先(Shortest job first,SJF):既可以是非抢占式,也可以是抢占式,系统执行时间最短的进程相比其他进程具有更高的调度优先权,但没有办法预知一个进程准确的运行时间
- 循环调度(Round robin scheduling,RR):公平且简单的抢占式调度策略,给每个进程分配一个确定的CPU时间片,通常用在分时系统
- 优先级调度(Priority scheduling):抢占式,优先级高的抢占优先级低的作业
受保护的环境
多用户操作系统应防止进程在系统中无序进行,进程执行必须与操作系统和其他进程相隔离
虚拟机
真实机器硬件的镜像,内核接收并管理从虚拟环境中运行的进程发出的所有资源请求。
子系统和分区
子系统构建了逻辑上隔离的环境,环境能够被单独地配置和管理
在一些大型计算机系统中,子系统远远达不到对机器及资源进行划分的目的,还需要更加复杂的保护机制来实施安全防护和资源管理
逻辑分区(logical partitions,LPARs)在一个物理系统中创建若干独立的机器,并且这些机器间共享所有资源
编程工具
汇编
汇编器是最简单的编程工具,可以将助记符指令(mnemonic instructions)经过两轮传递翻译成机器语言
汇编器(assembler)从助记符指令生成一个目标程序文件(object program file)
绑定(binding):将物理地址分配给程序变量
- 编译时绑定:绝对代码
- 加载时绑定
- 运行时绑定:需要支持地址映射
链接器
在大多数系统中,编译器的输出必须经过链接编辑器(链接器)才能在目标系统上运行,链接是一个程序的外部符号与所有其他文件导出符号进行匹配的过程,并产生一个不包含任何未解析外部符号的单一二进制文件(Linking is the process of matching the external symbols of a program with all exported symbols from other files, producing a single binary file with no unresolved external symbols)
动态链接库(DLL,dynamic link libraries)
汇编语言被认为是第二代程序语言(2GL)
编译程序语言(compiled programming languages):Java、C、C++、Pascal、COBOL是第三代语言
Java
在JVM中运行,write once,run anywhere,可移植性
数据库软件
数据库软件包含了一个企业最重要的资产
数据库视图包含了物理和逻辑视图
事务管理器的特性ACID
- 原子性
- 一致性
- 隔离性
- 持久性
如果没有这些特性,数据库会处于竞争状态(race conditions)
记录锁机制(record locking mechanism)可以保证隔离性
事务管理器
一种提高数据库性能的方法是减少数据库的工作量,由其他系统组件完成数据库的部分工作。事务管理器作为数据库的一个组件经常从数据库管理系统核心的数据管理功能中分离出来
早期成功的事务管理器:CICS-IBM的客户信息和控制系统