【操作系统】操作系统 概述、历程
操作系统是控制应用程序执行的程序(计算机管理控制程序),是应用程序和计算机间的接口。
操作系统 概述、历程
一、操作系统:计算机的灵魂
操作系统是控制应用程序执行的程序(计算机管理控制程序),是应用程序和计算机间的接口。
操作系统的目标
建立 抽象(abstraction) 让系统方便、易于使用,并提供 高性能(performance) 即 最小化系统开销(minimize the overhead),尽可能减少额外的 时间、空间 。
为每个应用程序间提供 保护(protection),保证程序之间或与操作系统相互 隔离(isolation),互不干扰的运行。由于对 可靠性(reliability)、安全性(security) 的要求,操作系统会更加复杂。力求用尽可能少的代码实现更多的功能,构建简洁可靠的操作系统是一个相当大的挑战。
如上目标,总结为以下三点:
① 方便
使计算机更加易于使用。
② 有效
使计算机系统资源更有效地使用。
③ 易扩展
在妨碍服务的情况下,便于开发、测试、引入新的系统功能。
常见的操作系统
二、操作系统发展史
对于用户来说,操作系统是一个控制软件,了解操作系统的发展历程,有助于我们理解操作系统的设计。
操作系统并不是与计算机硬件一起诞生的,它是在人们使用计算机的过程中,为了满足两大需求:提高资源利用率、增强计算机系统性能,伴随着计算机技术本身及其应用的日益发展,而逐步地形成和完善起来的。
1、第一阶段:串行处理
- 20世纪40年代末至50年代中期,程序员需要直接将单个程序(被称为
作业
)通过输入设备(纸带、磁带、卡片阅读机)载入计算机。 - 程序出现错误时,显示对应错误的指示灯。
- 程序正常执行完成后,输出结果出现在打印机中。
大多数装置都使用拷贝登记表
来预定时间,按照顺序依次输入相关程序,计算机按照用户放入的顺序依次执行。
如此操作模式被称为串行,用户必须按照顺序访问计算机,如若出错,必须重新从头执行。
这样就暴露除了两大问题:
- 1、调度失策:
① 机器提早闲置,造成资源浪费(预定2小时却在1小时内完成任务)
② 机器终止未完成任务,造成任务的不完整(预定30分钟,却未能执行完任务,可能实际需要更长的时间) - 2、准备耗时:
程序会向内存中加载编译器和高级语言程序(源程序),保存编译好的程序(目标程序),然后加载目标程序和公共函数进行链接。每个步骤都要准备磁带 / 卡片组,需耗费大量的时间。
2、第二阶段:简单批处理系统
由于饱受诟病的调度问题与准备耗时长,加之早期计算机的昂贵,因此如何最大限度利用处理器,被提上了日程。
为提高利用率,人们尝试开发一种名为 批处理操作系统 的管理软件,其本质是一种监控程序(monitor)。
用户不再直接与访问硬件,而是将作业提交给计算机操作员,他将作业按顺序组织,并由监控程序使用,程序执行完成后,控制权 返回至 监控程序,监控程序 自动加载下一个程序,这种计算模式被称为批处理(batch processing)
,而这时的操作系统也只是一组常用的函数库,简单的完成相应的工作而已。
两角度分析问题:
监控程序角度 | 处理器角度 |
---|---|
监控程序常驻于内存并可执行(常驻监控程序 resident monitor) | 处理器执行内存中存储监控程序中的指令,这些指令读入下一个作业并存储值内存中的另一部分。 |
- 控制权交给作业:处理器执读取、执行用户程序中的指令。
- 控制权返回监控程序:处理器读取、执行监控程序中的指令。‘
由此,得出结论,批处理操作系统(监控程序),本质上只是一个简单程序。它依赖于处理器可以对内存的不同部分取指令的能力,交替 获取 / 释放控制权
。而监控程序的调度依靠作业控制语言(Job Control Language)
,用于为监控程序提供指令。
- 而这种只有一个单独程序执行的情况,我们称为
单道程序设计(uniprogramming)
。
3、第三阶段:多道批处理系统
简单批处理操作系统提供的自动作业序列,处理器仍然经常处于空闲状态,问题在于 I/O 设备(输入输出设备)
相对于处理器而言太慢。
- 若内存空间可容纳 操作系统 及 若干个用户程序,那么处理器可在等待I/O操作时,在程序间进行切换,这种处理称为
多道程序设计(multiprogramming)
和多任务处理(multitasking)
,这种设计减少了等待的时间,提高了运行速度,也引入了并发(concurrent)
问题。 - 因需多个作业需保存在内存中,因此引入了
内存管理
的概念,何时运行哪个程序,则依靠于特定的调度算法
。
操作系统内存管理的5项职责:
职责 | 说明 |
---|---|
进程隔离 | 操作系统必须保护独立进程,防止互相干扰各自的存储空间(数据、指令) |
自动分配和管理 | 程序应更具需要在内存中自动动态分配空间 |
支持模块化程序设计 | 程序员能定义程序模块,并动态创建、销毁模块,动态改变模块大小 |
保护和访问控制 | 程序不可随意访问内存,应避免分享所导致程序访问其他程序或操作系统的内存空间 |
长期存储 | 保证部分数据写入磁盘,长时间存储 |
4、第四阶段:分时系统
使用多道程序设计,可使批处理(batch processing)
更加有效,但许多作业需要提供一种用户直接于计算机交互的模式。
- 多道程序设计允许处理器同时处理多个批作业,而处理多个交互作业(即多个用户分享处理器时间),该技术称为
分时(time sharing)
。
在分时系统中,多个用户可以通过终端同时访问系统 ,由操作系统控制每个用户程序在很短的时间交替运行。
- 比如,系统时钟以约0.2s一个的速度产生中断,在每个时钟时钟中断处,操作系统恢复控制权,并将处理器分配给另一个用户进程。
因此,在固定的时间间隔内,当前用户进程被抢占(preempted)
,另一个用户进程被载入,这项技术称为时间片(time slice)
技术,每个进程公平竞争,下一步究竟选择哪个进程取决于短期调度器
或分派器
。
- 常用的策略是,依次给队列中的每个进程分配一定的时间,这称为
时间片轮转(round-robin)
技术,时间片轮转技术使用了一个环形队列。除此以外,还有按照优先级
调度的策略。
三、现代操作系统特征
1、微内核体系
微内核设计,即尽可能将内核功能转移到用户空间,学术界存在一种 更加极端的架构外核(exokernel)
。
-
时至今日,大多操作系统都只有一个
单体内核(monolithic kernel)
,操作系统大多数功能都由它来提供。 -
而
微内核体系结构(microkernel architecture)
只给内核分配一些最基本的功能,包括地址空间
、进程间通信(Inter Process Communication , IPC)
、基本调度
,其余服务均运行于运行模式。
2、多线程
多线程技术(multithreading)
:将执行一个应用程序的进程,划分为可以同时运行的多个线程。
线程(Thread)
:可分配的工作单元,也称为轻量级进程(Light Weight Process)
。进程(Process)
:一个 / 多个线程和相关系统资源。
多线程对执行许多本质上独立、不需要串行处理的应用程序很有帮助。且线程切换开销远小于进程切换。
- 线程应用:监听、处理很多客户请求数据的服务器(为每个客户分配线程)
3、对称多处理
对称多处理(Symmetric MultiProcessing, SMP),可调度进程 / 线程 到所有的处理器上运行。
对称多处理体系结构优势:
优势 | 说明 |
---|---|
性能 | 性能更佳,多个进程可分别在不同的处理器上同时运行。 |
可用性 | 所有处理器可执行相同功能,单个处理器失效,降低部分性能,系统可继续运行。 |
增量增长 | 用户可添加额外处理器增强功能。 |
可扩展性 | 根据系统配置处理器数量,提供不同产品。 |
多线程
与对称多处理
为两个独立的概念,它们相辅相成,一起使用更加有效。
4、分布式操作系统
分布式操作系统(distributed operating system),使用户产生错觉,仿佛具有单一的内存、外存。
5、面向对象设计
面向对象设计(object-orient design),用于给小内核增加模块化的扩展。在操作系统一级,基于对象的结构可使程序员定制操作系统,而不会破坏系统的完整性。
更多推荐
所有评论(0)