Can be implemented via semaphores or messages
semaphore implementation
PROCEDURE Read(parameters) new(io_request) put mode, buffptr, length, fd, process_id, pointers into io_request fields P(fileqsem) {get mutual exclusion on request queue} insert(fileq, io_request) V(fileqsem) V(filerequest) {tell file manager work available} P(complete) {signalled by file manager} return(status) {status = -1 for error} {if ok, return value specified in call} END
message based request transfer
PROCEDURE Read(parameters) new(msgbuff) put mode, buffptr, length, fd into msgbuff SEND(fileman, msgbuff) RECEIVE(fileman, status) return(status) END