操作系统概述

2.1 Operating System Objectives/ Functions

  • Operating System is:

    –A program that controls the execution of application programs控制应用程序的执行

    –An interface between applications and hardware应用程序与硬件的接口

  • Main objectives of an OS:主要目标

    –Convenience方便性

    –Efficiency有效性

    –Ability to evolve可扩展性

1.操作系统提供的服务

  • Program development程序开发

    –Editors and debuggers编辑、调试.

    –Program execution程序执行

    –OS handles scheduling of numerous tasks required to execute a program执行程序所需的大量任务的安排

  • Access I/O devices访问I/O设备

    –Each device will have unique interface,OS presents standard interface to users给用户呈现统一接口

  • Controlled access to files文件的访问控制

    –Accessing different media but presenting a common interface to users为用户提供公共接口访问不同存储介质

    –Provides protection in multi-access systems为多路存取(多用户)系统提供保护

  • System access系统访问

    –Controls access to the system and its resources对系统及其资源的访问控制,如访问冲突、用户权限等

  • Error detection and response错误检测响应

    –Internal and external hardware errors内外硬件错

    –Software errors 程序错

    –做出响应以清除错误:终止程序、重复操作、报错

  • Accounting记帐

    –Collect usage statistics 收集资源使用统计数据

    –Monitor performance性能监控

2.As Resources Manager 作为资源管理者

  • A computer is a set of resources for the movement, storage, and processing of data.计算机是资源集合,用于数据移动、存储、处理
  • The OS is responsible for managing these resources.负责管理资源

Operating System as Software

  • The OS functions in the same way as an ordinary computer software采用与普通计算机软件一样的方式运转

    –It is a program, or suite of programs, executed by the processor

  • Operating system relinquishes control and must depend on the processor to allow it to regain control交出处理器的控制权并依赖处理器再收回控制权

Kernel内核

  • 支持系统运行的基本功能和基本操作的一组程序模块,内核通常驻留在内核空间,运行于核心态

    –单内核(monolithic-kernel):Linux

    –微内核(micro-kernel):Mach

  • 内核的功能

    –中断处理

    –低级调度:线程、进程

    –原语管理:一个整体而不可分割

3. Evolution of Operating Systems操作系统的可扩展性

  • Operating systems will evolve over time不断发展,因为:

    –Hardware upgrades硬件升级

    –New types of hardware新的硬件

    –New services新服务

    –Fixes修改

4. Operating System Functions

  • 从资源管理的角度

    –处理机管理

    –存储管理

    –设备管理

    –文件管理

    –用户接口

2.2 Evolution of Operating Systems

串行处理->简单批处理->多道批处理->分时系统

1. Serial Processing串行处理

No OS:

programmers interacted directly with the computer hardware系统程序员直接与硬件交互

Machines run from a console with display lights, toggle switches, input device, and printer从有显示灯、开关、输入设备、打印机的控制台运行

Users have access to the computer in “series”用户以串行方式访问计算机

  • Problems include:

    –Scheduling调度:预约机时,分配的机时过长或过短都可能浪费处理器时间

    –Setup time准备时间:一系列工作才可以使作业运行

2. Simple batch system 简单批处理系统

  • Early computers were extremely expensive

    –Important to maximize processor utilization最大化处理器利用率

  • Monitor监督程序

    –用户不直接使用计算机

    –作业提交给计算机操作员,操作员把若干个作业分类编成作业执行序列,每个批作业由监督程序(Monitor)自动依次处理。

Monitor Point of View 监督程序角度

  • Monitor controls the sequence of events控制事件的顺序
  • Resident Monitor大部分常驻内存
  • Monitor reads in job and gives control读入作业并赋予控制权
  • Job returns control to monitor作业运行完归还控制权

Processor Point of View 处理器角度

  • Processor executes instruction from the memory containing the monitor执行监督程序指令

    –读下一用户作业到内存,跳转到用户程序执行

  • Executes the instructions in the user program until it encounters an ending or error condition执行用户程序指令直到结束或出错

    –回到监督程序执行其指令

监督程序的作用

  • 作用

    –The monitor performs a scheduling function具备调度功能

    –The monitor improves job setup time as well. 改善了作业的准备时间

    –因此单道批处理系统提高了处理器利用率

