计算机操作系统

第一章

基础概念

裸机:没有配置软件的计算机。即计算机硬件
虚拟机:覆盖了软件的机器称为虚拟机或扩展机。

配置操作系统的主要目的:

1. 提供接口,易于使用;
2. 有效地控制和管理资源;
3. 合理地组织计算机系统的工作流程,以提高资源利用率并改善系统性能。

什么是操作系统:

1. 从用户观点看:操作系统是用户与计算机硬件之间的接口,为用户使用计算机提供服务。
2. 从资源管理观点看:操作系统是计算机系统资源的管理者。

资源的共享使用方式:
时分复用:多个用户或程序轮流使用某个资源
空分复用:多个用户或程序同时使用资源的一部分
作业(job)是用户在一次解题或一个事务处理过程中要求计算机系统所做工作的集合,包括用户程序、所需的数据及命令等。
所谓分时技术就是:
把处理机的运行时间分成很短的时间片,按时间片轮流把处理机分配给各联机作业使用。
若某个作业在分配给它的时间片内不能完成其计算,则该作业暂停运行,把处理机让给另一个作业使用,等待下一轮时再继续其运行。

实时系统:是指系统能及时响应外部事件的请求,在规定的时间范围内完成对该事件的处理,并控制实时任务协调一致地运行。

操作系统的形成与发展

无操作系统->简单的批处理系统->多道批处理系统->分时系统、实时系统等等

手工操作方式:

  1. 手工操作方式的特点:
    用户独占计算机资源,资源利用率低
    CPU等待人工操作
  2. 手工操作方式的不足:
    手工操作的慢速与CPU运算的高速之间的矛盾。此即人机矛盾。
    CPU的快速与I/O设备慢速的矛盾。
    为了解决人机矛盾,为了从一个作业到下一个作业的自动化,人们提出了批处理系统
    监督程序是一个常驻内存的程序,它管理作业的运行,负责装入和运行各种系统程序来完成作业的自动过渡。( 监督程序是最早的操作系统雏形)
    早期的批处理分为:
    联机批处理
    脱机批处理

在早期联机批处理系统中,
操作员将若干作业合成一批输入到磁带上,
接着监督程序自动把磁带上该批作业的第一个调入内存编译,
然后由装配程序把编译结果装入内存启动执行,
该作业运行结束后输出结果;
第一个作业完成后,监督程序又调入第二个作业并重复上述过程,直到该批作业全部完成。
在完成了一批作业后,监督程序又控制输入另一批作业到磁带上,并按上述步骤重复处理。
联机批处理中采用联机输入/输出,即输入/输出操作在主机控制下进行,其缺点是速度慢。
为此引入脱机输入/输出技术。
在脱机批处理系统中,除主机外另设一台外围机(又称卫星机)。
用户作业通过外围机输入到磁带上,而主机只负责从磁带上把作业调入内存,并予以执行。
作业完成后,主机负责把结果输出到磁带上,然后再由外围机把磁带上的信息在打印机上输出。
脱机输入:将用户程序和数据在一台外围机(又称卫星机)的控制下,预先从低速输入设备输入到磁带上,当CPU需要这些程序和数据时,再直接从磁带机高速输入到内存。
脱机输出:当CPU需要输出时,高速地把结果送到磁带上,然后在外围机的控制下,把磁带上的计算结果由相应的输出设备输出。
脱机输入/输出:输入/输出操作在外围机的控制下,脱离主机进行。
脱机I/O优点:
减少了CPU的空闲时间;
提高I/O速度。
联机输入/输出:输入/输出操作在主机控制下进行。
两种批处理的方式最大的不同就是看是否在输入输出操作在外围计的控制还是在主机的控制。

单处理机系统中多道程序运行特点:
多道:计算机内存中同时存放多道相互独立的程序。
宏观上并行:同时进入系统的多道程序都处于运行过程中,即它们先后开始了各自的运行,但都未运行完毕。
微观上串行:内存中的多道程序轮流占有 CPU,交替执行。

