120 likes | 137 Views
A Note on Operating System Organization. CS-502 – Spring 2006. The “THE” Operating System. System Operator. User Programs. I/O Management. Operator-Process Communication.
E N D
A Note onOperating System Organization CS-502 – Spring 2006 CS502 Spring 2006
The “THE” Operating System System Operator User Programs I/O Management Operator-Process Communication Dijkstra, E. W., “The Structure of the ‘THE’-Multiprogramming System,” Communications of ACM, vol.11, pp. 341-346, May 1968. Memory Management Processes & Semaphores CS502 Spring 2006
Operating System Organizations • The literature in operating systems is full of papers of simple, elegant systems like this one • Simple • Easy to build and maintain by small teams • Very instructive for study • Limited usefulness CS502 Spring 2006
Question • In a typical system, how do the layers or components talk to each other? • Answer: one of two ways • Messages between processes • Procedure/function calls between “modules” CS502 Spring 2006
Message-based systems • Processes are isolated from each other – separate address spaces, etc. • IPC primitives • Send Message (socket, content) • Wait For Message (socket, &content) • Request, results, and status encoded in message contents • Static processes to manage resources, create abstractions and layers CS502 Spring 2006
Message-based systems – Resource manager <internal data for managing resource> while (true) { ReceiveMessage (socket, &content) switch (content.action) { case action1: <do something & reply> case action2: <do something else> case action3: <hold pending some event> case action4: <release previously held action & reply> ... } } CS502 Spring 2006
E.g., File Manager void File_Manager(socket fileSocket) { <internal data for managing files> while (true) { ReceiveMessage (fileSocket, &content) switch (content.action) { case write: <do something & reply> case seek: <do something else> case read: <start disk activity> case readDone: <return result of read previously started> ... } } } CS502 Spring 2006
Message-based systems (continued) • Resource manager • Infinite loop • Created at system start-up, assigned fixed sockets • Effectively a critical section – one request or activity is handled at a time • Maintains internal data structures for queuing up requests that cannot be replied to immediately • No sharing of data with requesting processes • Any status information is encoded in content • Reply to specific socket of requester CS502 Spring 2006
Message-based systems (continued) • Requested actions encapsulated in function – e.g., void read(file f, char *p, int len) { socket s = new(socket); content c = {f, readAction,len, s}; content r = {char c[len]); SendMessage(fileManager, c); WaitForMessage(s, r); strcpy(r.c, p, len); } • Examples • MACH (Carnegie Mellon University • Mac OS-X CS502 Spring 2006
Procedure/Monitor-based systems • Resource Manager represented as a Monitor – e.g., monitor class file { <internal data for managing files> void read(file f, char *p, int len); void write(file f, char *p, int len); void seek(file f, position); ... } • Requester makes direct function calls to monitor CS502 Spring 2006
Process/Monitor systems • Resource manager • Static object with functions; created at start-up • Effectively a critical section –one request or activity is handled at a time • Maintains internal data structures for queuing up requests that cannot be replied to immediately • Shared address space, but internal data hidden from requesters • Status maintained in stack of requesting process • Examples • Pilot CS502 Spring 2006
Observation • There is really no fundamental difference between systems organized by messages and those organized by monitors • Choice depends upon what is available in underlying system • Shared or separate address spaces • Language support for monitor discipline • … Lauer, H.C. and Needham, R.M., “On the Duality of Operating System Structures,” Operating Systems Review, vol 13, #2, April 1979, pp. 3-19. CS502 Spring 2006