Job Control Language 作业控制语言

  • Special type of programming language to control jobs 用于控制作业的特殊编程语言

  • Provides instruction to the monitor为监督程序提供指令,例如:

    –What compiler to use使用什么编译器

    –What data to use处理何数据

The monitor performs a scheduling function:

  • A batch of jobs is queued up, and jobs are executed as rapidly as possible, with no intervening idle time.
  • The monitor improves job setup time as well.
  • With each job, instructions are included in a primitive form of job control language (JCL).A special type of programming language used to provide instructions to the monitor.

Desirable Hardware Features 具备的硬件特征

  • Memory protection for monitor内存保护

    –Jobs cannot overwrite or alter monitor用户作业不能覆盖或修改monitor内容

  • Timer时钟

    –Prevent a job from monopolizing system防止一个作业独占系统

  • Privileged instructions特权指令

    –Only executed by the monitor只被monitor执行

Interrupts中断

The monitor, or batch operating system, is simply a computer program.

  • It relies on the ability of the processor to fetch instructions from various portions of main memory to alternately seize and relinquish control.

Certain other hardware features are also desirable:

Memory protection: While the user program is executing, it must not alter the memory area containing the monitor.

  • If such an attempt is made, the processor hardware should detect an error and transfer control to the monitor.
  • The monitor would then abort the job, print out an error message, and load in the next job.

Timer: A timer is used to prevent a single job from monopolizing the system.

  • The timer is set at the beginning of each job.
  • If the timer expires, the user program is stopped, and control returns to the monitor.

Privileged instructions: Certain machine level instructions are designated privileged and can be executed only by the monitor.

  • If the processor encounters such an instruction while executing a user program, an error occurs causing control to be transferred to the monitor.
  • Among the privileged instructions are I/O instructions, so that the monitor retains control of all I/O devices.
  • E.G. this prevents a user program from accidentally reading job control instructions from the next job.
  • If a user program wishes to perform I/O, it must request that the monitor perform the operation for it.

Interrupts: Early computer models did not have this capability.

  • This feature gives the OS more flexibility in relinquishing control to and regaining control from user programs.

Modes of Operation运行模式

  • User Mode用户态(目态)

    –User program executes in user mode

    –不能访问特定区域、不能执行某些指令(特权指令)

  • Kernel Mode核心态(管态、内核态、系统态)

    –Monitor executes in kernel mode内核工作的模式

    –Privileged instructions may be executed, all memory accessible.可以执行特权指令,访问所有内存

单道批处理系统的特征

  • 自动性–每个批作业由一个专门的监督程序(Monitor)自动依次处理**
  • 顺序性–作业顺序进入内存,顺序完成**
  • 单道性–内存中仅有一道用户作业**

3. Multiprogrammed Batch Systems多道批处理系统

CPU is often idle 单道中CPU总闲着

I/O devices are slow compared to processor I/O设备比处理器慢

Uniprogramming 单道程序设计

  • Processor must wait for I/O instruction to complete before preceding处理器等待I/O操作的完成

Multiprogramming多道程序设计

  • When one job needs to wait for I/O, the processor can switch to the other job一个作业等待I/O,处理器可切换到另一作业
  • 可容纳更多作业
  • 也称为Multitasking,在主存中同时有若干个作业,CPU在其中多重切换,共享资源

  • 优点:

    –资源利用率高:CPU、外设和内存

    –系统吞吐量大:单位时间内完成的工作总量大

  • 缺点:

    –用户交互性差

    –作业周转时间长

Throughput rate(吞吐量):单位时间内完成的作业数目。

Turnaround time(周转时间):作业进入系统到完成所经历的时间。

CPU利用率的估算

  • CPU的利用率=1-p^n,其中P是一个程序等待I/O的时间占其运行时间的比例;n是多道程序度
  • 例:1MB内存,OS占400KB,每个用户进程占200KB,进程等待I/O的时间为80%。若增加1MB内存,CPU的利用率提高多少?

多道批处理系统的特征

  • 多道:内存中同时存放几个作业,宏观上并行运行,微观上串行运行
  • 无序性
  • 调度性:两次调度(作业调度、进程调度)