由于批处理系统没有人机交互性,后来就又出现了分时系统、实时系统,近年来又出现了个人计算机操作系统、网络操作系统、分布式操作系统、嵌入式操作系统等。
推动操作系统发展的因素主要可归结为:

  • 硬件技术更新
  • 应用需求扩大

最基本的操作系统

最基本的操作系统类型有三种:批处理操作系统、分时操作系统、实时操作系统。

批处理操作系统

内存中始终只保持一道作业的批处理系统称为单道批处理系统。
单道批处理系统的特征:
自动性:自动依次运行,无人工干预
顺序性:完成顺序与进入顺序相同
单道性:内存只有一道作业
在批处理系统中引入多道程序设计技术后就形成了多道批处理系统。
多道批处理系统的特征:
多道性:计算机内存中同时存放几道相互独立的程序。
无序性:进入顺序与完成顺序无严格对应关系。
调度性:作业从提交到完成经历两级调度:作业调度、进程调度。

分时操作系统

推动分时系统发展的主要动力是用户需求,即:
人机交互:控制程序运行
共享主机:机器昂贵,多人使用较经济
方便用户上机: 可以通过终端提交作业
分时操作系统的特征:
多路性、也称同时性:一台计算机与若干台终端相连接,终端上的这些用户可以同时使用计算机。
交互性:用户通过终端采用人机会话的方式直接控制程序运行,同程序进行交互。
独立性:用户彼此之间都感觉不到别人也在使用这台计算机,好像只有自己独占计算机一样。
及时性:用户请求能在很短时间内获得响应。

实时操作系统

实时系统的特征:
及时性:响应时间由控制对象决定。
可靠性:高可靠性。

通用操作系统

如果一个操作系统兼有批处理、分时和实时操作系统三者或其中两者的功能,则称该操作系统为通用操作系统。

操作系统的基本特征

并发,共享,虚拟,不确定(异步)

并发和共享是操作系统的两个最基本特征,二者之间互为存在条件。
一方面,资源的共享是以程序的并发执行为条件的,若系统不允许程序的并发执行,自然不存在资源共享问题;
另一方面,若系统不能对资源共享实施有效的管理,也必将影响到程序的并发执行,甚至根本无法并发执行。

核心态与用户态

核心态:又称管态、系统态,是操作系统管理程序执行时机器所处的状态。这种状态具有较高的特权,能执行一切指令,访问所有的寄存器和存储区。
用户态:又称目态,是用户程序执行时机器所处的状态。这种状态具有较低特权,只能执行规定的指令,访问指定的寄存器和存储区。

操作系统的资源管理功能包括:
处理机管理:也称进程管理
存储器管理
设备管理
文件管理

进程管理:
进程创建和删除
Process creation and deletion.
进程挂起和恢复
Process suspension and resumption.
提供进程同步机制
Providing mechanisms for process synchronization
提供进程通信机制
Providing mechanisms for process communication
提供死锁处理机制
Providing mechanisms for deadlock handling

内存管理:
记录内存的哪部分正在被使用及被谁使用
Keep track of which parts of memory are currently being used and by whom.
决定将哪个进程及其数据调入(调出)内存
Decide which processes and data to move into and out of memory 
需要时分配和收回存储空间
Allocate and deallocate memory space as needed. 

设备管理:
设备分配:根据用户的I/O请求,为之分配所需的设备,设备使用完成后还应回收。
缓冲管理:对各类设备缓冲区进行有效管理。
设备驱动:主要完成设备启动、I/O操作及中断处理。
设备独立性:指用户程序中的设备与实际使用的物理设备无关

文件管理:
创建和删除文件 Creating and deleting file.
创建和删除目录 Creating and deleting directory.
提供操作文件和目录的原语 Supporting primitives for manipulating files and directories.
把文件映象到二级存储器 Mapping files onto secondary storage. 
在稳定存储介质备份文件 File backup on stable (nonvolatile) storage media.

