操作系统复习chapter 11.1 虚拟机解释:在裸机上加载一层软件,来管理整个计算机系统,形成一个虚拟的计算机应用:虚拟机将复杂的计算机硬件与用户的编程分离开来,为用户提供一个友好的程序设计接口,以降低编程的复杂度。
另一个虚拟机由一台裸机向上层提供若干台虚拟机。
不同的虚拟机上可以运行不同的操作系统。
1.2操作系统system view:——是裸机上的第一层软件,是对硬件功能的首次扩充,是资源的分配者、管理者。
user view:——是程序设计接口的提供者1.3 操作系统设计的基本要求:Portability可移植性 Security安全性 Fairness公正性 Robustness强壮性Efficiency有效性 Interfaces接口统一性 ===> 支持 POSIX 标准 ...1.4 操作系统的特点并发——多个事件在同一时间段内发生。
操作系统中各进程间的并发,系统与应用间的并发。
操作系统要完成这些并发过程的管理。
并行(parallel)是指在同一时刻发生。
共享——多个进程共享有限的计算机系统资源。
操作系统要对系统资源进行合理分配和使用。
资源在一个时间段内交替被多个进程所用。
虚拟——一个物理实体映射为若干个对应的逻辑实体(分时或分空间)。
虚拟是操作系统管理系统资源的重要手段,可提高资源利用率。
异步性——(也称不确定性)指进程的执行顺序和执行时间的不确定性。
操作系统必须保证一个进程在不确定的环境下运行有确定的结果。
1.5微内核结构将操作系统划分成多个模块,只有一个模块运行在内核,其它模块运行在用户态。
==> 以提高系统的可靠性but slowerwindows 是宏内核因为操作系统和设备驱动共享内核保护模式的内存空间1.6 进程的地址空间—— A list of memory locations from some minimum (usually 0) to some maximum, which the process can read and write.1.7 文件——由文件名标识的一组信息的集合文件名——用于文件管理(在文件系统中逻辑定位一个文件)i-node ——管理文件管理的结点(在文件系统中物理定位一个文件)一个文件 <---------> i-node1.8 inode 号码inode 在 inode 区的位置1.9路径名——文件的逻辑定位目录——组织文件系统的一种实施方法(文件的逻辑定位与物理定位的结合点)1.10 文件的硬链接——文件的一种共享方式文件的软链接(符号链接)1.11 A pipe is a sort of pseudo file that can be used to connect two processes1.12shell——命令解释器,是由操作系统提供给用户的命令行接口1.13核心态和用户态——两种处理器的访问模式系统调用——操作系统提供给用户的编程接口1.14操作系统的特权操作输入/输出操作存取内存管理寄存器开、关中断停机1.15 POSIX Portable Operating System Interface为了提高 UNIX 环境下应用程序源代码的可移植性1.16系统调用的种类——进程管理 fork() execve() wait() getpid()——信号管理 signaction() kill()——文件管理 open() read() mknod() creat() pipe()——目录管理 mkdir() rmdir() link() mount()——权限管理 chmod() getuid() setuid()——时间管理 time() times() utime()chapter 22.1单道程序特点顺序性——按程序设定的顺序执行封闭性——资源独占;只有该指令序列才能改变机器的状态;程序运行的结果只取决于该程序以及初值。
可再现性缺点:资源浪费可实现的功能简单:无程序间合作;无程序间交互。
2.2多道程序间断(异步)性:——程序"走走停停",失去原有的时序关系。
制约性:——程序之间的同步或共享资源的互斥使用。
失去封闭性:——资源共享;程序受其他程序的控制逻辑的影响。
失去可再现性:——外界环境在程序的两次执行期间发生变化,失去原有的可重复特征。
2.3进程——程序的一次执行过程进程引入的动机:为了描述程序在并发执行时对系统资源的共享,我们需要一个描述程序执行时动态特征的概念,这就是进程。
——是一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程,是一个独立调度的活动,是一个可以分配给予资源的抽象实体。
2.4进程的基本特征——动态性:是程序的一次执行——并发性:能在并发的环境中运行——独立性:是运行的基本单位,资源分配和调度的单位——不可再现性:向前推进的速度不可再现2.5进程的创建和终止——创建进程的时机系统初始化用户进程调用了 fork 系统调用响应用户的命令行请求(shell command)批处理作业的初始化——进程终止的时机正常退出(进程调用了 exit 系统调用 ...)出错退出(预料中的错误)严重错误(预料之外的错误)被其它进程 kill......2.62.7进程上下文——是进程的映像(或环境),是对进程执行活动的描述。
进程上下文包含以下部分:——寄存器内容——与该进程相关的内核控制用数据结构(PCB)——进程的用户地址空间内容2.8进程管理表: 存放了每个进程的控制信息(PCB)Process Control Block (进程控制相关的核心数据结构)PCB 的主要内容:进程标识符进程名——进程描述信息——————进程状态进程优先级——进程运行控制信息——————计费和调度信息内存分配情况打开文件状态资源占用情况——资源占用信息——————程序计数器...... ——CPU现场保护结构2.9使用线程的主要原因:——线程间的数据共享——线程创建的速度快——进程中的多个执行线索实现更多样的任务模型——在多CPU环境中实现并行算法2.10线程——信息共享同一进程中的线程共享进程中的全局数据,打开文件...——运行独立线程是CPU调度的单位,具有就绪、阻塞和执行等基本状态线程拥有必不可少的私有资源,如:线程执行状态、寄存器上下文、程序计数器和栈2.11线程和进程的关系:——线程是进程中的一个运行线索——进程作为资源分配的基本单位(CPU资源除外)2.12线程模型优越性——数据共享——通信不同进程间的线程通信:靠IPC提供的各个方法同一进程的线程间通信:可以通过直接读写进程数据段来进行通信(如全局变量)——调度线程上下文切换比进程上下文切换要快(同一进程内)2.13——在内核中实现线程由内核实现线程的创建和撤销,(系统调用)线程的控制信息存放在内核——在用户空间中实现线程用户进程利用线程库(run-time system)提供的创建、同步、调度等管理线程的函数来控制线程,(库函数)线程的控制信息也存放在进程用户数据区中2.14 进程间通信(IPC)IPC ——InterProcess CommunicationIPC 主要解决三方面的问题:——进程之间传递数据——进程之间约定次序——进程之间协调对共享数据的互斥访问2.15低级通信机制——传递状态和整数值(控制信息),以实现进程间的同步和互斥。
同步:保持不同的进程所发生的事件的某种顺序性。
(用于实现进程之间的协作)互斥:对共享数据的互斥访问:任一时刻只能有一个进程可以对共享数据进行存取。
(用于保护共享数据)低级通信机制包括:锁变量、信号量、关中、睡眠和唤醒、管程、信号、...优点:速度快缺点:传送信息量小;编程复杂,容易出错2.16高级通信机制高级通信机制包括:——消息机制——管道机制——共享存储单元机制——......优点:能够传送任意数量的数据2.17竞态条件( Race Condition)——两个或多个进程同时读写某些共享数据(公共区域),其最后结果的正确与否取决于各个进程存取这个公共区域的确切时序。
==> 结论:必须避免共享数据出现竞态条件。
2.18临界区(Critical Section)临界区——在一组合作的进程{p1,p2,...pn}中每个进程都含有对同一共享数据进行存取的代码段,这种代码段称作为临界区。
引入临界区的目的:为了避免共享资源上的竞态条件====> 临界区代码段的穿插执行,引起共享数据上的竞态条件。
临界区的设计原则:——任何两个进程不能同时处于临界区——不应对CPU的速度和数目作任何假设——临界区外的进程不得阻碍其他进程进入临界区——不得使进程在临界区外无休止地等待=====> 饥饿2.19 忙等待的互斥busy waiting——是互斥的一种实现方案:持续地检测一个状态变量,直到它具有某一特定值之后,才继续往下执行Possible Solutions for Busy_Waiting:Strict Alternation Peterson's solution Disabling Interrupts Lock V ariables TSL1)严格交替法:两个进程的互斥2)Peterson 方案Peterson 方案的特点:——进程进入C.S.的顺序无须严格交替——如果两个进程几乎同时调用enter_region( ) 函数时,两个进程不会同时进入C.S.,也不会同时处于忙等待——临界区外的进程不会阻塞其他进程进入临界区3)禁止中断法(开中关中)——不适用于一般用户的编程(开中、关中属于特权操作),可用于内核编程——不适用于多CPU的场合——是忙等待的互斥(等待进程处于就绪状态,不是受阻状态)4)锁操作法——使用锁变量实现互斥锁变量:可在进程之间共享的变量,可在线程之间共享的变量5)实现原子操作方法1 ——关中方法2:——TSL指令(Test & Set)TSL register,lock_name2.20睡眠和唤醒(实现非忙等待)为什么需要非忙的等待?——提高资源利用率——避免副作用睡眠(SLEEP)和唤醒(WAKEUP)原语SLEEP 原语——将引起调用进程阻塞(即进入blocked状态),直到另一进程将其唤醒WAKEUP 原语——唤醒进程(它带一个参数,即要被唤醒的进程)原语:作为OS核心代码执行,不受进程调度的打断。
进程可以利用sleep( )和wakeup( ) 实现非忙等待2.21优先级翻转问题(priority inversion problem):一台计算机有两个进程,H优先级较高,L优先级较低。