多道批处理系统上的技术

  • 调度:程序的现场保存和恢复
  • 资源共享:资源的竞争和同步
  • 内存使用:提高内存使用效率
  • 内存保护:系统存储区和各应用程序存储区不可冲
  • 设备分配,系统提供I/O程序
  • 文件非顺序存放、随机存取

4. Time Sharing Systems

Using multiprogramming to handle multiple interactive jobs利用多道程序设计技术处理多个交互作业

Processor’s time is shared among multiple users多用户共享处理器时间

Multiple users simultaneously access the system through terminals多用户通过终端同时访问系统

Batch Multiprogramming Time Sharing
Principal objective主要目标 Maximize processor use处理器利用率最大化 Minimize response time响应时间最小化
Source of directives to OS指令来自于 Job control language commands provided with the job作业中的作业控制语言指令 Commands entered at the terminal终端键入指令

Early Example: CTSS

  • Compatible Time-Sharing System (CTSS)

  • Time Slicing时间分片

    –When control was passed to a user,user program and data were loaded当控制交给用户,用户程序、数据被加载到内存

    –Clock generates interrupts about every 0.2 sec时钟每0.2秒产生一次中断

    –At each interrupt OS gained control and could assign processor to another user每次中断OS先获得控制权,再将处理器赋予另一用户**

Timing 分时

  • 把计算机的系统资源(尤其是CPU时间)进行时间上的分割,每个时间段称为一个时间片(time slice),每个用户依次轮流使用时间片。
  • “分时”的含义:分时是指多个程序分时共享硬件和软件资源(即:多任务)。多个用户分享使用同一台计算机(即:多用户) 。

分时系统的类型

  • 单道分时:调入-调出(Roll-in/Roll-out),I/O开销太大
  • 前台后台分时:后台存放批处理作业;内存的划分是固定的,不灵活
  • 多道分时:需要解决加载程序时地址空间重定位的问题(-多道批处理系统 要考虑吗?)

Problems and Issues

  • Multiple jobs in memory must be protected from each other’s data内存多个作业需保护
  • File system must be protected so that only authorised users can access文件系统必须保护使得只有授权用户可以访问
  • Contention for resources must be handled解决资源竞争 -Printers, storage etc

分时系统的特征

  • 同时性:多个用户同时工作。
  • 独立性:各用户独立操作,互不干扰。
  • 及时性:请求可在短时间内获得响应
  • 交互性:人机交互、联机工

5. 实时系统(real-time system)

  • 主要用于过程控制、事务处理、信息查询等有实时要求的领域,其主要特征是实时性和可靠性。
  • 实时系统的特征:实时时钟管理;快速中断、调度;过载保护;高度可靠性和安全性;

实时任务的类型

  • 周期性划分periodicity

    –周期性实时任务:

    –非周期性实时任务:截止时间,开始截止时间(最晚开始时间)和完成截止时间(最晚完成时间)

  • 截止时间划分deadline

    –硬实时任务Hard real-time

    –软实时任务Soft real-time

6. 嵌入式操作系统Embedded OS/Mobile OS

  • 嵌入式系统

    –嵌入在各种设备、装置或系统中(非计算机),完成特定功能的软硬件系统

    –通常工作在反应式或对处理时间有较严格要求环境中

  • 嵌入式操作系统:运行在嵌入式智能芯片环境中,对整个智能芯片以及它所操作、控制的各种部件装置等进行统一协调、调度、指挥和控制的系统软件

7. Distributed Operating System分布式操作系统

  • 分布式系统:处理和控制的分散(相对于集中式系统)

  • 分布式系统是以计算机网络为基础的

  • 分布式系统的优点

    –Resources Sharing 资源共享

    –Computation speed up – load sharing 加快计算 -负载共享

    –Reliability可靠

    –Communications通信

  • 分布式操作系统

    –系统任务可在系统中任何处理机上运行,自动实现全系统范围内的任务分配并自动调度各处理机的工作负载

    –在计算机之间少了自治性

    –Amoeba,Plan9,Clouds,Cm*等

