版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高级AdvancedOperatingDistributedSystemsConceptsanddesign朱青QingZhu,DepartmentofComputerScience,RenminChapterInterprocessCommunication进程间的通Teacher:QingZhu 朱青DepartmentofComputerScience,InformationSchool,RenminUniversity2DistributedSystems–ConceptsandDesign,GeorgeCouloris, Dollimore,andTimKindbergEdition3,4,©PearsonEducation2001,2005ThelectureisbasedonthisChapter 进程间的3.0进程及消息3.1进程间的3.2客户/服务器计算模3.4应用4进程及消息进程进程状态消息进程通信经典操作系统简是计算机系统中的一个系统软件,是一些程序模能以有效、合理的方式组织和管理计算机的软硬使得用户能够灵活、方便、有效的使用计算机,6什么是操作系操作系统做什么#include#includeintmain(intargc,char{ oworld");return0;}操作系统提供一系列服务多任务设备控制用户界硬件控安9OperatingExploitsthehardwareresourcesofoneormoreprocessorstoprovideasetofservicestosystemusersandI/OdevicesBasicTheprocessorControlstheactionsofExecutesdata-processing&logicoperationsI/OMovedatabetweenmemoryandexternaldevices(storage,hardware,terminals,…)
TheIsvolatile–contentsarelostwhenpoweredoffRandomThesystemProvidesamongprocessors,mainmemory,andI/Omodules进程的进程(Process)的定进程的进程(Process)的定进程控制块(ProcessControl>进程控制块(PCB)概念 系统利用PCB来控制和管理进程,所PCB是系统感知进程存在的唯一标进程与PCB是一一对应程序与进程更 描述并发,而程序不进程是由程序和数据+PCB一个程序可对应多个进程,反之亦进程的基本状态及 等待发就绪
某 已经发
等待运行态进程占有CPU,并在CPU上运就绪态 等待态(Blocked):阻塞态、挂起态、冻结态、睡眠 五状态进程模准备退出:父进程可中止子进消息传进程交互的两个基本要同步:互斥进程间需同步。同步指对进程执行时序通信:合作进程间交换信消息传进程通信的一种常用方适用范围广,可用于多核、SMP由原语对“send(发送)和receive(接收)”提receive(源信息实现形式有多 MessageTable5.5DesignCharacteristicsofMessageSystemsforInterprocessCommunicationand消息传递的同只有当一个进程发送消息之后,接收者才能调用send原语的两种可能结发送者进程被阻塞,直到这个消息被接调用receive原语接收者进程接收消息时,消息已发出,接收三种组合方“阻塞send,阻塞receive”方式,即“会(如打用的组合(如服务器提供资源,收发)要求任何一方等待。:信息可能会丢失(如贴/看小)误可能会导致进程重复传递消息,消耗系统资源。且必须使用应答消息以消息丢失或发送者进程失效,会导send原语receive直接寻址发送者在发送时给出了接收者进程消息传递的间接寻址发送者将消息发送到共享的信箱中临时保管,接收者从信箱中获得这些消耦合方式:“一对一”、“多对一”、进程与信箱的关联:静态方式(端口)和动态方式(使用连接原语connect和IndirectProcess单机系分布式系定长格变长格消息头——消息类型、目标ID、消息体——消息目标目标优先级原同send——阻塞、无阻receive——阻塞、无阻寻间静动所有消息传递实现通信/格内长度——排队规优先使用“无阻塞send,阻塞receive”组一组进程共 个信箱box,信箱被初始化为一 每个进程在进入临界区前,首先尝试接收消息,每次只有接收到消息的那个进程才可以进入临界区)消息函数似在进程间传递一个可使用临界区的Buffer问题描述(生产者/消费者问题若干进程通过无限/有限的共享缓冲区交换数一组“生产者”进程不断另一组“消费者共享缓冲区无限/共有N4生产semaphoren=0;*缓冲区中semaphores=1;/*互斥*/voidproducer(){while(true){}
voidconsumer(){while(true){}}voidmain(){ 有限缓冲区的生产者/消费生产者N/*programmutualexclusion*/constintn=/*进程数*/;voidP(inti*进程i*/messagemsg;while(true){
voidmain(){send(box,null);parbegin(P(1),…,P(n));}receive(box,msg);/*信箱空时被阻塞/*临界区send(box,/*其余部分*/;}消息传递实现生产者-/*互斥程序constintcapacity=/*缓冲区容量*/;messagenull=/*空消息*/;voidproducer(){messagepmsg;while(true){receive(mayproduce,pmsg);send(sume,}}/*互斥程序constintcapacity=/*缓冲区容量*/;messagenull=/*空消息*/;voidcomsumer(){messagecmsg; send(mayproduce,null);}}消息传递实现生产者-voidmain({for(inti=1;i<capacity;i++)send(mayproduce,null);}/*初始时:mayconsume信箱为空,mayproduce信箱则被null信号填满Chapter 进程间的3.0进程及其状态转3.1进程间的3.2客户/服务器计算模3.4应用RMI,RMI,RPC,ExternaldataExternaldataRequest-replyRequest-replyOperatingsystem,networkRMI(remotemethodinvocation),RPC(remoteprocedureInterprocessCommunication(进程间的通信Point-to-pointmessagepassingistypicallybasedontwomessagecommunicationoperations(subroutines).在点Send:Aprocesscopiesamessage(asequencebytes)intothe(ing)bufferofaremoteReceive:Aprocesscopiesamessagefromthe(bufferofitssystemintoitslocal接收:进程消息从系统的缓冲区到本地内存Typically,ReceivemustbecalledbeforethecorrespondingSend.在发送之前,相应的接收需被调用Unbufferedcommunication:IfareceivehasnotcalledbeforethemessagearrivesitisAlternatively,someingmessagesarekepttemporarilyinabuffer(mailbox)assumingthatasuitablereceivewillbecalled„soon“.Otherwisethereisatime-outorabufferFailuremodelCommunicationSynchronousCommunication:ThesendingandreceivingprocessessynchronizeeachotherateveryTheSendandtheReceiveoperationsareTheSendprocessisblockeduntilthecorrespondingReceiveisissued.发送进程阻塞直到发生了相应的接收TheReceiveprocessisblockeduntilamessageAsynchronousCommunication异步Thesendingprocessisallowedtoproceedassoonasthemessagehasbeensenttotheoutgoing(local)TheSendoperationisnon-TheReceiveoperationmaybeeitherblockingInterprocessMessageDestination:(Internetaddress,localport)Reliability:reliablecommunicationintermsofvalidityandintegrity.Ordering:Someapplicationsrequirethatmessagesbedeliveredinsenderorder.ThedeliveryofmessagesoutofsenderorderinwhichisregardedasafailurebysuchFigureSocketsand
any
agreed
Internetaddress=
other
Internetaddress=SocketsareendpointsforcommunicationTheyoriginatefromUNIXbutarealsofoundin套接字源于UNIX,也在其他OSTheyareusedbyUDPandTCP它被用于UDPandEachsocketisassociatedwithaparticularInterprocesscommunicationconsistsoftransmittingamessagebetweenasocketinoneprocessandasocketinanotherprocess.AsocketmustbeboundtoalocalportandanInternetaddressofthecomputeronwhichitruns.套接字必须绑定到计算机的一个InternetAprocessmayusemultipleportnumbersforPortscannotbesharedbydifferentprocesses.不同进程 Exception:IPmulticastsUDP)IPUDPisunreliableanddoesnotsupportacknowledgementsUDP是不具有可靠性,不支持确认和重Ifamessagedoesnotarrive,afailure如果消息无法到达,故障发Mostenvironmentssupportamessagesizeof大多数环境支持的消息包大小为Largermessagesmustbe大消息必须被分Thereceivingprocessneedstospecifyanarrayforthe接收消息需要列入消息数Themessageistruncateditistoo太长的消息需要被截UDPusesnon-blockingsendsandblockingUDP数据报使用非阻塞send和阻塞Amessageis cedinaqueueforthesocketandcanbecollectedbyafuturereceive.消息被放置在socketTime-outscanbesetonThemessageisdiscardedifthenosocketisboundtothereceivingport如果套接字不被绑定到接收端消AreceivegetsanymessageaddressedtothisTCPisreliableandusesanacknowledgementSlidingwindowTheTCPstreamistransmittedasoneormoreIPpackets(implementationdependent).TCPtriestomatchthespeedoftheprocesseswritingtoorreadingfromastream:FlowAsendermaybeblockedDuetomessageidentifierstherecipientcandetectandrejectduplicatesandreordermessageifnecessary.由于消息标示接收者能探测和 ApairofcommunicatingprocessmustestablishconnectionbeforeusingaOncetheconnectionexistsnoInternetaddressesandportsarenecessarytowritetoorreadfromthe一旦连接建立,对于流的读写,Internet地址和端口可以不需TheprocessesmustagreeonthecontentoftheFailureModelsforUDPandUDPusesachecksumtoensurethatamessageisUDP使用校验确保消息不再破Somemessagesmaygetlost(omission一些消息可能被丢失(冗长失效MessagesmayarriveoutofsenderTCPuseschecksumstodetectandrejectcorruptTCP使用校验诊断 TCPusessequencenumberstodetectandduplicatepackets.TCP使用序列号诊断 重复的包TCPusestimeoutsandretransmissionstodealwithAfteralongtimewithoutacknowledgementTCPdeclaretheconnectiontobe长时间没有被确认的TCP将宣布连接中Theprocessescannotdistinguishbetweennetworkfailureandfailureoftheprocessattheotherendoftheconnection.Inthiscaseaprocess lwhetheritsrecentmessageshavebeenFigureMiddlewareRMIandRPC
Figure sendsamessagetotheserverandgetsaimport.*;importpublic publicstaticvoid//argsgivemessagecontentsandserveraSocket=null;try{aSocket=new);byte[]maHost=FigureUDPserverrepeatedlyreceivesarequestandsendsitbacktoimport.*;publicclasspublicstaticvoidaSocket=null;aSocket=new6789);byte[]buffer=newrequest=newFigure makesconnectiontoserver,sendsrequestandreceivesimport.*;publicclass publicstaticvoidmain(Stringargs[]){//argumentssupplymessageandhostnameofSockets=null;intserverPorts=newin=new(}.getInputStream(Figure4.6TCPservermakesaconnectionforeachandechoesthe’simportimportpublicclassTCPServerpublicstaticvoidmain(Stringargs[]){try{intserverPort=7896;ServerSocketlistenSocket=newServerSocket(serverPort);while(true){ Socket=listenSocket.accept();Connectionc=new }}catch(IOExceptione){System.out.println("Listen}}//thisfigurecontinuesonthenextFigure4.6classConnectionextendsThreadDataInputStreamin;SocketSocket;publicConnection(SocketaSocket)trySocket=ain=new out=newDataOutputStream( }catch(IOExceptione)}publicvoidtry //anechoStringdata=}catch(EOFExceptione)}catch(IOExceptione)}finally{try{Socket.close();}catch(IOExceptione){/*close}}FigureSocketsusedfordatagrams用于数据包的套Sendinga Receivingasendto(s,sendto(s,"message", ServerAddressandAddressaresocketFigureRequestinga Listeningandacceptingabind(s,write(s,"message",sNew=accept(s, write(s,"message",ServerAddress AddressaresocketChapter 进程间的3.0进程及其状态转3.1进程间的3.2客户/服务器计算模3.4应用客户/服务器计算1网络计算(1)以大型机为中心的计算模(分时共享模式(time- 从主机返回的所有结果,都显示在屏幕网络计算模(2)以服务(资源共享模式resource-形式:共享共同的应用、数据,以 盘、等。网络计算模(3)小型化和客户机/服务器计算end)服务器部客户机和服务器工作在不同的逻辑实体中,协调工作通信时,客户即可索取信息,它依赖于服务器执行客不能完成或不能有效完成的工服务器方随时等待客户机提交申请的信息,进行信息技术特点和计算机能力来执行一个特定C/S(1)客户机的特点B)一个C/S模式下,可包括多个客户C)客户机使用标准语言进行信D)客户机可使用缓冲或优化E)客户机通过一个进程间通讯机制C/S(2)C/S客户/服务器的A)桌面上的B)优化C)优化网 Chapter 进程间的3.0进程及其状态转3.1进程间的3.2客户/服务器计算模3.4应用实例Socket网络概TCP/IP使用TCP Socket中的系统1.终端登录与网络登终端登录:login: 网络登录 文件I/O和网络文件六种输入/输出服务open,creat,close,read,write和网络I/O:(比文件I/O复杂1)客户/服务器关系是非对称的,在初始化2)网络I/O有面向连接与非连接的。前者很网络3网络中名字比标识更重要。文件继承了fd4)UNIX的文件I/O是面向流的,而网络有面向流与机制。如:XNS,IPX/SPX,TCP/IP。广域网局域网集中模式(信息的处理和控制是集中的对等模式(信息的处理和控制都是分布的TCP/IP概网HostHostwithHostwith
网络模
网络应用层:包含所有的协议,如虚拟终端协 NET协议:允许用户登录到另一台UNIX机器FTP协议:用于传输文SMTP协议:用来传送,常见的服务器端程序netscape等公司制作的程序,也有免费使用的sendmail程;还有系统服务DNS协议,组传送协议NNTP,用WWW的超文本传输协议HTTP等网络传输层:主要功能使源和目的主机之间可以进行会话。该层(a)IP协议族(Intntotool)物理层TCP/IPTCP/IPTCP(传输控制协议)o议。不保证数据报一定能到达目的地。Socket描述与Socket(进程间通 )支持下列通信协socket索引值。socket描述符指向socket有BSDUNIX中socket调用,可以新建一个socket用,完成建立通信的过程 2socket客户/服务器模TCPConnection
3-way
服务端进程(到服务器(1)使用socket调用得到一个描述(3)服务端使用listen调用等待服务请求服务端进程(5)服务端使用新的socket进行再到accept调用处等待另接。客户端进(1)使用socket调用得到一个socket描述(3)通过socket描述符进行读写操管套调用类型(无连接协议UDPConnection Server创建一个调用recvfrom接收客客户端创建一个再使用sendto向服务端进程发出请求使用recvfrom得到返connect(建立连接write、read及send和recv和bind(将一个名字绑定到一个Socket调用socket用来建立一个通信的端点int ,inttype,int头文件:#include#includeSocket的系统 参数type指通讯类型为SOCK_DGRAM的socket支持UDPConnect系统的格intconnect(ints,conststructsockaddr*name,int头文件:#include#include第一个参数s是一个打开的socketConnect系统调如果该socket的类型是SOCK_STREAM,与另一socket建立连接 Connect系统调该结构如structsockaddru_charsa_len;/*总长度u_charsa_family;/*地址簇charsa_data[14];/*实际,地址值第三个参数 地址的长度3write、read及close调在网络程序中使用wi、ad和los.在使用TCwt来sok度一般将发送的数据到witread第一个参数也是socket描述第二个参数是存放读入数据的用户缓冲地址,第三个参数缓冲的长度也使用一个接收数据缓冲,当用户进程使用read调用 用户缓冲大小的数据。当客户端或服务端使用UDP协议程序也可以使用read来接收UDP数据报,但当消息的长度于用户缓冲时 仅为read调 用户缓冲大小的数,剩余数据将被Close该描述符有多个(与打开文件相同),则将该socket的数减一,如果数减为0,Send和send和sendto用来从一个socket发送一个消o格式intsend(ints,constvoid*msg,intlen,unsignedintflags);intsendto(ints,constvoid*msg,intlen,unsignedintflags,conststructsockaddr*to,头文件:#include#include调用send和sendto用来发送一个消息到另一send调用只用于处于连接状态的参数s是一个socket描述符。在sendto Recv和格式如intrecv(ints,void*buf,intlen,unsignedintintrecvfrom(ints,void*buf,intlen,unsignedintflags,structsockaddr*from,int*fromlen);头文件:#include#include参数s为要接收数据的socket参数len用户缓冲的大小系统调用recvfrom用来从一个socket接收消,不管这个socket是否面向连接参数from非空,并且该socket不是面向连接,则recvfrom调用返回时,参数from中存放是消息的源地址shutdown调用该调用将关闭一个全双工连接的端格式如下:intshutdown(intsint头文件:#include如果参数how为1,则继续发送数据。如how为2, 在该socket上接收或发送数据Bind调bind调用将一个名字绑定到一个socket格式如下:intbind(intsstruct*my_addr,int头文件:#include#includebind调用为一个未命名的socket分配即:bind调用是给套接字smy_addr,这个my_addr地址的长度为。对于不同通信域的地址联编的规则是不,这里还是以internet域为主
listen调用该调用在一个socket侦听连格式如下:intlisten(intsint头文件:#include或SOCK_SEQPACKET类型的socket上。accept调用在指定的socket上接受接请求格式如下:intaccept(intsstructsockaddr*addr头文件:#include#include参数s是要接受连接请求的socket,这个socketsocket调用创建第二个参数addr是用来存放返回值的,在使用IP地址,使用sockaddr_in结构,accept返回时,该结的是连接实体的第三个参数addrlen在调用前用来addr的大小,调用后返回精确的addr的长
DNS(服务通过因特网名字得到名字所代表的IP$IP四层UNIXIPSocketAPIintsocket(intfamily,inttype,intCreatesanetworkplugpointthatenablesthe/serverintconnect(intsockfd,conststructsockaddr*servaddr,socklen_taddrlen)Enablesatoconnecttoabind(intsockfd,conststructsockaddr*myaddr,socklen_tAllowsaservertospecifytheIPaddress/port_numberassociatedwithaSocketAPIintlisten(intsockfd,intAllowstheservertospecifythatasocketcanbeusedtointaccept(intsockfd,structsockaddr*_addr,socklen_tAllowsaservertowaittillanewconnectionrequestintclose(intTerminatesanyconnectionassociatedwithasocketandreleasestheSocketAPIintread(intsockfd,void*buf,intReaddatafromaTCPintwrite(intsockfd,void*buf,intWritedatatoaTCPintsendto(intsockfd,void*msg,…SendaUDPmessageonasockettospecifiedintrecvfrom(intsockfd,void*buf,…RecvaUDPmessageonasocketalongwithaddressofsendingSimilarlycheckmanpagesforsendmsg(),ConvertingBetweenAddressFromASCIIto“4”32-bitnetworkbyteorderedinet_aton(…)withinet_pton(…)withIPv4andFromnumericto32-bitvalueinet_ntoa(…)withinet_ntop(…)withIPv4andNote–inet_addr(…)cannothandlebroadcastaddressGettingIPaddress/portfromintgetsockname(intsockfd,structsockaddr*localaddr,socklen_t*addrlen)GetthelocalIP/portboundtointgetpeername(intsockfd,structsockaddr*remoteaddr,socklen_t*addrlen)GettheIP/portofremoteNameIPstructhostent*gethostbyaddr(void*addr,size_tlen,intConvertsfromIPaddr structhostent*gethostbyname(charConverts nametoIPChapter 进程间的3.0进程及其状态转3.1进程间的3.2客户/服务器计算模3.4应用实例应用实 o,world!”.简单的流服务(Ex37.c/*server#include#include#include#include#incl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年度版权侵犯了损害赔偿合同
- 成都环保产业技术合作合同(04版)
- 2024年度地砖采购合同的合作发展计划2篇
- 典当行与借款人2024年度房屋抵押流程融资合同
- 2024版特许经营合同:连锁餐饮品牌授权与经营权转让
- 二零二四年度食品加工厂租赁合同
- 到期合同补充协议书范本
- 二零二四年度物业管理服务合同(含门卫临时用工)
- 槽罐车化妆品运输合同(04版)
- 二零二四年度环保型汽车制造与销售合同
- 2024年时政热点知识竞赛试卷及答案(共三套)
- 2024年新疆(兵团)公务员考试《行测》真题及答案解析
- 2024北京初三一模语文汇编:基础知识综合
- 2025届江苏省南通市海安中学物理高一上期末质量检测试题含解析
- 医疗设备安装与调试工程方案
- 通信业务协议
- 税务会计岗位招聘面试题与参考回答(某世界500强集团)2024年
- 2024年中国反病毒邮件网关市场调查研究报告
- 部编版道德与法治三年级上册第8课《安全记心上》精美课件
- 2023年学年上海外国语大学附属外国语学校东校教师招聘考试真题
- 2024年新版七年级上册道德与法治11.1 探问人生目标 课件
评论
0/150
提交评论