• 操作系统原理笔记


    第一章 操作系统概述

    1.课程特点:概念多,原理性强,较抽象.
    学习目的:基础核心课,有利于对计算机系统的理解和软件开发.
    难点:概念,原理,算法,数据结构.
    学习方法:用问题驱动学习,理论联系实际.
    内容安排:硬件部分(操作系统概述,进程管理,存储管理,外部设备管理),软件管理(文件管理).
    2.什么是操作系统:(四种基本观点)1.虚拟机器:操作系统是建立在计算机硬件平台上的虚拟机器,它为应用软件提供了许多比计算机硬件功能更强或计算机硬件所没有的功能.(操作系统在虚拟机中充当管理员和协调员的角色,管理计算机的软硬件资源,并协调多任务,多进程的运行.扩充功能和计算机的数量,看起来好像每个用户独享一台计算机) 2.资源管理观点:认为操作系统是计算机系统中各类资源的管理者,它负责分配,回收以及控制系统中的各种软硬件资源.(跟踪资源的使用状况,满足资源请求,提高资源利用率,以及协调各程序和用户对资源的使用冲突:监视资源,分配回收资源,保护资源) 3.作业组织观点 :认为,操作系统是计算机系统工作流程的组织者,它负责协调在系统中运行的各个应用软件的运行次序.(用于巨型机和大型服务器上,以批文件方式提交作业,请求主机逐个运行.主机操作系统负责组织,协调各个作业的运行,报告执行结果或错误信息.减少了人工干预,提高了系统的效率,有利于有效利用造价高且性能强大的主机.)4.用户环境观点:认为OS是计算机用户使用计算机的接口,它为计算机用户提供了方便的工作环境计算机用户:终端用户、程序员、系统设计者. OS提供的接口:用户接口(User Interface,也叫命令接口) 程序接口(Application Programming Interface,系统调用,也叫应用编程接口,即API)
    在VB、VC等IDE中开发应用程序是间接调用到了API,程序员应该有能力直接调用API编程,即SDK编程
    Windows平台下所有的应用程序都是建立在API基础之上的. 用户接口:
    1、(用户)命令:指计算机用户要求计算机系统为其工作的指示
    2、命令的表示形式 字符形式:如CMD,LINUX命令,灵活,繁琐难记
    菜单形式:
    图形形式:直观但不灵活.
    命令使用方式 :脱机方式(off-line)如批处理程序,编写好运行时,系统直接按照命令一条一条地执行,直到结束,期间用户无法干扰. 联机方式(on-line)如用户登陆使用键盘输入用户名密
    3.现代操作系统的特征,功能,类型.
    4.基本概念:批处理,多道程序设计,作业,任务,进程与线程,接口,虚拟存储,文件.
    操作系统给用户提供了一个操作环境.
    5.用户接口:(用户)命令:指计算机用户要求计算机系统为其工作的指示.命令的表示形式:1.字符形式:较灵活,但繁琐难记.2.菜单形式3.图形形式:因直观而易记 但不灵活.3.命令的使用方式:脱机使用方式(off-line),联机使用方式(on-line).
    6. 操作系统的发展: 1.50年代中期,第一个简单批处理操作系统.2.60年代中期,多道程序批处理系统 3.不久,分时系统,实时系统 4.80年代,微机及网络操作系统.
    7.推动操作系统发展的因素:1.计算机硬件升级和新硬件的出现. 2.提供新的服务,方便使用. 3.提高计算机资源利用效率. 4.更正软件错误 5.计算机体系结构的发展:单处理机系统,多处理机系统,分布式系统,计算机网络.
    8.手工操作时期,没有操作系统:早期电子数字计算机由成千上万电子管组成,操作和编程完全由手工进行,且编程只能用机器语言(二进制代码),程序员同时也是操作员,在上机期间独占整台计算机及其相关设备,效率非常低.
    9.单道批处理系统:程序员首先将命令,程序和数据用汇编语言或FORTRAN语言写在纸上,然后用穿孔机制成卡片,最后将这些卡片交给操作员.
    10.批处理程序:(又叫监督程序或管理程序),管理应用程序的运行.操作步骤: 1.收集一批作业(卡),用专用IO计算机将作业逐个读到磁带上保存起来. 2.批处理程序将磁带上的第一个作业读入计算机,运算结束后将结果输出到输出磁带上.3.自动读入下一个作业,并运行.4.当一批作业全部执行结束后,取下输入磁带和输出磁带,用输入磁带录入下一批作业,将输出磁带送到专用输出计算机,进行脱机打印.
    11.单道批处理系统的评价:解决了作业间的自动转接问题,减少了机器时间的浪费.2.不管作业大小,只要它一旦占用处理机开始执行,则它必须一直占用处理机,直到运行完毕. 3.资源利用率低. 4.对短作业不公平,因为他们等待执行的时间可能远远超过他们的执行时间. 5.交互性差,作业由批处理程序控制运行,用户无法实时控制,如果运行中途出现故障,也只能停下来,重新运行。
    12.多道批处理系统(现代意义的操作系统):单道批处理系统中,任意时刻只允许一道作业在内存中运行,资源利用率低。为了提高系统资源利用率和系统吞吐量,形成了多道批处理系统。 多道,是指允许多个程序同时存在于主存中,按照某种原则分派处理机,逐个执行这些程序。 批处理:用户提交的作业首先存放在外存,并排成一个队列。然后,由作业调度程序按照一定的算法从该队列中一次选取一个或若干个作业装入内存执行。 处理机自动切换:当某个程序占用处理机执行过程中遇到了输入输出语句,可以启动专门负责输入输出的系统服务程序完成操作,而处理机切换到另一个程序执行。 多道程序设计技术:为了提高系统吞吐量和资源利用率,允许多个程序同时驻留内存,使处理机在这些程序之间切换,在一段时间内,执行完多个程序的处理技术称为多道程序设计技术(multiprogramming)。现在操作系统大多都采用了多道程序设计技术。 多道程序设计技术印发的问题:1.处理机的分配与回收 2.内存的分配与保护 3.I/O设备的共享和效率 4.文件的有效管理 5.作业的组织。
    13.分时系统和实时系统: 多道批处理系统提高了资源利用率和吞吐量。但是,批处理系统交互性很差。为了改进响应时间和性能,提供交互式操作环境,导致了分时系统的出现。分时系统的实质是在多道程序技术的基础之上,位多个用户配置一个联机终端。
    14.分时系统实例:第一个分时系统:MIT的兼容分时系统CTSS,它是一个单道分时系统,在该系统中,每次只能将一道程序(作业)装入并驻留内存。
    15.“前台”和“后台”:1.分时系统:分时+批处理功能 2.内存:分为前台区和后台区,前台区存放按时间片调入和调出的作业流,后台区存放批处理作业。3.仅当前台作业调入/调出,或前台无作业可运行时,方才运行后台区中的作业。 4.提供交互式快速的服务,同时在处理机空闲时运行后台较大的批作业。
    16.多道分时系统:允许在内存中同时存放多道作业,并把具备运行条件的所有作业排成一个队列,让他们一次轮流地获得一个时间片来运行。 与单道分时系统相比较,由于作业数据都在内存,不需要调入,调出开销,所以多道分时系统具有较好的系统性能。 现代分时系统都属于多道分时系统。
    17.实时系统: 分时系统位交互式作业提供了快速的响应服务,但还不能满足某些对响应时间要求非常严格的任务需要。(例如,炼钢,炼油控制系统, 航空网络售票系统等,对任务的响应时间有更严格的要求)
    18.操作系统进一步发展:1.个人计算机操作系统:UNIX,OS,Windows系列,LINUX等。2.网络操作系统:网络接口控制器及一些用于驱动的底层软件,远程登陆软件和远程文件访问软件。3.分布式操作系统:将用户的应用程序分布在多台处理机上同时运行。合理地调度各处理机,使整个系统获得最大的并行度。4.嵌入式操作系统。
    19.操作系统的功能:管理处理机,管理存储器,管理输入输出设备,管理数据文件,提供接口服务。
    20.接口功能: 接口,指操作系统为用户提供的人机交互界面。命令接口:以命令方式供用户通过键盘终端与计算机交互,如UNIX,DOS等。 图形化用户接口:Window系列操作系统则提供了形象,生动的图形化界面,用户只需拖动并点击鼠标,便可轻松操作计算机。 程序接口:以系统调用的形式供用户编程时使用。几乎各种操作系统都提供了系统调用,供程序设计使用。
    21.处理机管理:1.进程控制:创建和撤销进程以及控制进程的状态转换。2.进程同步:协调,互斥访问临界资源,协调执行进度。 3.进程通信:进程间的信息交换。 4.进程调度: 按一定的算法从进程就绪队列中选出一个进程,把处理机分配给它,使之运行。
    22.存储器管理任务:1.为多道程序的并发执行提供良好的环境 2.便于用户使用存储器 3.提高存储器的利用率 4.为尽量多的用户提供足够大的存储空间。 存储器管理功能:1.内存分配:静态分配/动态分配,连续分配/非连续分配 2.内存保护:系统内存空间,用户内存空间 3.地址映射:逻辑地址-->物理地址 4.内存扩充:虚拟存储技术。
    23.设备管理任务:1.位用户程序分配I/O设备。 2.完成用户程序请求的I/O操作。 3.提高处理机和I/O设备的利用率。 4.改善人机界面。 设备管理功能:1.缓冲管理 2.设备分配 3.设备处理:启动设备,中断处理 4.虚拟设备功能 5.RAID技术,磁盘调度。
    24.文件管理的任务:1.管理用户文件和系统文件 2.管理文件的存储空间 3.保证文件数据的安全 4.方便用户使用文件。文件管理的功能:1.文件目录的管理 2.文件的逻辑组织方式与访问方式 3.存储空间的管理:文件的物理组织,空闲磁盘空间管理 4.文件共享与安全。
    25.现代操作系统的特征:1.任务共行性:宏观上,指系统中有多个任务同时运行;微观上,指单处理机系统中的任务并发,即多个任务在单个处理机尚交替运行;或多处理机系统中的任务并行,即多个任务在多个处理机上同时运行。 2.资源共享性:宏观上,指多个任务可以同时使用系统资源;微观上,指多个任务可以交替互斥地使用系统中的某个资源。3.虚拟性:指将一个物理上的实体变为若干个逻辑上的对应物。如,采用分时技术,将一台处理机虚拟为若干处理机。还可以虚拟存储,虚拟设备,虚拟通道,虚拟文件,虚拟用户组以及虚拟网络等。 4.不确定性。1.程序执行结果不确定,程序不可再现。2.多道程序环境下,进程以异步方式执行。
    26.多道程序设计:指系统中允许多道程序同时准备运行,当正在运行的那道程序因为某种原因(比如等待输入或输出数据),暂时不能继续运行时,系统将自动的启动另一道程序运行;一旦原因消除,暂时停止的那道程序在将来某个时候还可以被系统重新启动继续运行。 多道程序设计的问题:1.协调因争夺处理机或输入输出设备而产生的冲突,解决同步,互斥和死锁问题。 2.防止各道程序之间的交叉和冲突,防止作业被有意无意的破坏。 3.必须简历高效,可靠和方便的文件系统,有效地管理和存取系统中的软件资源和辅存空间。
    27.进程与线程:1.进程是指,程序的一次执行,包括可执行的程序,程序所需的数据和相关状态信息。进程是拥有资源的最小实体,在传统OS中,进程也是系统调度的最小单位。 2.线程是指,程序的一次相对独立的运行过程;在现代OS中,线程是系统调度的最小单位。
    28.作业:是指计算机用户在一次上机过程中要求计算机系统为其所做的工作的集合;作业中的每项相对独立的工作称为作业步。通常,人们用一组命令来描述作业;其中,每个命令定义一个作业步。 作业的基本类型:-脱机作业 -联机作业。
    29.任务:1.在经典的多任务操作系统环境下,任务与进程是等同的,都被认为是系统的最小工作单位。2.任务是从系统资源分配的角度描述程序在系统中的运行。 3.进程则是从处理机的利用和工作流程控制的角度描述程序的执行。4.程序员习惯称呼进程,而工程师则习惯称呼任务。
    30.系统调用:1.是操作系统提供的最基本的一级服务,供用户程序调用。 2.系统调用只能在程序中作为程序语句使用,不能单独使用。(它属于程序接口)
    31.接口:英文Interface在操作系统中有接口和界面两种含义;1.接口多用于描述系统硬件之间的连接关系,以及软件和程序模块之间的调用关系,如总线接口,打印机接口等。2.界面多用于描述用户与系统之间的操作环境,以及人机之间的交互方式和过程,如字符界面,图形用户界面。
    32.虚拟存储:为了能在有限的内存空间中运行更大,更多的进程(程序),可以将一部分磁盘空间虚拟为逻辑内存,使用户感觉到一个比物理内存空间大的多的逻辑内存空间,即实际物理内存空间和虚拟的那部分逻辑内存空间的总和统称为虚拟内存空间。1.有了虚拟存储技术,进程执行时,只需要预先在物理内存中装入进程的一部分程序代码和数据,进程即可开始执行。2.当需要的程序代码和数据不在物理内存时,根据需要临时装入,而整个操作对用户透明。
    33.文件:文件是若干相关数据的集合,有的操作系统将程序,数据以及各种外部设备统统称为文件。1.唯一的文件名 2.对文件的操作包括文件的建立,修改,删除,重命名,设置访问权限等。 3.概括地说,文件就是命名了的字节流,它是现代操作系统对计算机系统中种类繁多的外部设备进行高度抽象的结果。
    34.操作系统分类:1.按硬件平台系统结构不同分类:单机操作系统,嵌入式操作系统和多级操作系统(并行操作系统,分布式操作系统,网络操作系统,机群操作系统等) 2.根据操作系统在用户界面的使用环境和功能特征不同分类:批处理系统,分时系统和实时系统 3.现代操作系统通常建有分时和批处理功能。
    35.批处理操作系统:工作方式:1.一批作业首先在外存上排成一个队列。2.然后由作业调度程序负责从该队列中选取一个或多个作业进入内存,并分别为他们建立进程,使若干进程共享包括处理机,内存空间在内的系统资源,以提高资源利用率和系统吞吐量。 优缺点:主要优点: 多道程序由操作系统自动调度执行,大大降低了人工干预对系统性能的影响,资源利用率高,系统的吞吐量大。 缺点:1.交互性很差,修改和调试程序极其困难。 2.增加了作业的平均周转时间。作业在外存排队,等待调度进入内存。进程在内存排队,等待获取所需的系统资源。
    36.分时操作系统:1.提供了一个多用户工作环境,一台主机连接若干台终端,每台终端工一个用户使用。2.用户交互式地向系统提出联机命令请求,系统接受所有用户的命令,采用分时原则处理服务器请求,再通过交互式终端显示执行的结果。 特性:1.多路性:一台主机同时连接多台终端。 2.独立性:每个用户各自通过自己的终端进行输入输出,互不干扰。用户感觉自己独占终端和主机资源。 3.交互性。
    37.实时操作系统:指能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行的操作系统。2.设计目标:对外部的请求必须及时响应,在严格规定的时间内完成某事件,要求系统具有极高的可靠性和完整性。
    38. 网络操作系统:指在计算机网络环境中提供网络管理,通信,安全,资源共享和各种网络应用等功能的操作系统。2.目标:为了实现网络中个计算机之间的通信和网络资源共享,提高网络资源的利用率和网络的吞吐量。
    39.分布式操作系统:是指多个处理机通过通信线路互连而构成的系统,系统的处理和控制功能分布在各个处理机上。(配置在分布式系统上的操作系统称为分布式操作系统,它负责分布式系统中的任务分配,资源管理等功能服务。)
    40.分布式系统和计算机网络:1.分布式系统中的所有资源都是共享的,由分布式操作系统进行集中,统一管理。整个系统对用户透明。 2.计算机网络中允许每台计算机配置自己的操作系统,通过网络协议实现网络资源的统一管理,网络操作系统可以构架于不同的操作系统之上,范围很广。网络操作系统也不要求对网络资源进行透明访问,用户可以清楚地知道提交的任务是在哪台计算机上完成的。
    41.嵌入式操作系统:指运行在嵌入式系统环境之间哦你给,对整个嵌入式系统以及它所操作,控制的各种部件装置等资源进行协调,调度,指挥和控制的系统软件。2.嵌入式操作系统在工业控制,军事及民用设施中有着广泛的应用前景。
    42.现代主流操作系统:1.Windows是一个多任务操作系统,它允许用户同时运行多个应用程序,或在一个程序中同时做几件事情。系统为每个应用程序打开一个窗口。用户可以移动窗口,或在不同的应用程序之间切换。 2.Window NT及Windows 2000都属于多用户操作系统。Windows NT支持对称多处理机,多线程,多个可装卸文件系统,兼容
    POSIX标准。 2.UNIX是一个由C语言编写的,多用户多任务操作系统。已应用于从嵌入式处理器到工作站,桌面系统,乃至服务于大群用户的高性能多处理机系统。 3.Linux是UNIX的变种,是一个源代码开放的,多用户操作系统。 Linux支持多用户多任务,分页式虚拟存储,动态链接库,动态调整文件系统缓冲区大小等功能。其网络功能非常强大,几乎能与当前绝大多数网络互联。

    第二章 进程管理与处理机
    要点:进程描述及控制 策略:进程调度 实现:同步与互斥 避免:死锁与饥饿
    解决:几个经典问题 关于:进程通信
    43.进程的引入: 程序顺序执行:1.程序:源代码程序,目标程序和可执行程序 2.程序执行:编辑,编译,链接,执行 3.程序的结构:顺序结构,分支结构,循环结构。 程序顺序执行的特征:顺序性,封闭性(与外部环境无关),可再现性(不同时间、换到别的机器上结果一样)。 程序并发执行:1.多道程序设计技术:多个程序在单处理机上并发执行。2.程序并发执行的特征:间断性、非封闭性、不可再现性。
    44.进程并发执行引发的问题:1.协调各程序的执行顺序(例如,当输入的数据还未全部输入内存时,计算必须等待) 2.多个执行程序共享系统资源,程序之间可能会相互影响,甚至影响输出结果。 3.选择哪些、多少个程序进入内存执行? 4.内存中的执行程序谁先执行,谁后执行? 5.内存如何有效分配?
    45.进程的概念:可并发执行的程序,在一个数据集合上的运行过程。(进程要执行必须申请资源。(不管是父进程还是子进程都各自申请资源,不排除有共享资源)) (多进程系统以进程位调度单位) 程序:静态概念,指数据和指令的集合,可长期存储。 进程与程序的对应关系:1.一个程序可以对应一个进程或多个进程。 2.一个进程可以对应一个程序或一段程序。
    46.进程的特征:1.动态性 2.并发性(根本特征) 3.独立性 4.异步性。
    47.引入进程带来的问题:1.增加了空间开销:为程序建立数据结构 2.额外的时间开销:管理和协调、跟踪、填写和更新有关数据结构、切换进程、保护现场。 3.更难控制:---协调多个进程竞争和共享资源如何预防 ---解决多个进程因为竞争资源而出现故障。 4.处理机的竞争(进程调度)尤为突出 。
    48. 进程的结构:组成(进程映像):程序、数据集合、进程控制块PCB(Process Control Block) ,PCB是进程存在的唯一标志。创建进程时,创建PCB;进程结束时,系统将撤销其PCB。
    49.PCB:1.进程标识信息:进程的内部和外部标识符 2.处理机状态信息:通用寄存器值,指令计数器值,程序状态字PSW值,用户栈指针值。 3.进程调度信息:进程状态,进程优先权,进程调度的其他信息 4.其他信息:程序及数据地址,进程同步和通讯机制,资源清单,链接指针。
    50.PCB的组织方式:1.单一队列方式:所有进程的PCB通过链表组织成一个单一队列。适用于进程数目不多的操作系统,如Windows操作系统。 2.表格结构:1.PCB按进程状态不同,组织成不同的表格:就绪进程表 、执行进程表(多机系统中才有)及阻塞进程表。 2.系统分别记载各PCB表的起始地址。

    3.多级队列 :PCB按进程状态不同用链接指针组成不同队列:就绪进程队列、阻塞进程队列(可按阻塞原因不同,分别组织) 2.系统分别记载各PCB链表的起始地址.

    51.进程执行的轨迹:1.进程的轨迹:进程执行的指令序列,用以观察处理机的执行过程。 分派程序始终在内存中,哪个程序开始运行,程序计数器指向它。 两个状态进程模型:两状态:执行,未执行。---进程获得处理机,进入执行状态;当时间片结束或其他某种原因,进程释放处理机,暂停执行,处于未执行状态。 (两状态进程模型:队列形式)注意:并非所有进程只要未执行就处于就绪,有的需要阻塞,等待I/O完成。 未执行又可分为就绪和阻塞。
    52.进程的五状态:1.新状态(New):进程已经创建,但未被OS接纳为可执行进程。 2.就绪状态(Ready):准备执行。3.执行状态(Running):占用处理机(单处理机环境中,某一时刻仅一个进程占用处理机) 4.阻塞状态(Blocked):等待某事件发生才能执行,如等待I/O完成等。 5.终止状态(Terminated):因停止或取消,被OS从执行状态释放。
    53.进程的七种状态变化:1.空--->新状态:新创建的进程首先处于新状态。 2.新状态---> 就绪状态:当系统允许增加就绪进程时,操作系统接纳新建状态进程,将它变为就绪状态,插入就绪队列中。 3.就绪状态 --->执行状态:当处理机空闲时,将从就绪队列中选择一个进程执行,该选择过程称为进程调度,或将处理及分派给一个进程,该进程状态从就绪变为执行。 4.执行状态---->终止状态:执行状态的进程执行完毕,或出现诸如访问地址越界、非法指令等错误,而被异常结束,则进程从执行状态转换位终止状态。 5.执行状态---->就绪状态:分时系统中,时间片用完,或优先级高的进程到来,将中断较低优先级进程的执行,进程从执行状态变为就绪状态,等待下一次调度。 6.执行状态---->阻塞状态:执行进程需要等待某事件发生。通常,会因为进程需要的系统调用不能立即完成,如读文件、共享虚拟内存、等待i/O操作、等待另一进程与之通信等事件二阻塞。 7. 阻塞状态--->就绪状态:当阻塞进程等待的事件发生,就转换位就绪状态,进入就绪队列排队,等待被调度执行。 注意:某些系统允许父进程在任何情况下终止其子进程。 如果一个父进程被终止,其子孙进程都必须终止。
    54.问题:多个进程竞争内存资源:1.内存资源紧张2.无就绪进程,处理机空闲:I/O的速度比处理机的速度慢的多,可能出现全部进程阻塞等待I/O。 解决方法:1.采用交换技术:换出一部分进程到外存,以腾出内存空间。 2.采用虚拟存储技术:每个进程只能装入一部分程序和数据(存储管理部分)。
    55.对换技术,交换技术(swapping):将内存中暂时不能运行的进程,或暂时不用的数据和程序,换出到外存,以腾出足够的内存空间,把已具备运行条件的进程,或进程所需要的数据和程序,换入到内存。
    56.进程挂起状态:进程被交换到外存,状态变为挂起状态。
    57.进程被挂起的原因:1.进程全部阻塞,处理机空闲。 2.系统负荷过重,内存空间紧张。 3.操作系统的需要。操作系统可能需要挂起后台进程或一些服务进程,或者某些可能导致系统故障的进程。 4.终端用户的请求。 5.父进程的需求。
    58.被挂起进程的特征:1.不能立即执行 2.可能是等待某事件发生,若是,则阻塞条件独立于挂起条件,即使阻塞事件发横,该进程也不能执行。 3.使之挂起的进程为:自身,父进程,OS。 4.只有挂起它的进程才能使之由挂起状态转换位其他状态。
    59.问题 挂起与阻塞:1.是否只能挂起阻塞进程? 2.如何激活一个挂起进程? 区分概念:1.进程是否等待事件(阻塞与否) 2.进程是否被换出内存(挂起与否) 四种状态组合:1.就绪:进程在内存,准备执行。 2.阻塞:进程在内存,等待事件。 3.就绪/挂起:进程在外存,只要调入内存即可执行 4.阻塞/挂起:进程在外存,等待事件。 注意:处理机可调度执行的进程有两种:1.新创建的进程 2.换入一个以前挂起的进程。通常为避免增加系统负载,系统会换入一个以前挂起的进程执行。
    60.具有挂起状态的进程状态转换:1.阻塞 --->阻塞/挂起:OS通常将阻塞进程换出,以腾出内存空间。 2.阻塞/挂起---->就绪/挂起:当阻塞/挂起进程等待的事件发生时,可以将其转换为就绪/挂起。 3.就绪/挂起---->就绪:OS需要调入一个进程执行。 4.就绪---->就绪/挂起:一般,OS挂起阻塞进程。但有时也会挂起就绪进程,释放足够的内存空间。 5.新--->就绪/挂起(新---->就绪):新进程创建后,可以插入到就绪队列或就绪,挂起队列。若无足够的内存分配给新进程,则需要 新进程--->就绪/挂起。 6.阻塞/挂起 ---->阻塞:当阻塞/挂起队列中有一个进程的阻塞事件可能会很快发生,则可将一个阻塞/挂起进程换入内存,变为阻塞。 7. 执行---->就绪/挂起:当执行进程的时间片用完时,会转换为就绪。或,一个高优先级的阻塞/挂起进程正好变为非阻塞状态,OS可以将执行进程转换为就绪/挂起状态。 8.所有状态---->终止:通常,执行--->终止。但某些OS中,父进程可以终止子进程,使任何状态的进程都可以转换为退出状态。
    61.进程控制: 两种执行模式:1.系统模式(又称位系统态)、控制模式或内核模式:----具有较高的特权 ---运行系统特定的指令,包括读/写控制寄存器的指令,基本I/O指令以及与存储管理有关的指令,以及一些特定的内存区。 ----内核模式下的处理机及其指令、寄存器和内存都受到完全控制和保护 。2.用户模式(或用户态):----具有较低的特权 ---用户程序一般运行在用户模式。
    62.进程执行模式的模式切换:1.用户模式--->系统模式:用户程序执行到一条系统调用,进入操作系统内核执行 2.系统模式---- > 用户模式:执行完系统调用的功能,返回到用户程序。 特殊情况:程序执行到结束语句时,切换到系统模式,不再返回到用户程序。
    63.操作系统内核(Kernel):1.操作系统的核心,是基于硬件的第一层软件扩充,提供操作系统最基本的功能,是操作系统工作的基础。2.现代操作系统设计中,为减少系统本身的开销,往往将一些与硬件紧密相关的(如中断处理程序,设备驱动程序等)、基本的、公共的、运行频率较高的模块(如时钟管理,进程调度等)以及关键性数据结构独立开来,使之常驻内存,并对他们进行特殊保护,通常把这一部分称为操作系统的内核。 2.用户通过系统调用访问操作系统的功能,这些功能最终都通过操作系统内核实现。 3.不同的操作系统对内核的定义和功能范围的设定是不同的。 4.一般地,操作系统内核的功能可以概括地划分为资源管理功能和支撑功能。---资源管理:进程管理(进程创建和终止、调度、状态切换、同步和通信、管理PCB),存储管理(为进程分配地址空间、对换、段/页管理)和I/O设备管理(缓存管理、为进程分配I/O通道和设备)。 ----支撑功能:中断处理,统计,监测,时钟管理,原语操作(原子操作)等。
    64.进程控制原语:1.进程切换 2.创建与终止 3.阻塞与唤醒 4.挂起与激活
    65.进程创建的原因:1.提交新的批处理作业 2.交互式用户注册 3.操作系统提供服务 4.父进程创建子进程。
    66.进程创建的步骤:1.为进程分配一个唯一的标识号ID:主进程表中增加一个新的表项。 2.为进程分配空间:用户地址空间,用户栈空间,PCB空间。若共享已有空间,则应建立相应的链接。 3.初始化PCB:进程标识、处理机状态信息、进程状态。 4.建立链接:若调度队列是链表,则将新进程插入到就绪或就绪/挂起链表 5.建立或扩展其他数据结构。
    67.进程终止原因:1.批处理作业执行到结束语句. 2.交互式用户注销。3.停止进程(应用程序)的执行。 4.遇到错误或故障。 具体原因:1.正常结束 2.超时终止,执行时间超过预计时间。 3.内存不足,无法为进程分配所需的内存空间 4.越界访问 5.企图使用未允许的数据,或操作方式错误 6.计算错误,如除0,或企图存储硬件允许的最大数。 7.超时等待某事件发生。 8.I/O失败,如找不到文件或多次重试仍无法读写文件,或无效操作。 9.无效指令,企图执行不存在的指令. 10.特权指令,企图执行特权指令。 11.数据类型不符,或未初始化。 12.操作员或OS干预,如发生死锁的时候。 13父进程终止。 14.父进程请求。
    68.进程终止:步骤:1.根据被终止进程的标识符ID,找到其PCB,读出该进程的状态。 2.若该进程位执行状态,则终止其执行,调度新进程执行。 3.若该进程有子孙进程,则立即终止其所有子孙进程。 4.将该进程的全部资源归还其父进程或系统。 5.将被终止进程(的PCB)从所在队列中移出,等待其他程序来搜集信息。
    69.进程的阻塞与唤醒:1.阻塞原因:请求系统服务;启动某种操作,如I/O;新数据尚未到达;暂时无新工作可做等。 2.当出现阻塞事件,进程调用阻塞原语将自己阻塞。并将其状态变为“阻塞状态”,并进入相应事件的阻塞队列。 3.当阻塞进程期待的事件发生,有关进程调用唤醒原语,将等待该事件的进程唤醒。并将其状态变为”就绪状态”,插入就绪队列; 4.一般,进程可以自己阻塞自己;而唤醒操作则由操作系统,或其他相关进程来完成,进程无法唤醒自己。
    70.原语:操作系统或计算机网络用语范畴。是由若干条指令组成的,用于完成一定功能的一个过程。primitive or atomic action 是由若干个机器指令构成的完成某种特定功能的一段程序,具有不可分割性•即原语的执行必须是连续的,在执行过程中不允许被中断。
    71.进程的挂起与激活:1.当出现挂起事件,系统利用挂起原语将指定进程或一个阻塞进程挂起。进程从内存换出到外存,其状态转换:就绪--->就绪/挂起;或阻塞--->阻塞/挂起。 2.当激活事件发生,系统利用激活原语将指定进程激活。将相应进程从外存换入到内存,可能的状态转换: 就绪/挂起--->就绪;或阻塞/挂起--->阻塞。
    72.进程切换:1.时钟中断。---进程执行完一个时间片。 2.I/O中断。 3.内存访问出错。---虚拟存储中,需要的指令或数据都不在内存。 4.陷阱。 ---执行遇到错误。---可能使进程转换到终止状态。
    73.进程A切换到进程B的步骤:1.首先,保护进程A的现场,将进程A的当前运行信息,如程序执行到的当前位置,程序状态字,所有的寄存器值等保存到进程A的PCB中。 2.然后恢复进程B的现场,从进程B的PCB中获取其执行信息,将这些信息写入相应的寄存器中,程序计数器指向进程B将执行的下一条指令。进程B可能第一次开始执行,也可能是被中断的过程,恢复执行。不论是哪种情况,进程B的执行信息都能在其PCB中找到。
    74.进程切换和模式切换: 1.进程切换:作用于进程之间的一种操作。当分派程序收回当前进程的CPU并准备把它分派给某个就绪进程时,该操作将被引用。 2.模式切换:是进程内部所引用的一种操作。当用户程序转入系统调用,或相反时,该操作将被引用。 3.进程切换一定引发模式切换,反之则不然。

    75.进程调度:调度是指,在一个队列中,按照某种方法(算法),选择一个合适的个体的过程。 调度的关键是需要某种方法或算法,好的调度算法有利于选择到合适的个体。 #调度目标:1.公平性,防止进程长期不能获得调度而饥饿。2.处理机利用率,尽量提高处理机的利用率。3.提高系统吞吐量。 4.尽量减少进程的响应时间。 #调度原则:1.满足用户的要求:响应时间、周转时间、截止时间 。 2.满足系统的需求:系统吞吐量、处理机利用率、各类资源的平衡使用、公平性及优先级。
    76.面向用户的原则---响应时间:是指,从用户通过键盘提交一个请求开始,直到系统首次产生响应为止的时间。(输入的请求传送到处理机的时间+处理机对请求信息进行处理的时间+将响应结果发送到输出终端的时间=响应时间) 1.调度算法,则应考虑尽可能使绝大多数用户的请求能在响应时间内完成。 2.响应时间常用于评价分时系统的性能。
    77.面向用户的原则---周转时间:是指,从作业提交给系统开始到作业完成为止的这段时间间隔。(作业在外存排队等待调度的时间+进程在就绪队列中等待调度的时间+进程被处理机执行的时间+等待I/O操作完成的时间=周转时间) 1.周转时间常用于评价批处理系统的性能。 2.影响周转时间的调度:----作业从外存调度到内存(作业调度) -----进入内存还需在就绪队列中排队,等待进程调度。 ---甚至,可能会挂起进程,在外存等待被激活(中程调度)。
    78.面向用户的原则---截止时间:指实时系统中,某任务必须开始执行的最迟时间,或必须完成的最迟时间。 1.常用于评价实时系统的性能。
    79.面向系统的原则---系统吞吐量:指单位时间内系统完成的作业数。 常用于评价批处理系统的性能。
    80.面向系统的原则---处理机的利用率:大、中型多用户系统,由于处理机价格昂贵,处理机利用率是衡量系统性能的一个重要指标;单用户微机或某些实时系统,则并非很重要。
    81.面向系统的原则---各类资源的平衡使用:1.多道程序系统的目标之一就是为了提高系统资源的利用率,因此,调度算法有责任使系统中的各种资源都尽量处于忙碌状态。 2.该原则同时适用于长程调度和中程调度,因为他们可以决定哪些作业(进程)可以进入内存,可以考虑系统资源的均衡使用。
    82.面向系统的原则---公平性:调度算法应该对所有进程公平,补偏袒任何进程。
    83.面向系统的原则---优先权:1.优先权高的进程应优先调度。 2.可以根据进程的优先权不同,组织不同的就绪队列。进程调度时首先选择高优先权队列中的进程,直到该队列为空,再调度较低优先权队列中的进程。 3.几乎所有操作系统的调度算法都可考虑优先权原则。 4.当然,仅考虑优先权,可能会出现饥饿,对低优先权的进程不公平。 5.可以将进程排队的等待时间等因素纳入优先权的计算,随着进程等待时间的增长,其优先权也不断提高,进程也可在不久的将来得到调度。
    84.进程调度方式:根据执行进程的处理机是由进程自己释放,还是被强行剥夺,可以将进程调度分为剥夺方式和非剥夺方式。 1.非剥夺方式:执行进程只有在执行完毕,或因申请I/O阻塞自己时,才中断其执行,释放处理机,调度新的进程执行。这种方式不利于“即时性”要求较高的分时和实时系统,主要用于批处理系统。 2.剥夺方式:操作系统可以在新进程到来时,或某个具有较高优先权的被阻塞进程插入到就绪队列时,或在基于时间片调度的系统中,时间片用完而中断当前进程的执行,调度新的进程执行。 这种方式会产生较多的中断,主要用于实时性要求较高的实时系统及性能要求较高的批处理系统和分时系统。
    85.调度的类型: 1.基于系统划分:批处理系统 、分时调度、实时调度和多处理机调度 2.按调度发生的环境:长程调度(从外存到内存作业的调度)、中程调度(进程从外存到内存之间的调度,挂起到激活)、短程调度(内存里发生的进程调度) 3.I/O调度(阻塞状态的请求I/O进程排成的队列)。
    86.长程调度(高级调度或作业调度):它为被调度作业或用户程序创建进程,分配必要的系统资源,并将新创建的进程插入就绪队列,等待短程调度。 某些采用交换技术的系统将新创建的进程插入到就绪/挂起队列,等待中程调度。 在批处理系统中,作业进入系统后,先驻留在磁盘上,组织成批处理队列,称为后备队列。长程调度从该队列中选择一个或多个作业,为之创建进程. 长程调度需要考虑两个问题:1.选择多少个作业进入内存,为之创建进程?---取决于多道程序的度,即允许同时在内存中运行的进程数。 2. 选择哪些作业?---取决于长程调度算法。
    87.短程调度(进程调度或低级调度):决定就绪队列中的哪个进程获得处理机。 短程调度的运行频率最高。 现代操作系统几乎都具有短程调度。
    88.中程调度(中级调度):它是对换功能的一部分。当内存空间非常紧张时,或处理机找不到一个可执行的就绪进程时,需要选择一个进程(阻塞或就绪状态)换出到外存,释放出内存空间给别的进程使用。当内存空间较充裕时,从外存选择一个挂起状态的进程调度到内存。 #中程调度的目标:为了提高内存的利用率和系统吞吐量。 只有支持进程挂起的操作系统才具有中程调度的功能。
    89.进程调度算法:1.先来先服务(FCFS):--该方法按照进程到达的先后顺序排队,每次调度队首的进程。--FCFS算法属于非剥夺调度方式,实现简单,看似公平。但对于那些后进入队列而运行时间较短的进程,或I/O型的进程而言,可能需要长时间等待。 #缺点:1.对短进程不公平。2.由于长进程可能排在队列前面,必将增加队列后部进程的等待时间,从而增加平均周转时间。3.不利于I/O型进程,未有效利用系统资源。4.一般,FCFS与其他调度算法混合使用。例如,系统可以按照不同的优先级维护多个就绪队列,每个队列内部按照FCFS算法调度。5.FCFS算法同时适用于长程、中程和短程调度三种调度类型。 2.短进程优先算法:当需要调度进程(或作业)时,通过计算判断就绪进程队列中哪一个进程的预期执行时间最短,或后备作业队列中哪一个或几个作业的预期执行时间最短,就调度谁。---属于非剥夺调度算法。当某进程获得处理机,直到其执行完成,或需要等待某事件二阻塞时,才自动释放处理机。系统又调度新的进程(或作业)。---与FCFS算法比较,短进程优先调度算法改善了系统的性能,降低了系统的平均等待时间,提高了系统的吞吐量,但该算法也有问题:1.很难准确预测进程的执行时间。2.可能导致长进程饥饿,对长进程不公平。3.采用非剥夺调度方式,未考虑进程的紧迫程度,不适合分时系统和事务处理系统。 3.时间片轮转调度法:例如--在一个分时联机系统中,同时有n个人通过各自的终端共享一台主机(服务器)。终端完成输入输出操作,主机负责处理从终端发来的请求,为之建立进程、协调各进程的运行、调度各个进程等,并尽量满足每个终端用户对响应时间的要求。 #在分时联机系统中,n个进程循环地获得时间片而执行。从系统中来看他们是交替执行的,但就每个终端用户而言,都感觉到自己独占了一台主机,不受其他用户的影响,这是通过进程并发实现的。---如果用户数太多,主机处理的进程将会急剧增加,进程排队等待的时间也会很长,进程的响应时间也可能增长,用户将明显感觉到主机的速度变慢而补满意。另外,时间片的大小也会影响进程的响应时间。 //时间片的设置:1.进程切换将会增加系统的额外开销。2.时间片设定的太短,进程切换会非常频繁,从而降低处理机的效率;时间片设定的太长,将无法满足交互式用户对响应时间的要求。因此,时间片的设置要综合考虑系统的最大用户数,响应时间,系统效率等多种因素。 ----这个算法的实际操作中,进程切换时的系统开销是客观存在的。可见,采用基于时间片轮转调度法,进程的周转时间和平均周转时间并不比采用FCFS和短进程优先调度算法小。加上进程切换所需的系统开销时间,该算法的平均周转时间还会增长。----1.常用于分时系统及事务处理系统,合理的时间片大小将带来满意的响应时间。2.通常,合理的时间片指,能让80%左右的进程在一个时间片内完成。3.对于短的、计算型的进程有利。4.不适合于批处理系统的进程调度。5.不利于I/O型的进程。6.改进的方法之一,可以将I/O阻塞事件完成的进程单独组织一个就绪队列,该队列进程的时间片可以设置的小一些,且优先调度。 4.基于优先级的调度算法:1.基于时间片轮转调度法循环式地为每个被调度的进程分配一个时间片,对每个进程都是公平的。然而实际应用中,进程的性质可能是不同的。因此可以为每个进程定义一个优先级,优先级越高的进程将优先获得处理机的调度。2.如何设定进程的优先级?--进程完成功能的重要性。--进程完成功能的急迫性。--为均衡系统资源的使用,指定进程(作业)优先级。--进程对资源的占用程度,例如可以为短进程(或作业)赋予较高的优先级。3.静态与动态优先级:--静态优先级:一旦确定,则进程运行期间的优先级一直补改变。 动态优先级哦:系统首先赋予进程一个初始优先级,该优先级将随着进程的运行而改变。#典型的动态优先级变化方式:--优先级随着进程运行的剩余时间的减少而上升,使将要执行结束的进程尽快完成。--或随着进程排队等待的时间增长而上升,使等待时间越长的进程优先得到调度,不至于长时间饥饿。#具体实现方法:可以在每个时钟中断时,或需要进程切换时,重新计算就绪队列中各进程的优先级,并优先调度高优先级的进程。#采用动态优先级的两种调度算法:剩余时间最短者优先和响应比高者优先。1.剩余时间最短者优先:--为了使将要结束的进程尽早结束,释放系统资源,让别的进程执行。可以在每个时钟中断时,根据就绪队列中各进程的剩余执行时间动态调整其优先级,剩余时间最短的进程优先级最高。--显然,该算法是剥夺型的短进程优先调度算法,调度程序总是选择剩余执行时间最短的进程调度执行。--与短进程优先调度算法一样,该调度算法很难准确估计进程的剩余执行时间。--由于长进程在未执行时,或刚开始执行的一段时间内,其剩余执行时间都不会最短,所以该算法对长进程不公平。--但是,它不像FCFS算法那样偏袒长进程,也不像轮转调度法会产生很多中断而增加系统负担。--由于短进程提前完成,故采用剩余时间最短者优先的调度算法获得的平均周转时间比采用短进程优先算法短。 2.响应比高者优先:将进程的等待时间和进程的预期执行时间纳入优先级的计算,进程(预期执行时间)越长优先级越低,而随着进程的等待时间增长优先级上升,即进程的优先级与等待时间成正比,与进程执行时间成反比。令W表示等待时间,s表示预期执行时间,则响应比:R=(W+s)/s=w/s+1;。--调度方法:若当前执行进程处理完毕,或需要阻塞等待某事件而释放处理机,调度程序选择就绪队列中响应比最大的进程执行;若等待时间相同,短进程因为s小,R较大而优先调度。若进程的预期执行时间相同,则等待时间长的进程优先调度,相当于FCFS。随着等待时间的增加,长进程的响应比不断增大,在某个时刻也必然被调度。 #同短进程优先和剩余时间最短优先调度算法一样,很难准确估计进程的预期执行时间。每次调度之前都需要计算响应比,增加了系统开销。 5.反馈调度法:根据进程执行历史调整调度方式的调度方法,它结合了优先级和时间片轮转调度思想。#该方法有利于交互型短进程或短批处理作业,因为他们一般只需要一个或很少的几个时间片即可完成。但可能使长进程的周转时间急剧增加。如果不断地有新进程到来,还可能出现长进程长期饥饿现象。为此,可以为各队列设置不同的时间片,优先级越低时间片越长。 6.进程调度算法小结:1.如何选择进程调度算法与系统设计的目标有关。2.交互式多任务系统,主要考虑联机用户对响应时间的要求,一般采用基于时间片轮转调度算法,同时根据进程的性质设置不同的优先级。3.批处理系统往往以作业的平均周转时间来衡量调度性能,常选用基于优先级的短进程(或作业)优先调度算法 。
    90.实时系统:是指能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行的计算机系统。--分为实时控制系统和实时信息处理系统。1.实时控制系统:要求进行实时控制的系统。主要用于生产过程的控制,实时采集现场数据,并对所采集的数据进行及时处理,进而自动地控制响应的执行机构,使某些(个)参数(如温度,压力,方位等)能按预定的规律变化,以保证产品的质量和提高产量。也可以用于武器的控制,如火炮的自动控制系统,飞机的自动驾驶系统,以及导弹的制导系统等。2.实时信息处理系统:能对信息进行实时处理的系统。该系统由一台或多台主机通过通信线路连接成百上千个远程终端,计算机接收从远程终端发来的服务请求,根据用户提出的问题,对信息进行检索和处理,并在很短的时间内为用户做出正确的回答。典型的实时信息处理系统有:飞机订票系统,情报检索系统等。
    91. 实时任务:指具有及时性要求的,常被重复执行的特定进程,在实时系统中习惯称为任务. ---按任务的执行时是否呈现周期性来分类:1.周期性实时任务,要求按指定的周期循环执行,以便周期性地控制某个外部事件. 2.非周期性实时任务,任务的执行无明显的周期性,但都必须联系着一个截止时间. (截止时间包括:开始截止时间(任务在某时间以前,必须开始执行)和完成截止时间(任务在某时间以前必须完成)). ----根据截止时间要求将实时任务划分为:1.硬实时任务,系统必须满足任务对截止时间的要求,否则可能出现难以预测的结果. 2.软实时任务,它也联系一个截止时间,但并不严格,若错过了任务的截止时间,对系统产生的影响不会太大. //实时调度的目标:1.主要考虑如何使硬实时任务在其规定的截止时间内完成,同时,尽可能使软实时任务也能在规定的截止时间内完成. 2.而公平性和最短平均响应时间等要求已不再重要.3.但是,大多数现代实时操作系统无法直接处理任务的截止时间,他们只能尽量提高向响应速度,以尽快地调度任务. ##实时调度算法:实时性要求不太高的实时系统可用的调度算法:1.基于时间片轮转调度法 2.基于优先级的调度算法 3.最早截止时间优先调度算法,即优先调度截止时间最近的实时任务. ###经典实时任务调度算法:速度单调调度算法:1.根据任务的周期大小赋予优先级,最短周期的任务具有最高优先级,其中:---任务周期是指一个任务到达至下一任务到达之间的时间范围. ---任务速度,即周期(以秒计)的倒数,以赫兹位单位. 2.任务周期的结束,表示任务的硬截止时间.任务的执行时间不应超过任务周期. 3.在RMS调度算法中,如果以任务速度为参数,则优先级函数是一个单调递增的函数,故称为速度单调算法. 4.该调度算法广泛用于工业实时系统的周期性任务调度.
    92.线程: 操作系统中引入进程的目的是为了描述和实现多个程序的并发执行,以改善资源利用率及提高系统的吞吐量.那为什么引入线程? 为了减少程序并发执行时系统所付出的额外开销,使操作系统具有更好的并发行. ---进程的两个基本属性:1.进程是一个拥有资源的独立单位. 2.进程同时又是一个可以独立调度的基本单位. ----系统为进程进行的操作:1.创建进程,撤销进程,进程切换 2.进程作为资源的拥有者和系统的调度对象,需要花费系统较大的额外开销.故,系统中同时存在的进程数目不宜过多,进程切换的频率也不宜过高,而这也就限制了并发度的进一步提高. ///由进程到线程:1.目标:既能提高进程并发度,又能降低系统的额外开销. 2.实现:将进程的资源申请和调度属性分开.即进程作为资源的申请和拥有者,但不作为调度的基本单位.这样,就产生了线程的概念. 3.线程是进程中的一个实体,是独立调度和分派的基本单位. 4.线程自身基本上不拥有系统资源,只拥有少许运行中必不可少的私有资源.线程可与同属一个进程的其他线程共享进程的全部资源. ##线程的状态:1.进程中的所有线程共享该进程的状态. 2.线程具有三种状态:就绪,执行和阻塞. 3.一般不具有挂起状态,因为线程共享进程的资源,包括存储空间,如果挂起一个进程,其所属的全部线程必将被挂起.而单独挂起某进程中的一个线程,必然会影响同一进程中的其他线程的执行,这是没有任何意义的. ###对线程的操作:1.一个进程可以创建和撤销一个或多个线程,同一进程中的多个线程可以并发执行. 2.对线程的操作包括: ---派生:当系统创建一个进程时,同时也为该进程派生一个线程,同一进程中的线程可以再派生其他线程. ---阻塞:当线程需要等待某事件时,它将被阻塞,释放处理机执行其他线程.---解除阻塞:当线程的阻塞事件发生,其状态就转换为就绪,并插入到就绪队列,等待调度的执行. 4.结束:当线程执行完毕,释放其私有资源. *注意:线程阻塞不一定会引起整个进程的阻塞,否则引入线程带来的并发性就不会提高.
    93.进程与线程:1.传统操作系统中,一个进程可以创建一个线程,如MS DOS就是一个单用户,单进程,单线程的操作系统,UNIX是一个多用户,多进程,单线程的操作系统. 2.现代操作系统和软件设计大多支持多线程运行.例如,Java虚拟机是一个单进程,多线程的运行环境,windows系列操作系统和Linux操作系统都采用了多进程,多线程技术. ----调度:1.传统操作系统中,进程既是拥有资源的基本单位,又是独立调度的基本单位. 2.引入线程的操作系统中,线程是独立调度的基本单位,进程是资源拥有的基本单位,从而可以显著地提高系统的并发程度. 3.同一进程中的线程间的切换不会引起进程切换,但当一个进程中的线程切换到另一个进程中的线程时,将会引起进程间切换. ---并发:1.进程之间可以并发执行 2.同属于一个进程的多个线程之间,亦可并发执行. 3.因而使操作系统具有更好的并发性,从而能更有效地使用系统资源和提高系统的吞吐量. ---拥有资源:1.进程是拥有资源的独立单位,它有权申请系统的各类资源. 2.线程除了拥有很少的私有资源外,不能申请系统资源,可以共享其所属进程的资源.即,进程的代码段,数据段以及系统资源,如已打开的文件,I/O设备等,都可被其内的所有线程共享. ---系统开销:1.操作系统管理进程的开销显著地大于管理线程所需的开销. 2.进程切换的开销也远大于线程切换的开销. 3.由于同一进程中的多个线程具有相同的地址空间,使他们之间的同步和通信也比较容易. 4.有些类型的线程切换,同步和通信都无需操作系统内核的干预.
    94.线程的类型:1.用户级线程 :用户级线程的创建,撤销和切换等操作全部由支持线程的应用程序完成,内核并不知道线程的存在. 一些数据库管理系统,如Informix即支持用户级线程.应用程序可以利用线程库来设计多线程程序,该线程库包含各种用于管理用户级线程的例程,如用于创建和撤销线程的例程,用于线程间传递消息和数据的例程,线程调度例程,以及保护和恢复线程上下文的例程. --用户级线程阻塞是否会引起整个进程的阻塞? 视情况而定,当某进程中的一个线程需要等待另一线程的输出数据而阻塞时,整个进程并不会阻塞,即进程保持执行状态,其内的某个线程也是执行状态, 当某线程因为I/O阻塞时,内核需要启动系统I/O,控制从用户级转到系统内核级,这时常会引起整个进程阻塞.随即将发生进程切换,进程调度程序重新调度另一个就绪进程执行. ///用户级线程能节省大量的系统额外开销,并提高程序并发性,这是因为:1.线程的管理和控制仅在用户级进行,线程切换无需内核干预,没有模式切换,减少了模式切换的开销. 2.调度更灵活.应用程序可以根据需要选用线程库中不同的线程调度算法,而不受系统内核进程调度程序的约束. 3.由于线程库独立于系统内核,可以运行在不同的操作系统之上,使用户级线程可以得到不同操作系统的支持,而无须修改操作系统内核. ///用户级线程问题:1.由于很多操作系统的系统调用都会引起阻塞,用户级线程中的系统调用常常会引起线程及整个进程阻塞,削弱了线程的并发性. 2.由于系统内核不知用户级线程的存在,可能出现进程切换时,强行中断其内某个执行线程的情况. 3.很难实现不同进程的线程并发. 2.内核级线程:内核级线程的管理全由系统内核完成,应用程序无权进行线程切换等操作,系统为应用程序提供了相应的应用程序编程接口API. Window2000 Linux和OS/2等操作系统即采用内核级线程技术. ///1.系统内核负责内核级线程的创建,撤销,切换等操作.应用程序可以设计成多线程程序,多个线程同属于一个进程.系统以线程位调度单位. 2.进行线程切换时,需要同时保存整个进程的上下文以及线程的上下文信息.这样,当进程中的某个线程阻塞时,内核可以调度另一个就绪线程执行(同一进程或不同进程). 3.线程切换时需要进行模式切换. 3.混合模式:由于用户级线程和内核级线程各自有自己的优缺点,实际工程设计可以进行折中,将二者结合起来,形成一种混合模式. Solaris操作系统即采用这种技术.1.在混合模式中,线程的创建,撤销,调度,同步等都在用户级应用程序中完成. 2.应用程序中的多个用户级线程被映射到一个或较少的某些内核级线程. 3.这样,可以使同一应用程序中的多个线程能分散到不同的处理机上并行运行,而且,可以避免因为某些用户级线程的阻塞而引起整个进程阻塞的现象.
    95.进程互斥与同步:1.并发控制-竞争资源: 1.当并发进程竞争使用同一资源时,他们之间就会发生冲突. 2.如果操作系统将资源分配给其中的某一个进程使用,另一个进程就必须等待,直到申请的资源可用时,由操作系统分配给它. 3.如果竞争某资源的进程太多,这些进程还必须等待在一个队列中,如就绪队列,阻塞队列等. 4.一种极端的情况是,被阻塞进程永久得不到申请的资源而死锁.5.进程竞争资源首先必须解决互斥问题.某些资源必须互斥使用,如打印机,共享变量,表格,文件等. 6.这类资源又称临界资源,访问临界资源的那段代码称为临界区. 7.任何时刻,只允许一个进程进入临界区,以此实现进程对临界资源的互斥访问. ///互斥使用临界资源:1.当进程需要使用临界资源时,通过获得临界区的使用权实现 . 2.首先在”进入区”判断是否可以进入临界区,如果可以进入,则必须设置临界区使用标志,阻止其他后来的进程进入临界区.后来的进程通过查看临界区使用标志,知道自己不能进入临界区,就进入阻塞队列,将自己阻塞. 3.当临界区内的进程使用完毕,退出临界区时,即在”退出区”修改临界区使用标志,并负责唤醒阻塞队列中的一个进程,让其进入临界区. 4.由于同一个临界资源在多个共享它的进程中将对应多个临界区,那怎样才能保证诸进程之间互斥地执行临界区呢? 5.这就必须保证”临界区使用标志”是可被系统中所有进程共享的全局变量,而且诸进程对该标志的修改操作必须互斥进行. ///临界区使用原则(也称为互斥条件):1.每次只允许一个进程处于临界区(忙则等待); 2.进程只能在临界区内逗留有限时间,不得使其他进程在临界外无限期等待(有限等待); 3.如果临界区空闲,则只要有进程申请就立即让其进入(空闲让进); 4.进入临界区的进程,不能在临界区内长时间阻塞等待某事件,必须在一定期限内退出临界区(让权等待); 5.不能限制进程的执行进度及处理机的数量. (进程因竞争资源可能引起死锁,也可能引起饥饿). ///并发控制:共同协作: 1.多个进程常常需要共同修改某些共享变量,表格,文件数据库等,协作完成一些功能. 2.必须确保他们对共享变量的修改是正确的,保证数据的完整性. 3.共享协作同样涉及到互斥,死锁和饥饿问题,但更强调对数据的写操作必须互斥地进行. 4.必须保证数据的一致性. 5.前面列举了银行联网储蓄的例子,除了必须保证储户余额的正确性以外,还必须使银行储蓄总余额,当日发生额,流水帐等数据得到一致的修改. 6.一般通过事务处理来保证数据一致性,可以将对用户各项数据的修改放到一个临界区中,进入临界区的进程必须一次完成所有修改操作. 7.只有该进程退出临界区以后,才允许别的进程进入临界区进行数据修改,以保证数据的一致性. ///并发控制--通信协作: 1.当进程进行通信合作时,各个进程之间需要建立连接,进程通信需要同步和协调.进程通信的方式很多,包括消息传递,管道,共享存储区等. 2.通过消息传递实现进程通信时,由于没有共享资源,故无须互斥,但仍可能出现死锁和饥饿.例如,两个进程互相等待对方发来的数据而永久阻塞,即死锁. ###互斥与同步的解决方法:1.软件方法:指进程自己,通过执行相应的程序指令,实现与别的进程同步与互斥,无需专门的程序设计语言或操作系统的支持. 实践证明,该方法很难正确控制进程间的同步与互斥,而且可能会大大地增加系统的额外开销. 采用软件方法实现进程的互斥使用临界资源是很困难的,他们通常能实现两个进程的互斥,很难控制多个进程的互斥. 算法设计需要非常小心,否则可能出现死锁,或互斥失败等严重问题. 软件方法始终不能解决忙等现象,降低系统效率. 2.硬件方法:为了解决软件方法存在的不足,有人提出了硬件解决方法,通过屏蔽中断或采用专门的机器指令控制同步与互斥. 硬件方法包括屏蔽中断和专用机器指令. ///屏蔽中断:1.由于进程的切换需要依赖中断来实现,如果屏蔽中断,则不会出现进程切换. 2.因此,为了实现对临界资源的互斥使用,可以在进程进入临界区之前,屏蔽中断,当进程退出临界区的时候,打开系统中断.3.中断被屏蔽以后,系统时钟中断也被屏蔽.处理机将不会被切换到其他进程.4.于是,一旦屏蔽中断,进程就可以检查和修改共享内存区中的数据,而不必担心其他程序介入. #这种方法约束性太强,付出的代价太大,因为中断被屏蔽以后,系统将无法响应任何外部请求,也不会响应当前执行进程的任何异常及系统故障,严重降低了处理机性能.#这种你方法仅对单处理机系统有效,如果系统有两个或多个共享内存的处理机,屏蔽中断仅仅对执行本指令的处理机有效,其他处理机仍将继续运行,并可以访问共享内存空间. ///专用机器指令:利用一些专用机器指令也能实现互斥,机器指令在一个指令周期内执行,不会受到其他指令的干扰,也不会被中断. (test and set指令就是较常用的机器指令) ##机器指令的优点:1.非常简单,易于证明 2.同时适合于单处理机系统和共享内存的多处理机系统中多个进程的互斥. 3.可以分别位临界区设置属于它自己的变量,以实现对多个临界区的互斥访问。缺点:1.“忙等”现象仍然存在。进程都需要循环检测,等待时机进入临界区。但是,由于采用了机器指令,这种忙等消耗的机器时间比软件方法小,属于可接受的忙等。2.可能出现饥饿现象。当临界区空闲时,执行循环检测的若干等待进程能进入临界区的几率是相等的,有的进程可能很难有机会进入临界区,而饥饿。3.还有可能导致死锁。 与软件方法比较,硬件方法减少了系统额外开销,但由于需要太强的硬件约束条件,以及可能导致进程饥饿与死锁现象,一直没有成为通用的解决方法. ///另一类由操作系统或专门的程序设计语言提供的特别支持,包括3.信号量方法:(已经成为控制进程同步与互斥的通用方法):软件方法和硬件方法都存在忙等问题,浪费了处理机时间,信号量方法能实现进程互斥与同步,而不必忙等。///信号量实现同步互斥的基本原理:1.两个或多个进程可以通过传递信号进行合作,可以迫使进程在某个位置暂时停止执行(阻塞等待),直到它收到一个可以“向前推进”的信号(被唤醒)。2.相应的,将实现信号灯作用的变量称为信号量,常定义为记录型变量s,其中一个域为整形,另一个域为队列,其元素为等待该信号量的阻塞进程。#定义对信号量的两个原子操作:wait(s)和signal(s),早期这两个原语被称作P(s)和V(s)。 Wait和signal的应用:1.进程进入临界区之前,首先执行wait(s)原语,若s.count<0,则进程调用阻塞原语,将自己阻塞,并插入到s.queue队列排队.2.注意,阻塞进程不会占用处理机时间,不是忙等,直到某个从临界区退出的进程执行signal(s)原语,唤醒它.3.一旦其他某个进程执行了signal(s)原语中的s.count+1操作后,发现s.count<=0,即阻塞队列中还有被阻塞进程,则调用唤醒原语,把s.queue中第一个进程修改为就绪状态,送就绪队列,准备执行临界区代码. #信号量的类型:1.信号量分为:互斥信号量和资源信号量. 2.互斥信号量用于申请或释放资源的使用权,常初始化为1. 3.资源信号量用于申请或归还资源,可以初始化为大于1的正整数,表示系统中某类资源的可用个数. 4.wait操作用于申请资源(或使用权),进程执行wait原语时,可能会阻塞自己. 5.signal操作用于释放资源(或归还资源使用权),进程执行signal原语时,有责任唤醒一个阻塞进程. ###操作系统内核以系统调用形式提供wait和signal原语,应用程序通过该系统调用实现进程间的互斥. 工程实践证明,利用信号量方法实现进程互斥是高效的,一直被广泛采用. 4.管程方法 5.消息传递方法.
    96.经典进程同步与互斥问题:1.生产者/消费者问题. 2.读/写问题 3.哲学家进餐问题.

  • 相关阅读:
    mysql5.6.20安装
    唯一识别Windows机器的最佳方法
    不用Root在安卓手机上运行Kali_Linux
    在Windows 7和10上显示上次登录帐户信息
    优化非活动窗口的颜色
    Windows10中以管理员身份打开命令提示符
    在Windows10中更改”WIN+E“快捷键打开目标
    在任务管理器中显示所有CPU内核性能
    Windows启动控制台登录模式
    Fluent Terminal
  • 原文地址:https://www.cnblogs.com/chengyunshen/p/10716113.html
Copyright © 2020-2023  润新知