计算机硬件所提供的支持,构成了现代操作系统的运行环境。包括:
处理机、存储器、设备、时钟、中断等

第二章

操作系统提供的服务:

  1. 用户接口:包括命令行接口、批处理接口及图形用户接口
  2. 程序执行
  3. IO操作
  4. 文件系统操纵
  5. 通信
  6. 错误检测
  7. 资源分配
  8. 统计
  9. 保护和安全

操作系统向用户提供的接口:

  1. 命令接口(脱机的,联机的)
  2. 图形接口
  3. 程序接口(系统调用接口)

系统调用可以大致分为5类

  1. 进程控制
  2. 文件管理
  3. 设备管理
  4. 信息维护
  5. 通信

系统服务可划分为:

  1. 文件操纵
  2. 状态信息
  3. 文件修改
  4. 程序语言支持
  5. 程序调用和执行
  6. 通信

多数用户所看到的操作系统是由应用和系统程序所定义的,而不是系统调用所定义

操作系统是一个大型系统软件,其内核结构主要有三种:
模块结构
层次结构
微内核结构

操作系统内核按照其运行的情况可分为:
宏内核:也称单内核,在运行过程中,它是一个独立的进程。模块结构、层次结构的系统内核基本都是宏内核。Linux系统属于宏内核类型。
微内核:微内核中,大部分内核模块都作为独立的进程,它们之间通过消息通信使模块之间互相提供服务。微内核本身类似一个消息管理器,通过合理组织内核模块来保证只调入最需要的模块运行。Windows NT/2000系统属于微内核类型。

宏内核:
内核包括了在物理硬件之上,系统调用之下的一切
The kernel consists of everything below the system-call interface and above the physical hardware
内核通过系统调用提供文件系统、 CPU调度、存储管理和其他操作系统功能。
The kernel provides the file system, CPU scheduling, memory management, and other operating-system functions.

微内核:
将所有非基本部分从内核中移走,并将它们实现为系统程序或用户程序,这样得到更小的内核。
Removing all nonessential components from the kernel and implementing them as system and user-level programs,The result is a smaller kernel.
微内核通常包括最小的进程和内存管理以及通信功能。
Typically,however,microkernels provide minimal process and memory management,in addition to a communication facility.

进程与线程

程序并发执行的条件
读集:语句执行期间要引用的变量集合,记为R(Si)={a1,…,am}
写集:语句执行期间要改变的变量集合,记为W(Si)={b1,…,bn}
Bernstein条件能保证两个程序段并发执行而不会产生与时间有关的错误:
R(Si)∩ W(Sj)={ } 这两条保证
R(Sj)∩ W(Si)={ } 两次读之间数据不变
W(Si)∩ W(Sj)={ } 本条保证写操作结果不丢

进程的特征
动态性:进程是程序的一次执行过程。动态性还表现为它因创建而产生,因调度而执行,因无资源而暂停,因撤消而消亡。而程序是静态实体。
并发性:多个进程实体同时存在于内存中,能在一段时间内同时运行。
独立性:在传统OS中,进程是独立运行的基本单位,也是系统分配资源和调度的基本单位。
异步性:也叫制约性,进程以各自独立的不可预知的速度向前推进。
结构性:进程实体由程序段、数据段及进程控制块组成,又称为进程映像。

进程创建:
通过创建进程系统调用可以创建多个新进程,创建进程称为父进程,被创建进程称为子进程。
A process may create several new processes via a create-process system call, The creating process is called a parent processes,and the new processes are called children.
每个新进程可以再创建新进程,从而形成了进程树。
Each of these new processes may in turn create other process,forming a tree of processes.
进程树又称进程图或进程家族树

