您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 计算机操作系统(进程与线程)
1主要内容第2章进程与线程2.1进程2.2线程2.3进程间通信2.4调度2.5经典的IPC问题22.1进程(补充1)•程序–指令或语句序列,体现了某种算法所有程序是顺序的•①顺序程序–计算机系统中只有一个程序在运行,该程序独占系统中的所有资源,其执行不受外界影响•特征:顺序性、封闭性、可再现性32.1进程(补充2)②多道程序执行系统中程序的执行:同时处理多个具有独立功能的程序,应具有以下特点:.独立性:多个程序逻辑独立,并可独立运行.随机性:多用户环境下程序的运行是随机的.资源共享:③并发执行的程序:.并发:两个或多个事件在同一个时间间隔之内同时发生.并行:两个或多个事件在同一个时刻同时发生特点:随机性,失去了程序顺序执行所具有的封闭性和可再现性4例:有栈S,top为栈顶指针,getaddr(top)从栈中取内存数据块地址,reladdr(bld)将内存数据块地址blk放入S中Proceduregetaddr(top)beginlocalrr-(top)top-top-1return(r)endProcedurereladdr(blk)begintop-top+1(top)-blkend12abeftopr=?52.1.2进程的定义:①定义:AProcssisjustanexecutingprogram(Include:PC,R,variablesetc.)或:可以与其他程序并发执行的程序的一次执行,是系统资源分配的基本单位②特征:.动态.并发.独立.异步.结构6③进程与程序的区别及联系:.进程是动态的,而程序是静态的.进程可以并发,而程序则没有.进程是资源竞争的基本单位联系:一个程序可以生成多个不同的进程④进程的层次结构:(进程树).系统中除根进程外,每个进程都有且只有一个父进程.每个子进程均由它的父进程创建.一个父进程可以有多个子进程72.1进程2.1.1进程模型•含有4道程序的多道程序•4个独立的顺序进程的概念模型•在任意时刻仅有一个程序是活跃的82.1.2创建进程4种主要事件导致进程的创建1.系统初始化2.执行了正在运行的进程所调用的进程创建系统调用3.用户请求创建一个新进程4.一个批处理作业的初始化92.1.3进程的终止引起进程终止的条件:1.正常退出(自愿的)2.错误退出(自愿地)3.严重错误(非自愿地)4.被其他进程杀死(非自愿地)102.1.4进程的层次结构•父进程创建一个子进程,子进程可以创建属于自己的更多进程•Unix中所有子女和后裔共同组成一个进程组–UNIX叫“进程组•Windows没有进程层次的概念–所有的进程都是地位相同的112.1.5进程的状态(1)•进程课程的状态–running(运行态)–blocked(阻塞态)–ready(就绪态)•上图显示出各状态之间的转换1.进程为等待输入而阻塞2.调度程序选择另一个进程3.调度程序选择这个进程4.出现有效输入122.1.5进程的状态(2)•以进程构造的操作系统最底层–处理中断,调度•在该层之上是顺序进程132.1.6进程的实现(补充).进程控制块PCB(用来标识进程存在于系统中的唯一的实体,部分或全部常驻内存).程序.数据集①PCB:系统用PCB反映进程的动态特征,内容包括:.描述信息:进程名(标识号),用户名(标识号),家族链.控制信息:状态,优先级,内存始址,计时,通信信息.资源管理信息:内存大小,设备等.CPU现场保护机构:PCB中设有142.1.6进程的实现(1)典型的进程表表项中的一些字段②进程表表项——进程控制块的主要字段152.1.6进程的实现(2)当中断发生后操作系统最底层的工作步骤1.硬件压入堆栈程序计数器等。2.硬件从中断向量装入新的程序计数器。3.汇编语言过程保存寄存器值。4.汇编语言过程设置新的堆栈。5.C中断服务例程运行(典型的读和缓冲输入)。6.调度程序决定下一个将运行的进程。7.C过程返回至汇编代码8.汇编语言过程开始运行新的当前进程③中断发生时,底层处理步骤16进程与程序的区别(补充)•进程更能真实的描述并发(程序不能)•进程是由程序和数据两部分组成的•程序是静态的。进程是动态的•进程有生命周期,有诞生有消亡,短暂的;而程序是相对长久的•一个程序可以对应多个进程•进程具有创建其他进程的功能17•线程线程是轻量级的进程,它是一个进程内的基本调度单位,有自己的程序计数器、寄存器及堆栈。•多线程与多进程-多线程系统允许多个线程共享一个进程的地址空间、打开文件、全局变量等资源。-多进程系统允许多个进程共享物理内存、磁盘、打印机等资源。•线程与进程-进程是资源管理的基本单位-线程是调度的基本单位2.2线程2.2.1线程的概念182.2.2线程模型(a)三个进程,每个进程有1个线程(b)一个进程有3个线程112319线程的实现(TCB)•一个进程中所有线程共享内容•每个线程自己的内容20每个线程有自己的堆栈(kernel&userstack,TCB)212.2.3引入线程的原因•伪并行,进一步提高并发度•更小的系统开销•更高的性能•有利于在多CPU系统中实现真正的并行222.2.4在用户空间实现线程用户级线程包232.2.5在内核中实现线程内核管理的线程包242.2.6混合实现用户级线程与内核线程复用252.3进程间通信①并发进程间的相互制约:.间接制约:诸进程对共享资源的使用通过系统来协调,使得进程间执行速度相互影响.直接制约:诸进程自行使用共享资源或由进程合作引起,某一进程直接通过某机构发消息给其他进程,从而直接其他进程的执行②基本概念:.临界资源:一次只允许一个进程使用的资源.临界区:在每个进程中,访问临界资源的那部分代码(那段程序)2.3.1进程通信262.3.2互斥①定义:.不允许两个以上的共享该资源的并发进程同时进入临界区,称为互斥②并发进程互斥执行准则:.不假设各并发进程的相对执行速度.出于临界区外的进程不能阻止其他进程进入临界区.任何时刻只允许一个进程处于临界区中.不能使进程在临界区外永远等待27③互斥的实现:关中断法:每个进程进入临界区后先关中断,离开前开中断缺点:.系统可能终止.多CPU时,无用加锁法:用锁变量来表示临界区是否可用加锁后的临界区描述如下:lock(key[s])临界区//s为临界区类名unlock(key[s])//key[s]为锁变量,为1表示临界区//可用,为0表示临界区不能使用28lock(key[s]){L:ifkey[s]=0thengotoLelsekey[s]=0}unlock(key[s]){key[s]=1}PA(){L1:lock(key[s])sunlock(key[s])gotoL1}PB(){L2:lock(key[s])sunlock(key[s])gotoL2}缺点:.不断循环测试,CPU费时.存在不公平现象29严格的轮转法:用标志严格控制轮流使用临界区PA(){while(true){while(turn!=0);//waitcritical_region();turn=1;noncritical_region();}}PB(){while(true){while(turn!=1);//waitcritical_region();turn=0;noncritical_region();}}缺点:.当一个进程比另一进程慢很多时不好30TSL指令用TSL指令进入和离开临界区31信号量法:.信号量:是OS中表示资源的物理实体,是一个与队列相关的整型变量,其值仅由down,up原语改变.信号量的表示意义:设sem为信号量,则:当sem=0时,表示可供并发进程使用的资源实体数当sem0时,表示正在等待使用资源的进程数注:P、V原语的操作等同down、up原语操作32入口s=s-1s=0调用进程入等待队列转进程调度返回入口s=s+1s=0唤醒等待队列中的一个进程返回或转进程调度返回down原语up原语YYNN33用down,up原语实现互斥:PA:…down(sem)Sup(sem)…PB:…down(sem)Sup(sem)….设一个互斥的信号量sem.描述:S为临界区的类名34管程.一种更为高级的同步原语,更便于使用,管程的互斥由编译器负责,使用者只需将所有临界区转换为管程即可。.一个管程是由过程、条件变量及数据结构等组成的特殊模块或软件包。进程仅能通过管程访问其中的数据结构。.管程的特性:任一时刻管程中只能有一个活跃进程。352.3.3进程同步.例:设有计算进程及打印进程通过共用一个buf缓冲区进行工作,如两进程独立工作,则过程可描述如下:Pc:..A:localBufrepeatbuf-BufuntilBuf=nullcomputeBuf-resultgotoA..Pp:..B:localPrirepeatPri-bufuntilPri=nullprintbuf-nullgotoB..假定对buf已采取的互斥措施36①定义:异步环境下,一组并发进程因直接制约而相互发送消息,相互合作,相互等待,使各进程按一定速度执行的过程②同步的实现:消息名法:为同步进程间发送的事件或消息赋予一个唯一的消息名,用:wait(表示进程等待合作进程发来的消息)signal(表示向合作进程发送消息)则上例表示的同步关系如下:.设消息名Bufempty表示Buf为空,Buffull表示Buf满.初始化:Bufempty=true,Buffull=false37描述:Pc:A:wait(Bufempty)caculateBuf-resultBufempty-falsesignal(Buffull)GotoAPp:B:wait(Buffull)printBuf-nullBuffull-falsesignal(Bufempty)GotoB38信号量法:此处信号量只与制约及被制约进程有关,故为私有的信号量同例:.设SA=0表示Buf中无可供打印的计算结果SB=0表示Buf空,计算结果可放入BufPcPp39Pc:A:caculatenextnumberBuf-resultcount=count-1V(SA)P(SB)ifcount=0thendestroy(Pc)elsegotoAPp:B:P(SA)print-BufV(SB)printthelastnumberifcount=0thendestroy(Pp)elsegotoB402.3.4进程通信•引入:1)信号量需要编程语言支持.2)信号量在网络环境下不可用•实现:1)send(destination,&message)2)receive(source,&message)消息传递41用N条消息实现的生产者-消费者问题42管道通信注意:.对管道的使用必须互斥.管道工作时,只有一个读端和一个写端.由读出端和写入端不断反复交替工作,完成通信43.作业调度(高级调度):决定参与CPU与其他系统资源的竞争,即作业由后备到运行态。.交换调度(中级调度):决定参与CPU竞争的进程,即进程由运行到阻塞态,或由阻塞态到就绪态。.进程调度(低级调度):决定获得CPU的进程,即进程由就绪态到运行态。2.4.1调度的层次:2.4进程调度442.4.2作业调度:①作业调度功能:.记录系统中各作业的状况.从后备队列中选一部分作业投入运行.为被选中的作业做好执行前的准备工作.在作业执行结束时做善后处理工作②作业调度的目标:.公平.高效.大吞吐量.短的响应时间和周转时间452.4.3进程调度:①进程调度的功能:.记录系统中所有进程的执行情况.选择占有处理机的进程.进程上下文切换②调度的时机:.正常执行结束.进程阻塞等待.执行了某些原语(P,V).从系统态返回用户态.在可剥夺调度方式中,高优先级进程进入就绪队列.分时系统中,分配的时间片用完46③进程上下文切换步骤:.决定是否允许做进程上下文切换.保存当前执行进程的上下文.按一定算法选择就绪队列的一个进程.恢复或装配所选进程的上下文,转交
本文标题:计算机操作系统(进程与线程)
链接地址:https://www.777doc.com/doc-3193746 .html