8. Personal Computer Operating System个人计算机操作系统

  • 性能:GUI、多用户和多任务、虚拟存储管理、网络通信支持、数据库支持、多媒体支持、应用编程支持API

  • 特点:

    –开放性

    –通用性

    –高性能

    –采用微内核结构

  • 常用的个人计算机操作系统

    –单用户单任务:MS DOS

    –单用户多任务:OS/2, MS Windows 3.x, Windows 95, Windows NT, Windows XP、 Windows 7、 Windows 8、Windows 10等

    –多用户多任务:UNIX(SCO UNIX, Solaris, Linux, FreeBSD), Window Server 2008等**

2.4 Developments Leading to Modern Operating Systems

  • Different Architectural Approaches不同的体系结构方法

  • Various approaches have been tried, categories include:采用了各种方法,包括

    – Microkernel architecture微内核

    – Multithreading多线程

    – Symmetric multiprocessing对称多处理技术

    – Distributed operating systems分布式操作系统

    – Object-oriented design面向对象设计

1. Microkernel Architecture微内核体系结构

  • Most early OS are a monolithic kernel单内核

    –Most OS functionality resides in the kernel.**

  • A microkernel assigns only a few essential functions to the kernel微内核只将少量基本功能放在内核

    –Address spaces地址空间

    –Interprocess communication (IPC)进程间通信

    –Basic scheduling基本调度**

  • Other OS services run in user mode

2. Multithreading 多线程

  • Process is divided into threads that can run concurrently进程分为可并发执行的线程

  • Thread线程

    –Dispatchable unit of work可分派单位

    –executes sequentially and is interruptible顺序执行,可中断

  • Process is a collection of one or more threads进程是多个线程的集合

3. Symmetric multiprocessing (SMP)对称多处理

  • An SMP system has

    –multiple processors多个处理器

    –These processors share same main memory and I/O facilities这些处理器共享内存、外设

    –All processors can perform the same functions所有处理器可执行相同的功能**

  • The OS of an SMP schedules processes or threads across all of the processors. SMP OS可调度进程或线程到所有处理器

SMP Advantages

  • Performance性能

    –Allowing parallel processing允许并行处理**

  • Availability可用性

    –Failure of a single processor does not halt the system**

  • Incremental Growth增量增长

    –Additional processors can be added.**

  • Scaling可扩展性

4. Distributed Operating Systems分布式系统

  • Provides the illusion of提供一种假象

    – a single main memory space and 单个的内存空间

    – single secondary memory space单个的辅存空间

    –unified access facilities统一的访问手段**

  • Early stage of development

5. Object-oriented design面向对象设计

Used for adding modular extensions to a small kernel给小内核增加模块化扩展

Enables programmers to customize an operating system without disrupting system integrity使程序员可以定制操作系统而不破坏系统的完整性

Eases the development of distributed tools and full-blown distributed OSs使分布式工具和成熟的分布式操作系统的开发变得容易

现代操作系统的特征

  • 并发(concurrency)
  • 共享(sharing)
  • 异步性(asynchronism)
  • 虚拟(virtual)

并发(concurrency)

  • 多个事件在同一时间间隔内发生。并行(parallelism)指多个事件在同一时刻发生。
  • 在多道程序处理时,宏观上并发,微观上交替执行(在单处理器情况下)。
  • 程序的静态实体是可执行文件,而动态实体是进程(或称作任务),并发指的是进程。

共享(sharing)

  • 多个进程共享有限的计算机系统资源。
  • 互斥共享:资源分配后到释放前,不能被其他进程所用。
  • 同时访问(如可重入代码,磁盘文件)
  • 资源分配难以达到最优化

异步性(asynchronism)

  • 也称不确定性、随机性,指进程的执行顺序和执行时间的不确定性
  • 进程的运行速度不可预知:多个进程并发执行,”时走时停”,不可预知每个进程的运行推进快慢
  • 判据:无论快慢,应该结果相同—通过进程互斥和同步手段来保证
  • 难以重现系统在某个时刻的状态(包括重现运行中的错误)
  • 性能保证:实时系统与分时系统相似,但通过资源预留以保证性能