资源共享(方式):(与王道上的有差异)
父进程子进程共享所有的资源。
Parent and children share all resources.
子进程共享父进程资源的子集。
Children share subset of parent’s resources.
父进程和子进程无资源共享。
Parent and child share no resources.
执行(方式) Execution
父进程和子进程并发执行。
Parent and children execute concurrently.
父进程等待,直到子进程终止。
Parent waits until children terminate.
地址空间 Address space
子进程是父进程的复制品。 The child process is a duplicate of the parent process
子进程装入一个新程序。The child process has a new program loaded into it.

高级进程通信方式可分为三大类:

  1. 共享存储器系统
    基于共享数据结构的通信方式:诸进程通过公用某些数据结构交换信息。如生产者-消费者问题。
    基于共享存储区的通信方式:在存储器中划出一块共享存储区,诸进程可通过对共享存储区进行读或写来实现通信。包括建立共享存储区、附接及断接。
  2. 消息传递系统
    直接通信方式:发送进程将消息发送到接收进程,并将其挂在接收进程的消息队列上;接收进程从消息队列上取消息。
    间接通信方式:发送进程将消息发送到信箱,接收进程从信箱中取消息。

  3. 管道通信系统或共享文件系统
    管道(共享文件)通过连接读进程和写进程的共享文件来实现读写进程之间通信。

管道

使用管道通信时,基本上采用文件系统的原有机制实现。包括创建、打开、关闭、读写等。
管道机制应提供以下三方面的协调能力:
互斥:诸进程互斥读写管道
同步:管道空、满情况处理
存在:确定对方是否存在

进程间通信

独立进程不能影响其他进程或被其他进程执行所影响。
Independent process cannot affect or be affected by the execution of another process.
协作进程可能影响另一个进程的执行或被另一个进程执行影响
Cooperating process can affect or be affected by the execution of another process

进程协作的优点
Advantages of process cooperation

  1. 信息共享 Information sharing
  2. 加速运算 Computation speed-up
  3. 模块化 Modularity
  4. 方便 Convenience
    协作进程需要一种进程间通信的机制来允许进程间交换数据与信息。
    高级进程通信方式是指进程之间以较高的效率传送大量数据。

同步

进程间的消息通信存在同步关系
对于发送进程来说,它在执行发送原语后有两种可能选择:
发送进程阻塞,直到这个消息被接收进程接收到,这种发送称为阻塞发送。
发送进程不阻塞,继续执行,这种发送称为非阻塞发送。
根据发送进程和接收进程采取方式的不同,通常有三种常用的组合方式:
非阻塞发送、阻塞接收。
非阻塞发送、非阻塞接收。
阻塞发送,阻塞接收。

线程

线程是CPU使用的一个基本单元,包括:
A thread is a basic unit of CPU utilization,it consists of:
线程标识 a thread ID
程序计数器 program counter
寄存器集 register set
栈 stack
线程与属于同一进程的线程共享:
A thread shares with threads belonging to the same process:
代码段 code section
数据段 data section
其他操作系统资源 other operating-system resources
线程的定义情况与进程类似,存在多种不同的提法。下面列出一些较权威的定义:
线程是进程内的一个执行单元。
线程是进程内的一个可调度实体。
线程是程序(或进程)中相对独立的一个控制流序列。
线程是进程内一个相对独立的、可调度的执行单元。

内核线程(也称内核级线程 kernel-level thread )是指依赖于内核,由操作系统内核完成创建和撤消工作的线程。
在支持内核线程的OS中,内核维护进程和线程的上下文信息并完成线程切换。
一个内核线程阻塞时不会影响其他线程的运行。
处理机时间分配的对象是线程,所以有多个线程的进程将获得更多处理机时间。

用户线程(也称用户级线程user-level thread)是指不依赖于操作系统核心,由应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制的线程。
用户线程的维护由应用进程完成,可以用于不支持内核线程的操作系统
当一个线程阻塞时,整个进程都必须等待,处理机时间是分配给进程的,进程内有多个线程时,每个线程的执行时间相对少一些。