Computer system consists of:
- hardware 2. operating system 3. application programs 4. users.
Or
- hardware 2. Software 3. data
Hardware provides the basic computing resources for the system, consists of:
- central processing unit(CPU)
- memory
- input/output(I/O) devices
Application programs define the ways in which these resources are used to solve users’ computing problems, ex: word processors, spreadsheets, compilers, and web browser.
Operating system: controls and coordinates the use of hardware among the various application programs for the various users.
OS in user view:
Case 1:
A system designed for single user to monopolize its resources.
Goal: to maximize the work that the user is performing.
OS is designed for ease of use, with some attention paid to performance and none paid to resource utilization.
Case 2:
A user sits at a terminal connected to a mainframe minicomputer, other users are accessing the same computer through other terminals.
OS is designed to maximize resource utilization.(assure that all available CPU time, memory, and I/O are used efficiently and shared fairly.)
Case 3:
Users sit at workstation connected to networks of other workstations and servers, they dedicate resources themselves but share resources such as networking and servers.
OS is designed to compromise between individual usability and resource utilization.
Case 4:
Handheld computers, standalone units for individual users, some are connected to networks.
OS are designed for individual usability, but performance per amount of battery life is important as well.
Others: some computers such as embedded computers have no user view.
OS in system view:
- OS is a resource allocator, acts as the manager of resources (such as CPU time, memory space, file-storage space, I/O devices), face numerous and possibly conflicting requests for resources and decides how to allocate them to specific programs and users, so that it can operate the computer system efficiently and fairly.
- OS is a control program that manages the execution of user programs to prevent errors and improper use of the computer.(especially concerned with the operation and control of I/O devices).
Definition:
计算机系统通过硬件来执行用户程序解决问题,应用程序用于硬件的管理。所有应用程序需要一些特定的共同的操作如I/O设备控制,这些共同的控制和分配资源的功能由称为操作系统的软件实现。
The operating system is the one program running at all times on the computer, with all else being system program and application programs.
General structure of computer system
现代通用计算机系统由一个或多个CPU及一系列设备控制器(device controller)连接到一条共同的bus构成,每个device controller负责特定的(一个或多个)设备,CPU和设备控制器可以并行工作,竞争memory cycle,确保有序读写共享内存。
Device controller维持local buffer storage和一组special-purpose registers。
Device controller负责在其控制的外围设备和局部缓冲存储器之间传输数据。
操作系统为每个device controller都配备了相应的device driver(设备驱动程序)。device driver理解其对应的device controller,并且为其提供对应相应设备和操作系统其余部分的接口。
Interrupt-driven I/O操作的实现(适合小容量数据移动,但用于大块数据移动如磁盘I/O则可能造成high overhead问题):
Device driver在device controller中load相应的寄存器。
Device controller检查寄存器的内容,确定要执行什么动作。(如“从键盘读取字符”)。
Device controller开始从设备中传输数据到其local buffer。
当数据传输完成后,通过一个interrupt通知device driver操作已经完成。
Device driver将控制返回给操作系统(如:如果是读操作,可能返回数据或指向数据的指针。其它操作:返回状态信息)
避免超载问题,大块数据传输可采用direct memory access(DMA):
设置好I/O设备的缓冲、指针和计数器。
Device controller可不需要CPU干预,直接从其buffer storage中直接传输整个block的数据到内存。
一个block只会产生一次interrupt,用于通知device driver操作已经完成。【相反:低速设备每个byte产生一次interrupt。】
device controller执行操作时CPU可以完成其它工作。
一些高端系统采用switch结构代替bus结构。多个部件之间可以并发对话,不需要在共享的bus上竞争cycle。(此结构下DMA更高效)。
Memory controller的功能是负责同步对内存的读写。
引导程序bootstrap program:计算机开始运行(启动或重启)时,需要运行的一个初始程序,存储在ROM(read-only memory)或EEPROM(erasable programmable read-only memory)中【或称:计算机的硬件部分中固件firmware】。初始化系统的全部层面(CPU寄存器、设备控制器、内存等)。
Bootstrap program要能够定位操作系统的kernel,装载进内存使OS开始运行,从而实现装载操作系统并执行的功能。
Inerrupt(中断):由硬件或软件发送,作为某个事件发生的信号。
硬件在任意时刻(通常通过bus)发送一个信号给CPU来激发一个interrupt。
软件通过执行一个特殊操作system call(又称monitor call)来激发一个interrupt。
CPU收到一个中断信号后,立即停止当前所在执行的任务并转移控制到一个固定位置(该位置通常包含interrupt service routine所在起始地址)。Interruput service routine执行完毕后,CPU继续被中断的计算。
不同计算机有其特定的中断机制,中断必须要能将控制转移到合适对应的interrupt service routine(中断服务程序)。
转移的实现:
调用一个通用程序ininterrupt-specific handler检查中断信息。
可使用一个指向中断服务程序的指针列表来确保中断处理的速度。
指针的列表通常存储在low memory中,该指针数组称为interrupt vector。
根据唯一的设备号码建立索引,由中断请求可获得中断服务程序的地址。
中断体系结构必须存储被中断的指令的地址。
以前:一般将中断地址存储在固定位置,或者由设备号码索引的位置。
现在:将返回地址存储在系统栈中。如果中断服务程序需要修改处理器状态(如更改寄存器值,必须明确保存当前状态,并且在返回前恢复)。当终端服务完成,保存返回值,装载回程序计数器,被中断的计算照常继续。
存储结构
计算机程序必须要在main memory(又称:RAM)中才能执行。
Main memory:处理器可以直接读写的唯一的大存储空间。由DRAM(dynamic random-access momory)的半导体技术形成momory word数组来实现。
通过一系列的load和store指令明确内存地址来实现交互。
Load指令将word从main memory移动到CPU的内部寄存器
Store指令将寄存器的内容移动到main memory
CPU自动从main memory中load指令来执行。
冯诺依曼体系结构的instrution-execution cycle
从内存中fetch一条指令
将指令store到指令寄存器
解码指令(可能导致更多fetch和store操作)
操作对象执行完毕,结果可能被store回内存
程序和数据难以实现永久存储在main memory中,原因:
- Main memory太小,无法永久存储所有所需的程序和数据。
- Main memory是不稳定的存储设备,当断电或其他情况发生时内容将会丢失。
大多数计算机系统提供secondary storage(二级存储器)作为main memory的延伸,耳机存储器的主要功能是永久、大量存储数据。
最常见的二级存储设备:magnetic disk(磁盘),可存储程序和数据。大多数程序在被load进内存前都存储在disk上,大多数程序都将disk作为其处理信息的来源和目的地。
所有storage system都提供存储数据的功能,主要区别是速度、代价、容量和不稳定性。
Storage system的架构,由上至下价格、速度、代价(cost per bit)递减,读写时间递增。
Register
Cache
Main memory
Electronic disk
Magnetic disk
Optical disk(光盘)
Magnetic tapes(磁带)
Volatile storage:断电后丢失内容。
Electronic disk以上的存储系统是volatile storage,以下的是nonvolatile storage。
Electronic disk可以是volatile或nonvolatile。
Volatile情况:通常操作时electronic disk将数据存储在一个volatile的大型DRAM数组。
Nonvolatile情况:
1.有些electronic disk包含一个隐藏的magnetic hard disk和备用电池,如果发生断电情况,控制器会将数据从RAM转移到磁盘,恢复外部电源后控制器再将数据复制回RAM。
2. 另一种electronic disk:flash momory,通常用于照相机和PDAs(personal digital assistants)。
Flash memory比DRAM速度慢,但不需要电源来维持内容。
3. NVRAM,有备用电源的DRAM,速度和DRAM相当,但在nonvolatile时有持续限制。
Computer-System Architecture
通过通用处理器的数量来分类:
1. 单处理器系统single-processor systems
定义:系统中只有一个通用CPU(general-purpose CPU)。
最常见,大多数系统采用。(从PDA到大型机)。
有一个主CPU,用于执行通用指令集(general-purpose instruction set),其中包含来自用户进程的指令。
除主CPU外,绝大对数系统也包含其它特定目的的处理器。其形式有特定的设备处理器(如磁盘、键盘、图形控制器)和通用处理器(如大型机中的I/O处理器,用于在系统部件间快速移动数据)。
特殊目的处理器(special-purpose processors)运行一个受限的指令集,不运行用户进程。
有时由操作系统管理:操作系统发送信息通知该处理器的下一任务,监控其状态。
举例:
磁盘控制器微处理器接受来自主CPU的一系列请求,执行其自身的磁盘队列和调度算法,从而解决了主CPU磁盘调度超载的问题。
PC在键盘中包含微处理器,用于将键盘敲击转换为代码发送给CPU。
在其他系统或环境下,特殊目的处理器为构建在硬件中的低级部件,独立自动地工作,操作系统不能与这些处理器通信。
特殊目的微处理器不会将单处理器系统变为多处理器系统。
2. 多处理器系统multiprocessor systems
又称:并行系统parallel systems或紧耦合系统tightly coupled systems。
定义:系统中有两个或多个紧密通信的处理器,共享计算机总线(bus),有时还共享始终、内存和外围设备等。
多处理器系统的三大主要优点:
1. 增加吞吐量。
通过增加处理器的数量,提高工作速度。
注意:N个处理器的加速比比N小。原因:
多个处理器协同工作任务时,为了使各部分正确工作会产生额外开销;
对共享资源的竞争会降低期望增益。
2. 规模经济
多处理器系统比同数量的多个单处理器系统开销小。原因:
多处理器能够共享外围设备、大容量存储和电源供应,处理同样集合的数据,放在同一磁盘上供多处理器共享要优于多个计算机在各自的本地磁盘上使用多个复刻数据的情况。
3. 增加可靠性
因为功能合理分布在多个处理器上,所以单个处理器故障时剩下的处理器会分担其任务,不会导致系统停机,只会降低速度。
Graceful degradation(适度退化):继续提供与正常工作的硬件成正比的服务。
Fault tolerant(容错):有些系统超出graceful degration的能力。能忍受单个部件的错误并继续操作。
Fault tolerance需要一种能够检测故障、诊断并尽量纠正的机制。
举例:HP NonStop system(先前的Tandem)——使用冗余的硬件和软件以确保发生错误时能继续工作,具有多对同步的CPU,每对CPU执行指令并对比结果。如果结果不同,该对CPU中的一个出错,双方都停止,正在执行的进程移动到另一对CPU中,重新执行先前出错的指令。【涉及特定硬件和大量冗余软件,成本较高。】
目前普遍的多处理器系统类型有两类:
1. asymmetric multiprocessing(非对称多处理)
master-slave (主-从)关系模式,master处理器调度并分配任务给slave处理器。每个处理器分配有特定的任务,一个master processor(主处理器)控制系统,其他处理器从主处理器处获取指令或由预定义的任务。
2. symmetric multiprocessing(对称多处理 SMP)【最常见】
处理器对等,之间没有主-从关系,每个处理器都要完成操作系统的所有任务。
典型SMP结构
举例:Solaris 一个Solaris系统可以配置给数十个处理器。
因为允许进程和资源(如内存)在处理器之间动态共享,能够降低处理器之间的差异
优点:如果有N个CPU,N个进程可以同时运行,不会对影响性能。
缺点:必须仔细控制I/O,保证数据到达合适的处理器。
CPU相互独立,可能出现有的空闲有的过载的低效率问题。
对称和非对称多处理的区别可能来自硬件,也可能来自软件。
Clustered Systems 集群系统
多CPU系统的另一类型,将多个CPU集中起来完成计算任务。
与多处理器系统的不通电:由两个或多个独立的系统耦合。
常用定义:集群计算机共享存储,并通过局域网(LAN)紧密连接或快速内部链接(如InfiniBand)。
常用于提供high availability(高可用性)服务。
高可用性服务:集群中的一个或多个系统出错故障时,服务能够继续。
通常通过在系统中增加一级冗余来实现。一个集群软件层运行在集群节点之上,每个节点能够(通过LAN)监视一个或多个节点。
如果被监视的机器出错故障,监视其的机器取代其存储拥有权并重启在出错机器上的应用程序,用户只会观察到服务的短暂中断。
也可分为非对称和对称。
1. Asymmetric clustering
一台机器处于hot-standby mode(热备份模式),监视在活动服务器(active server),而另一个运行应用程序。如果服务器故障,hot-standby host将接替成为活动服务器。
2. symmetric clustering
两个或多个host运行应用程序并互相监视对方。
充分使用了现有硬件,更加高效。
要求有一个以上可供运行的应用程序。
其他形式:parallel cluster(并行集群)和cluster over Wide-area network(WAN)。
Parallel cluster:
允许多个主机访问共享存储上的相同数据。
由于绝大多数操作系统不支持多个host同时访问数据,parallel cluster通常由专门的软件和应用程序实现。如:Oracle Parallel Server
distributed lock manager(DLM 分布式锁管理):通常应用于集群技术,提供这一共享数据访问,系统需要提供对文件的访问控制和加锁以避免冲突。
操作系统的重要特点:Multiprogramming——通过组织job(code or data)使CPU总有一个job可以执行,从而提高CPU利用率。提供了一个可以充分使用各种系统资源(如CPU、内存、外设)的环境。
Job pool中的jobs是所有进入system的jobs的集合。
操作系统将job pool中的一个子集(若干个job)同时保存在memory中。
操作系统选择memory中的一个job并开始执行。该job可能必须等待其它任务(如I/O操作)的完成。
Non-multiprogrammed:CPU会空闲。
Multiprogrammed:当前job需要等待时,CPU会switch去执行另一个job,and so on。最后第一个job完成等待并重新获得CPU。只要有一个job需要执行,CPU就不会空闲。
Time sharing (multitasking) 分时系统: multiprogramming的逻辑延伸。采用CPU scheduling和multiprogramming以向每个用户提供time-shared computer的一小部分。
用户可以在程序运行期间与其交互:
需要一个interactive(or hands-on) computer systems(交互计算机系统),提供用户与系统之间的直接通信。用户通过输入设备向操作系统或程序发出指令,等待输出设备上即时反馈结果。Response time应该较短,一般小于1s。
允许多个用户同时共享计算机:
CPU在多个job之间切换频率很高,time-shared system中每个动作/命令都很短,每个用户所需的CPU时间很短,系统在用户之间switch非常迅速,因此用户会有独占系统的感觉。
举例:
用户的process执行时通常只执行很短的一段时间,此时尚未完成需要进行的I/O交互操作。由于I/O交互按用户的速度来运行,对于计算来说速度较慢,用户交互输入时,操作系统为了不让CPU空闲,会将CPU切换到其他用户process。
分时系统需要提供:
Job scheduling作业调度:
因为memory容量太小不能容纳太多job,jobs最初保存在磁盘的job pool中。
Job pool:由驻留来磁盘中等待分配内存的processes组成。
time-sharing和multiprogramming需要在memory中同时保存多个job。
如果多个job需要进入内存但内存没有足够空间,需要对job pool中的job中做出选择。
OS从job pool中选中一个job,将其调入内存来执行。
内存中同时有多个programs,需要内存管理。
CPU scheduling CPU调度:如果有多个job同时需要执行,系统需要对内存中的job做出选择。
多个并发执行的job需要OS在各方面限制进程的相互影响——进程调度、磁盘存储和内存管理。
Time-sharing system中保证合理response time的途径:
1. Swapping
进程被在内存和磁盘之间交换进出。
2. Virtual memory
允许一个执行的process并不完全放在内存中。
主要优点:使程序可以比physical memory更大;将内存抽象成一个庞大、同意的存储数组,将用户所理解的logical memory与真正的physical memory分开,使programmer不需要担心内存空间限制。
其它:
file system:驻存在一组磁盘上
disk management
一种保护资源以防不当使用的机制
job synchronization and communication:确保有序进行
确保job不会进入deadlock
现代操作系统由中断驱动,如果没有进程要执行、没有I/O设备要服务、也没有用户请求要相应,操作系统会静静等待由中断或陷阱引起的某件事件发生。对于每种中断,操作系统中的中断服务程序被用来处理中断,不同代码段决定处理终端将采取的不同动作。
陷阱(或异常):一种软件终端,源于出错(如除数为零或无效的存储访问),或源于用户程序的一个特别请求(完成操作系统服务)。
操作系统的合理设计必须请确保用户程序中的一个出错仅影响正在运行的程序,而不会造成其他程序执行错误。
双重模式操作:为确保操作系统正常执行,必须区分操作系统代码和用户定义代码的执行,许多操作系统采取提供硬件支持以区分执行模式的方法。
至少需要两种独立操作模式:用户模式user mode和监督程序模式monitor mode(也称管理模式supervisor mode、系统模式system mode或特权模式privileged mode),用于表示目前正在执行用户所执行的任务或操作系统所执行的任务。
在计算机硬件中增加一个模式位mode bit以表示当前模式:监督程序模式0和用户模式1。
双重模式操作提供了保护操作系统和用户程序不受错误用户程序影响的手段,实现方法为:将能引起损害的机器指令作为特权指令(privileged instruction)。如果在用户模式下视图执行特权指令(如执行非法指令或访问不属于自己地址空间的内存),则硬件会检测到违反模式的错误,认为该指令非法,不执行该指令并以陷阱信号形式通知操作系统。
特权指令例子:转换到用户模式、I/O控制、定时器管理和中断管理。
计算机系统指令执行的生命周期:操作系统控制(内核模式)->控制权转到用户应用程序(用户模式)-> 通过中断、陷阱或系统调用将控制权返回给操作系统。
系统调用:用户程序请求操作系统代表用户程序完成预留给操作系统的任务的方法,是一种进程请求操作系统执行动作的方法。
通常采用陷阱到中断向量中的一个指定位置的方式,该陷阱可以由普通trap指令执行,有些系统具有专门的syscall指令。
定时器(timer):用于确保操作系统能维持对CPU的控制,防止用户程序陷入死循环、不调用系统服务并且不将控制权返回到操作系统。可将定时器设置为在给定时间后终端计算机,时间段可以固定或可变。
操作系统负责与进程管理相关的活动:创建和删除用户进程和系统进程、挂起和重启进程、提供进程同步机制、提供进程通信机制、提供死锁处理机制。
操作系统负责的与内存管理有关的活动:记录内存的那部分正在被使用及被谁使用、当有内存空间时决定哪些进程可以装入内存、根据需要分配和释放内存空间。
操作系统负责的与文件管理有关的活动:创建和删除文件、创建和删除目录来组织文件、提供操作文件和目录的原语、将文件映射在二级存储上、在稳定存储介质上备份文件。
操作系统负责的与硬盘管理有关的活动:空闲空间管理、存储空间分配、硬盘调度。
UNIX中I/O子系统通常对操作系统本身隐藏了I/O设备的特性,I/O子系统包括:一个包括缓冲、告诉缓存和假脱机的内存管理部分、通用设备驱动器接口、特定硬件设备的驱动程序。
分布式系统:将一组物理上分开来的、各种可能异构的计算机系统通过网络连接在一起,为用户提供系统所维护的各种资源的计算机的集合。
实时操作系统:有明确而固定的时间约束,处理必须在固定时间约束内完成,只有在其时间约束内返回正确结果才是正确工作,否则系统失败。(对比:分时系统没有严格约束相应速度、批处理系统没有时间约束)。适合当对处理器操作或数据流动有严格时间要求的情况,嵌入式系统几乎都运行实时操作系统。
客户机-服务器(client-server)系统
服务器系统大致分为两类
计算机服务系统:提供接口以接收用户发送的执行操作的请求,执行操作并将结果返回给客户机
文件服务系统:提供文件系统接口以便客户机能创建、更新、访问和删除文件。
P2P:对等系统模式,分布式系统的另一种结构。客户机和服务器彼此不区别,而是系统中所有节点都对等,每个都可作为客户机或服务器,取决于它是请求还是提供服务。
P2P相对于传统的客户机-服务器系统存在服务器瓶颈问题,而P2P可以由分布在网络中的多个节点提供服务。