虚拟(virtual)

  • 一个物理实体映射为若干个对应的逻辑实体(分时或分空间)
  • CPU —每个用户(进程)的”虚处理机”
  • 存储器—每个进程都占有的地址空间(指令+数据+堆栈)
  • 显示设备—多窗口或虚拟终端(virtual terminal)

2.5 User Interfaces Provided by OS

  • 程序接口:系统调用
  • 作业接口:系统命令(操作命令)

1.程序接口与系统调用(system call)

  • 系统调用是OS提供给软件开发人员的唯一接口,可利用它使用系统功能。
  • OS核心有一组实现系统功能的过程(函数),系统调用就是对上述过程(函数)的调用。系统调用把应用程序的请求传达给内核,内核调用对应的内核函数完成请求所需处理后,再将处理结果返回给应用程序。

应用程序、库函数、系统调用的调用关系

用户态: 应用程序->调用fprintf( )->C函数库中的fprintf( )封装程序+C库中的write( ) 封装程序

核心态:系统调用处理程序->sys_write( )内核函数

UNIX/Linux系统程序、库函数、系统调用分层关系

用户态:用户-···用户接口···>标准系统程序(实用程序)(汇编、编译、编辑、Shell等)-···库函数接口···>标准库函数(打开、关闭、读、写、创建、撤销等)

核心态:操作系统(进程管理、存储管理、文件管理、设备管理等)-···系统调用接口···>硬件(处理器、存储器、磁盘、打印机、终端等)

系统调用的分类

  • 设备管理:设备的读写和控制;
  • 文件管理:文件读写和文件控制;
  • 进程控制:创建、中止、暂停等控制;
  • 进程通信:消息队列、共享存储区、socket等通信渠道的建立、使用和删除;
  • 存储管理:内存的申请和释放;
  • 系统管理:设置和读取时间、读取用户和主机标识等;

系统调用与函数调用的相同点

  • 改变指令流程
  • 重复执行和公用
  • 改变指令流程后需要返回原处

系统调用与函数调用的不同点

  • 系统调用是动态调用,而函数调用方式是静态调用

    –系统调用是动态调用,程序中不包含被调用代码。

    –系统调用的调用地址和返回地址都是不固定的。系统调用指令中不包含调用地址,只包含功能号。系统调用返回指令中不包括返回地址,通过栈保存和弹出返回地址。

    –函数调用方式是静态调用,被调用代码与调用代码在同一程序之内。

    –函数调用其调用地址是固定的,包含在调用语句中;

    –返回地址是不固定的(同一子程序可能被不同处多次调用),在程序执行过程中通过栈的实现来保存和弹出返回地址。

  • 执行状态不同

    –调用和返回经历了不同的系统状态。通常OS核心和应用程序的代码分别运行在CPU的不同的状态下(核心态/系统态/管态和用户态/目态),所用地址空间也不同—核心的代码可以直接访问应用进程的地址空间,反之不然。

  • 进入方式不同

    –利用int或trap指令进行系统调用;利用call或jmp指令进入普通的过程调用。

  • 与进程调度的关系不同

    –采用抢先式调度的系统,在系统调用返回时,要进行重新调度的检查—是否有更高优先级的任务就绪(创建或唤醒)。

  • 嵌套或递归调用

    –对系统调用,一般不允许在同一个进程中发生嵌套或递归(不同进程可以重入同一个系统调用)。

2. 操作接口

  • 操作接口又称作业级接口,是操作系统为用户操作控制计算机工作和提供服务的手段集合,通常可借助操作控制命令、图形操作界面(命令)、以及作业控制语言(命令)等来实现

  • 作业控制方式

    –联机用户接口(操作控制命令)

    –脱机用户接口(作业控制语言)

  • 命令解释程序

    脱机用户接口(作业控制语言)

  • JOB语句:标志新作业的开始

    //作业名 JOB 参数 ;记帐号、用户名、作业类型、运行时间、主存要求、优先级

  • EXEC语句:标志作业步

    //步名 EXEC PGM=程序名,参数

  • DD 语句:数据定义语句

    //DD名 DD 参数;数据文件名、属性、外围设备类型等, *表示数据跟在DD语句后

  • 分隔语句:表示数据的结束

    /*

  • 空语句:作业的结束

    //