Transcript 第二章 操作系统概述
操作系统原理
张晓勇
[email protected]
课程信息
32学时,2学分
先修课程:数据结构、程序设计语言
平时成绩30%,考试占70%
课程教材
操作系统——精髓与设计原理(第七版),William Stallings,
电子工业出版社,2012
参考教材
现代操作系统(第三版), Tanenbaum.A.S,机械工业出版社,
2009
计算机操作系统教程(第三版),张尧学,清华大学出版社,
2006
操作系统:
精髓与
设计原理
第二章 操作系统
概述
Seventh Edition
By William Stallings
操作系统:
精髓与设计原理
操作系统为应用程序提供与硬件交互的接口,为运行中的应用
程序动态分配可共享的系统资源。涉及到内存、进程和外设的管理
与调度。
相邻层次的接口不断改变,早期操作系统的部分功能后来被移
植到硬件中,原有与应用程序解决问题无关的功能慢慢包含在操作
系统中。
—什么能被自动化?计算机科学与工程研究
MIT Press, 1980
操作系统
是控制应用程序执行的程序
充当应用程序和计算机硬件之间的接口
主要目标:
• 方便
• 有效
• 可扩展能力
Figure 2.1 Computer Hardware and Software Infrastructure
程序开发
Program development
程序运行 Program execution
I/O访问 Access I/O devices
文件访问控制 Controlled access to files
系统访问 System access
错误检测和响应 Error detection and response
记账 Accounting
关键接口
指令集体系接口
Instruction set
architecture (ISA)
应用程序二进制接口
Application binary
interface (ABI)
应用程序开发接口
Application
programming interface (API)
计算机是一组资源,用于移动、存储
和处理数据
操作系统负责管理这些资源
与普通的计算机软件作用相同,是处理器
运行的一段或一组程序
经常释放控制,必须依赖处理器重新获得
控制
作为资源
管理器的
操作系统
操作系统的易扩展性
主流操作系统需要不断发展:
Hardware upgrades
New types of hardware
New services
Fixes
操作系统的发展
Stages include:
分时系统
多道程序批处理系
统
简单批处理
串行处理
串行处理
问题:
早期计算机:
没有操作系统
程序员直接与计算机硬件
打交道
机器在一个控制台(Console)
上运行,控制台包括指示灯、
触发器、某种输入设备和打印
机。
用户串行访问计算机
调度:
大多数装置使用一个硬拷贝
登记表来预定计算机时间
用时可能比预定长短,
导致计算时间浪费
准备时间
将程序运行起来需要花费大
量准备时间
简单批处理系统
早期计算机非常昂贵
最大化提高CPU利用率非常重要
监控程序Monitor
用户不再直接与机器打交道
用户把卡片或者磁带中的作业(jobs)提交给操作员,
操作员将这些jobs 按顺序组织成一批,将这批作业交给
输入设备上,供监控程序使用。
程序完成处理后返回监控程序
Monitor控制事件的顺序
Resident Monitor 是一个常驻内存
的软件
Monitor读取作业并将控制权交
出
作业完成后将控制权返回给监
控程序
处理器执行内存中监控程序的指令
这些指令读取用户程序执行,直到遇到一个结束指令或
错误条件
“控制权交给作业” 意味着处理器当前读取和执行的是
用户程序的指令
“控制权交给监控程序” 意味着处理器当前读取和执行
的是监控程序的指令
作业控制语言
Job Control Language(JCL)
是一种特殊的程序设计语
言,用于为监控程序提供指
令
告诉编译器用什么编
译器
用什么数据
内存保护Memory Protection
• 用户程序执行时不能改变监控程序的内存区域
定时器Timer
• 防止一个作业独占系统
特权指令Privileged instructions
• 某些指令设计成只能由监控程序运行
中断Interrupts
• 给了操作系统更大灵活性
两种操作模式
用户态
内核态
• 用户程序在用户态下运行
• 某些受保护内存区域在用
户态下不能访问
• 某些指令不能允许
• 监控程序在内核态下运行
• 可以运行特权指令
• 可以访问受保护的内存区
域
简单批处理系统的开销
处理器在用户程序与监控程序之前来回切换
牺牲:
some main memory is now given over to the monitor
some processor time is consumed by the monitor
尽管存在以上开销,简单批处理系统还是提高了系统利
用率
多道批处理系统
处理器经常空
闲
即便是自动
作业序列
I/O 相比处
理器速度太
慢
The processor spends a certain amount of
time executing, until it reaches an I/O
instruction; it must then wait until that I/O
instruction concludes before proceeding
必须有足够内存容纳OS (resident monitor) 和用户程序
当一个作业需要等待I/O,处理器可以切换到另一个不需等待
I/O的作业
多道程序
也称为多任务multitasking
内存扩充为可保存3个或更多的程序,并且在其中切换
多道程序实例
多道程序的资源利用率
Table 2.2 Effects of Multiprogramming on Resource Utilization
利用率直方图
能用来处理多个交互性任务
处理器时间被多个用户分享
多用户通过终端并发访问系统,OS控制每个
用户程序以很短的时间交替执行
Table 2.3 Batch Multiprogramming versus Time Sharing
兼容分时系统Compatible
Time-Sharing Systems
时间片Time Slicing
CTSS
第一个分时系统
运行在一台内存为32000
个36-bit字的,常驻监控
程序占了5000个字
为了简化monitor程序和
内存管理用户程序总是
被装载到5000th 字处
系统时钟大约每0.2秒产生
一个中断
每个中断到来时,OS获得
控制权,并分配处理器给
另一个用户
在固定的时间间隔内,当
前用户被抢占,另一个用
户被载入
老用户程序和数据写入到
磁盘上,便于下一次恢复
OS是最复杂的软件之一
操作系统发展史上四个
重要理论进展:
•
•
•
•
进程
内存管理
信息保护和安全
调度和资源管理
进程是操作系统设计中的核心概念
一个进程可以被定义为:
一个正在执行的程序
一个正在运行程序的实例
可以分配给处理器并执行的实体
由单一顺序的执行线索、一个当前状态和一组相关的系统资源所描述的活
动单元
计算机系统的发展
计算机系统发展的三条主线:
在时间安排和同步中产生的问题推动了进程概念的发
展
多道程序批处理
• 处理器在常驻内存的多道程序间切换
分时time sharing
• 能及时响应单个用户要求,而且可以同时支持多个用户
实时事务处理系统real-time transaction systems
• 很多用户对数据库进行查询和修改
错误的原因
不正确的同步
一个程序必须等到缓冲区中
有数据才能继续运行,需要
等待信号到来
设计不当的信号机制可能丢
失信号或收到重复信号
失败的互斥
不确定的程序操作
程序共享内存且处理器交
错执行时可能会导致由于
重写相同内存单元发生不
可预测的干扰
两个程序被调度的顺序会
影响最终的结果
死锁Deadlocks
多个用户同时访问共享资
源
在两个或多个程序互相等待
资源而相互挂起时容易发生
两个用户中只能有一个用
户能编辑同一个文件
依赖于资源分配和释放的时
机安排
三部分:
进程的执行上下文是根
一个可执行程序
本:
程序所需的相关数据
(变量、工作空间、缓
冲区等)
程序执行的上下文
context (进程状态)
是OS操作和监视进程所需
的内部数据
包括不同进程寄存器数据
包括进程优先级、进程是
否在等待I/O事件的完成
进程的管理
进程的整个状态被包含
在进程上下文中
操作系统设计中的新功
能可以被加到进程上下文
的数据结构中来实现
5个基本的存储管理责任:
进程
隔离
自动
分配
和管
理
支持
模块
化程
序设
计
保护
和访
问控
制
长期
存储
允许程序从逻辑的角度来访问内存,而不去
考虑物理内存上可用空间数量
方便满足多用户程序同时驻留在内存中的要
求
进程由许多固定大小的块组成,称为页pages
程序通过一个虚拟地址访问一个字
由页号与页内偏移地址组成
每个页能够在放置主内存的任何部分
分页系统提供了虚拟地址与实地址(或物理地址)之间
的动态映射
虚拟存储器
Virtual
Memory
内存被分为许多定长
的内存块(页),程
序执行时,程序的部
分或所有页要加载到
内存中
辅存储器(磁盘)容
纳许多定长的页,一
个应用程序由许多页
组成
Virtual Memory虚拟存储器
Addressing 寻址
分时系统时提出,计算机
网络进一步发展
对计算机系统和其中数据
的访问控制
主要
问题
可用性
保密性
认证
数据完整
性
调度和资源管理
OS的关键功能是资源管理
资源分配策略必须考虑:
效率
公平
有差别响应性
多道程序环境中设计进程调度和
资源分配的操作系统的主要组件
现代OS的特征
不同的OS设计方法
对操作系统要求的不断变化,需要不断修
改现有OS体系结构
产生了不同的方法和设计元素
•
•
•
•
•
微内核体系结构 Microkernel architecture
多线程 Multithreading
对称多处理器 Symmetric multiprocessing
分布式操作系统 Distributed operating systems
面向对象的设计 Object-oriented design
微内核体系结构
内核仅仅实现最重要的功能:
地址空间
address
spaces
进程间通信
interprocess
communication
(IPC)
基本调度
basic
scheduling
微内核结构:
简化实现
提供灵活性
适合分布式环境
一个应用的进程被分配为能并发运行的多个线程的技术
线程 Thread
• 是CPU的分派单位
• 包括处理器上下文信息和线程自己的数据区域(用来子程序调用)
• 顺序执行,可被中断
进程 Process
• 一个或多个线程和分配的系统资源的集合
• 程序员能够大大控制应用程序的模块性和应用程序相关事件的时间安排
对称多处理器(SMP)
是一个计算机硬件体系结构术语,也是一个体现在该结构上
的操作系统行为能力
多个处理器并行运行
多个处理器对用户是透明的
这些处理器共享主内存和设备
所有处理器能完成相同的功能
支持SMP技术的OS调度线程或进程到每个处理器上
SMP优势
性能
可用性
同时可以在多个处理器上运行多个进程
单处理器故障不引起整个系统失效
增量增
长
用户可增加额外处理器以提高性能
扩展性
制造商能够根据处理器数量不同提供
不同的产品配置
面向对象设计
Object-Oriented
Design
分布式操作系统
Distributed Operating
System
提供一种假象
单一内存空间
单一外存空间
统一存取访问能力
落后于单处理器与SMP操作系
统
用来为校内和增加模块扩展
使程序员能够自定义操作系统
而不破坏系统整体性
使分布式工具和分布式OS开发
变得更加容易
虚拟化
使单台PC或服务器能够同时运行多个操作系统或
一个操作系统的多个实例
一台机器可在单一平台运行大量应用程序,包括那
些在不同OS下的应用
宿主操作系统能支持多个虚拟机 virtual machines
(VM)
每个具有特定OS的特征
具有特定硬件平台的特征
虚拟机
概念
Process perspective:
•
•
•
•
•
进程运行在一台这样的“机器”上:包含进程必需的虚拟内存;
可能用到的处理器寄存器;
可能执行的user-level machine instructions;
为了进行I/O操作的系统调用。
ABI 描述的就是进程看到的“机器”
Application perspective:
• “机器”的特征被高级语言能力和OS系统的库函数表征
• API定义了application看到的“机器”
OS perspective:
• 进程分享文件系统和其他I/O资源
• 系统为进程分配物理内存和I/O资源
• ISA 提供了OS与“机器”之间的接口
进程虚拟机和系统虚拟机
进程虚拟机和系统虚拟机
对称多处理器计算机的
OS设计考虑
A multiprocessor OS must provide all the functionality of a multiprogramming
system plus additional features to accommodate multiple processors
Key design issues:
Simultaneous
concurrent
processes or
threads
kernel routines
need to be
reentrant to
allow several
processors to
execute the
same kernel
code
simultaneously
Scheduling
any
processor
may perform
scheduling,
which
complicates
the task of
enforcing a
scheduling
policy
Synchronization
with multiple
active processes
having potential
access to shared
address spaces
or shared I/O
resources, care
must be taken to
provide effective
synchronization
Memory
management
the reuse of
physical
pages is the
biggest
problem of
concern
Reliability
and fault
tolerance
the OS
should
provide
graceful
degradation
in the face of
processor
failure
多核心计算机
的OS设计考虑
The design challenge for a
many-core multicore system is
to efficiently harness the
multicore processing power
and intelligently manage the
substantial on-chip resources
efficiently
Potential for parallelism exists
at three levels:
hardware parallelism within
each core processor, known as
instruction level parallelism
potential for multiprogramming
and multithreaded execution
within each processor
potential for a single application
to execute in concurrent
processes or threads across
multiple cores
Developer must decide what pieces can or
should be executed simultaneously or in parallel
Grand Central Dispatch (GCD)
• implemented in Mac Os X 10.6
• helps a developer once something has been identified that
can be split off into a separate task
• thread pool mechanism
• allows anonymous functions as a way of specifying tasks
Allows one or more cores to be dedicated to a
particular process and then leave the processor
alone to devote its efforts to that process
Multicore OS could then act as a hypervisor that
makes a high-level decision to allocate cores to
applications but does little in the way of resource
allocation beyond that
MS-DOS 1.0 released in 1981
4000 lines of assembly language
source code
ran in 8 Kbytes of memory
used Intel 8086 microprocessor
Windows 2000
included services and functions to
support distributed processing
Active Directory
plug-and-play and powermanagement facilities
Windows 3.0 shipped in 1990
16-bit
GUI interface
implemented as a layer on top of
MS-DOS
Windows 95
Windows Vista shipped in 2007
Windows Server released in 2008
Windows 7 shipped in 2009, as well
as Windows Server 2008 R2
Windows CE & Windows Phone
32-bit version
led to the development of Windows
98 and Windows Me
Windows NT (3.1) released in 1993
32-bit OS with the ability to support
older DOS and Windows
applications as well as provide
OS/2 support
Windows XP released in 2001
goal was to replace the versions of
Windows based on MS-DOS with
an OS based on NT
Windows 7
体系结构
Windows的内核组件
执行体 Executive
内核 Kernel
从通用的硬件命令到特定硬件平台响应的映射
设备驱动 Device Drivers
控制处理器的执行
硬件抽象层 Hardware Abstraction Layer (HAL)
包括OS核心服务:内存管理、进程和线程管理、异常和中断处理、
多处理器同步
扩展执行体的动态库:硬件驱动、文件系统、网络协议等
窗口和图形系统 Windowing and Graphics System
实现GUI函数
用户态下的进程
支持4类用户态进程:
特殊系统进程
服务进程
环境子系统
用户应用程序
• 用户态下的部分系统服务,会话管理、登录认证管
理等
• 打印机后台管理、事件记录器、用户安装的网络
• 支持Win32和POSIX子系统
• 运行用户可执行程序EXE与DLL动态链接库
Windows OS services,
environmental subsystems, and
applications are all structured
using the client/server model
Common in distributed
systems, but can be used
internal to a single system
Processes communicate via
RPC
Advantages:
it simplifies the Executive
it improves reliability
it provides a uniform means
for applications to
communicate with services
via RPCs without restricting
flexibility
it provides a suitable base
for distributed computing
Two important characteristics of Windows are its support for
threads and for symmetric multiprocessing (SMP)
OS routines can run on any available processor, and different routines can
execute simultaneously on different processors
Windows supports the use of multiple threads of execution within a single
process. Multiple threads within the same process may execute on different
processors simultaneously
Server processes may use multiple threads to process requests from more
than one client simultaneously
Windows provides mechanisms for sharing data and resources between
processes and flexible interprocess communication capabilities
Windows Objects
Windows draws heavily on the concepts of objectoriented design
Key object-oriented concepts used by Windows
are:
Encapsulation
Object
class and
instance
Inheritance
Polymorphism
W
n
is
w
o
d
K
rn
e
lC
o
O
tb
s
c
je
改善和提高:
工程学改进
建立在可被单独测试的层次上,降低复杂性
性能提高
减少内存需求总量
可靠性提高
能耗功耗降低
安全性
线程改进
支持数百个CPUs
动态公平共享调度机制(DFSS)
传统的UNIX
Bell Labs,PDP-7, 1970
吸收了很多Multics的思想
移植到PDP-11上,第一个里程碑
第二个里程碑:用C语言重写UNIX
阐明了用高级语言写系统代码的优点
1974年首次发表在学术期刊上
Bell Labs之外使用的版本是Version 6,1976
Version 7是大多数现代UNIX的先驱,1978
最重要的non-AT&T 系统是UNIX BSD (Berkeley Software Distribution)
UNIX的
一般结构
传统的
UNIX
Kernel
现代
UNIX
System V版本4,
简称SVR4
4.x BSD
4.4BSD
FreeBSD
Mac OS X
Solaris 10
用于IBM PC的UNIX变体
Linus Torvalds实现最初版本
Linux was first posted on the Internet in 1991
可运行在各种平台的、具有 UNIX 全面功能的系统
免费、源代码可获得
成功的关键在于FSF赞助的自由软件包。
GNU, GPL
高度模块化并容易配置
Loadable Modules
在一大块代码中实现了所有
操作系统的功能,作为单一
进程运行,具有唯一地址空
间
相对独立的块
是一个可在内核运行时加载或
卸载的对象
内核所有组件能访问所有内
部数据结构和例程
当前运行的进程会加载模块在
内核态下执行
Linux的结构是一系列
module的结合
两个重要特征:
动态链接Dynamic linking
可堆栈模块Stackable
modules
Linux
Kernel
Modules
Linux内核组件
Linux Signals
Table 2.5 Some Linux Signals
Linux Vserver 虚拟机结构
Linux服务器下实现Opensource, fast, lightweight的虚
拟机服务
只需要一份Linux内核的拷
贝
支持许多相互隔离的虚拟服
务器
Involves four elements:
chroot – UNIX or
Linux command to
make the root
directory become
something other
than its default
chcontext –
allocates a new
security context
chbind – executes a
command and
locks the resulting
process and its
children into using
a specific IP
address
capabilities – a
partitioning of the
privileges available
to a root user
Linux Vserver体系结构
OS的目标和功能:
convenience, efficiency, ability to
evolve
user/computer interface
resource manager
发展:
serial processing, simple batch
systems, multiprogrammed batch
systems, time sharing systems
Microsoft Windows/Windows 7
UNIX/Linux systems
Process
Memory management
real address, virtual address
Scheduling and resource management
Multithreading
Symmetric multiprocessing (SMP)
distributed OS
object oriented design
Virtual machines
virtualization
http://robocup.csu.edu.cn
中南大学轨道交通安全运行与控制研究所->课程建
设->《操作系统原理》2014课件
如果文章有密码,密码是os2104