Lecture 15 Network File System RPC CSE 120 Principles of Operating Systems Alex C Snoeren Lab 2 Due TONIGHT Network File System Simple idea access disks attached to other computers NFS is a protocol for remote access to a file system Does not implement a file system per se Remote access is transparent to applications File system OS and architecture independent Share the disk with many other machines as well Originally developed by Sun Although Unix y in flavor explicit goal to work beyond Unix Client server architecture Local file system requests are forwarded to a remote server Requests are implemented as remote procedure calls RPCs CSE 120 Lecture 15 Network File System RPC 2 Remote Procedure Call RPC is common means for remote communication It is used both by operating systems and applications Someday soon you will most likely have to write an application that uses remote communication or you already have NFS is implemented as a set of RPCs DCOM CORBA Java RMI etc are all basically just RPC You will most likely use some form of RPC for that remote communication So it s good to know how all this RPC stuff works Let s focus on RPC before getting back to NFS Once we have RPC NFS isn t too hard to build CSE 120 Lecture 15 Network File System RPC 3 Clients and Servers The prevalent model for structuring distributed computation is the client server paradigm A server is a program or collection of programs that provide a service file server name service etc The server may exist on one or more nodes Often the node is called the server too which is confusing A client is a program that uses the service A client first binds to the server locates it and establishes a connection to it A client then sends requests with data to perform actions and the servers sends responses also with data CSE 120 Lecture 15 Network File System RPC 4 Messages Initially with network programming people hand coded messages to send requests and responses Hand coding messages gets tiresome Need to worry about message formats Have to pack and unpack data from messages Servers have to decode and dispatch messages to handlers Messages are often asynchronous Messages are not a very natural programming model Could encapsulate messaging into a library Just invoke library routines to send a message Which leads us to RPC CSE 120 Lecture 15 Network File System RPC 5 Procedure Calls Procedure calls are a more natural way to communicate Idea Have servers export a set of procedures that can be called by client programs Every language supports them Semantics are well defined and understood Natural for programmers to use Similar to module interfaces class definitions etc Clients just do a procedure call as it they were directly linked with the server Under the covers the procedure call is converted into a message exchange with the server CSE 120 Lecture 15 Network File System RPC 6 Remote Procedure Calls So we would like to use procedure call as a model for distributed remote communication Lots of issues How do we make this invisible to the programmer What are the semantics of parameter passing How do we bind locate connect to servers How do we support heterogeneity OS arch language How do we make it perform well CSE 120 Lecture 15 Network File System RPC 7 RPC Model A server defines the server s interface using an interface definition language IDL The IDL specifies the names parameters and types for all client callable server procedures A stub compiler reads the IDL and produces two stub procedures for each server procedure client and server The server programmer implements the server procedures and links them with the server side stubs The client programmer implements the client program and links it with the client side stubs The stubs are responsible for managing all details of the remote communication between client and server CSE 120 Lecture 15 Network File System RPC 8 RPC Stubs A client side stub is a procedure that looks to the client as if it were a callable server procedure A server side stub looks to the server as if a client called it The client program thinks it is calling the server The server program thinks it is called by the client In fact it s calling the client stub In fact it s called by the server stub The stubs send messages to each other to make the RPC happen transparently CSE 120 Lecture 15 Network File System RPC 9 RPC Example Server Interface int Add int x int y Client Program Server Program int Add int x int y sum server Add 3 4 return x y If the server were just a library then Add would just be a procedure call CSE 120 Lecture 15 Network File System RPC 10 RPC Example Call Client Program Server Program sum server Add 3 4 int Add int x int y Client Stub Server Stub Int Add int x int y Add Stub Message Alloc message buffer Remove x y from buffer Mark as Add call r Add x y Store x y into buffer Send message RPC Runtime RPC Runtime Receive message Send message to server Dispatch call Add Stub CSE 120 Lecture 15 Network File System RPC 11 RPC Example Return Client Program Server Program sum server Add 3 4 int Add int x int y Client Stub Server Stub Int Add int x int y Add Stub Message Create send message Remove x y from buffer Remove r from reply r Add x y return r Store r in buffer RPC Runtime RPC Runtime Return reply to stub Send reply to client CSE 120 Lecture 15 Network File System RPC 12 RPC Marshalling Marshalling is the packing of procedure parameters into a message packet The RPC stubs call type specific procedures to marshal or unmarshal the parameters to a call The client stub marshals the parameters into a message The server stub unmarshals parameters from the message and uses them to call the server procedure On return The server stub marshals the return parameters The client stub unmarshals return parameters and returns them to the client program CSE 120 Lecture 15 Network File System RPC 13 RPC Binding Binding is the process of connecting the client to the server The server when it starts up exports its interface The client before issuing any calls imports the server Identifies itself to a network name server Tells RPC runtime it s alive and ready to accept calls RPC runtime uses the name server to find the location of a server and establish a connection The import and export operations are explicit in the server and client programs Breakdown of transparency CSE 120 Lecture 15 Network File System RPC 14 RPC Transparency One goal of RPC is to be as transparent as possible Make remote
View Full Document
Unlocking...