一、演化
-
批处理系统: 为控制大型计算机,保证计算机所有资源被从一个作业转换到另一个作业。
-
分时系统:多道程序引入,可以将多个作业同时装入内存并且仅当该资源可用时分配给需要它的作业。
-
个人系统:单用户操作系统,如DOS(磁盘操作系统)。
-
并行系统:在同一计算机中安装多个CPU,每个CPU可以处理一个程序或者一个程序的一部分。
-
分布式系统:在一台计算机上运行的作业可以在远隔千里的多台计算机共同完成,程序在一台计算机上运行一部分,在另一台计算机上运行一部分。
-
实时系统:在特定时间限制内完成任务,如交通控制,病人监控等。
二、组成部分
操作系统必须管理系统中的不同资源,至少能存储管理,设备管理,文件管理,进程管理。
1、用户界面
用户界面或命令解释程序,负责操作系统和外界通信。
2、内存管理器
- 单道程序(淘汰):大多数内存用来装载单一的程序,仅仅一小部分用来装载操作系统;程序必须能装进内存,一次仅能运行一个程序。
- 多道程序:内存同一时刻可以装入多个程序,CPU轮流为其服务。
(1)分区调度
内存被分为不定长的几个分区,每个分区保存一个程序,CPU在各个程序之间交替服务。CPU可以进行优先级管理,用于控制分配给每个程序的CPU时间。
分区的大小必须由内存管理器预先确定。太小,程序装不下;太大,会出现空闲区。
(2)分页调度
内存被分为大小相等的若干部分,称为帧;程序被分为大小相等的部分,称为页;页和帧的大小通常是一样的。页被载入内存中的帧(不必连续),分页调度提高了分区调度的效率,但是整个程序任需要在运行前全部载入内存。
(3)请求分页调度
和分页调度类似但是程序不必全部载入内存,页可以依次载入内存、执行,然后被另一页代替,即内存可以同时载入多个程序的页。
(4)请求分段调度
和将程序分为大小相等的页不同,程序通常由主程序和子程序组成,在请求分段调度中,程序将按程序员的角度划分成段,它们载入内存、执行,然后被其他段代替。由于段不等长,会在内存中产生空闲区。
(5)请求分页和分段调度
结合两者优点以提高效率。程序分为多个帧,段可以分为多个页,页依次装入内存执行。
- 虚拟内存:请求分页调度和请求分段调度意味着当程序运行时,一部分程序在内存中,一部分程序在硬盘上。例如10MB内存可以运行10个程序,每个程序有3MB,内存实际上只有10MB,但是虚拟内存有30MB。
3、进程管理器
(1)程序、作业和进程
- 程序:由程序员编写的一组稳定的指令,存在磁盘上。
- 作业:从一个程序被选中执行到其运行结束的过程包括在磁盘上等待调入内存,在内存中等待CPU执行,在磁盘或内存等待I/O,CPU运行。
- 进程:一个运行中的程序,只要作业装入内存就成为一个进程。
(2)状态图
保持状态,就绪状态,等待状态,运行状态,终止状态
(3)调度器
将一个作业或进程从一饿状态改变为另一个状态,进程管理器使用了两个调度器。
- 作业调度器:将一个作业从保持状态转入就绪状态,或从运行状态转为终止状态,即负责创建或终止一个进程。
- 进程调度器:将一个进程从一个状态转到另一个状态。
(4)队列
同一时间会有很多作业和进程相互竞争计算机资源。例如,当一些作业进入内存时,其他的必须等待直到有内存空间;当有一个进程正在使用CPU,其他进程就必须等待直到CPU空闲为止,进程管理器使用队列来等待。
一个操作系统有多个队列。进程管理器可以用多种策略从队列中选择下一个作业或进程,先入先出,最高优先级等。
(5)进程同步
只要一个资源被多个进程同时使用,则会出现两个问题:死锁和饿死。
- 死锁:当一个文件被一个进程使用时,将不能被其他进程使用,操作系统如果没有对进程的资源进行限制时就会发生死锁。图中A持有文件1,B持有文件2,它们相互请求文件但不释放手中文件导致死锁。互斥(一个资源只能被一个程序占有),资源占有,抢先(操作系统不能临时对资源重新分配),循环等待四者同时满足则死锁发生。死锁后打破其中一个则打破死锁。
- 饿死:一个进程持续请求一个资源,但该资源被操作系统持续分配给其他进程,则该进程被饿死。
(6)设备管理器(I/O管理器)
在计算机系统中I/O设备存在着数量和时间上的限制,这些设备和内存相比速度要慢的多,当一个进程访问I/O设备时,这些设备对于其他进程来说是不可用的。设备管理器负责让I/O设备使用起来更高效。
4、文件管理器
- 控制文件的访问:只有那些获得允许的应用程序才能够访问,访问方式也可以不同。
- 管理文件的创建、删除、修改。
- 给文件命名。
- 管理文件的存储:怎样存储,存在哪里。
- 负责归档和备份
三、主流操作系统
1、UNIX
- 是一个可移植的操作系统(其用C语言编写);
- 拥有一套功能强大的工具即命令,通过组合它们(脚本)去解决问题,而在其他操作系统中需要编程;
- 设备无关性:其本身包含了设备驱动程序,可以方便地配置来运行任何设备。
- 是多用户、多道程序、可移植的操作系统,它被设计来方便编程、文本处理和通信。
- 包括内核,命令解释器,工具和应用。
2、Linux
- 内核:内存管理、进程管理、设备管理和文件管理。
- 系统库:包含命令解释器,用于和内核交互。
- 系统工具:系统库提供的服务,执行管理任务的各个程序。
- 支持标准因特网协议:套接字接口、协议驱动和网络设备驱动。
- 安全特性:身份验证和访问控制。
3、Windows
- 可扩展性:其是具有多层的模块化体系结构。
- 可移植性:用C编写;
- 可靠性:能处理包括防止恶意软件的错误条件;
- 兼容性:能运行其他操作系统编写的程序;
- 性能:基友快速响应时间;
- 体系结构:硬件,内核层(硬件抽象层,内核,I/O管理器,对象管理器,安全引用监控器,进程管理器,虚拟内存管理器,本地过程调用工具),用户层。