Transcript ppt
The Structuring of Systems
Using Upcalls
David D. Clark
4/26/2011
Frank Sliz, CS533, Upcalls
1
Overview
• A method for implementing layers with
synchronous procedure calls between layers
• Upcalls – flow of control by a lower layer
calling an upper layer via procedure call
• Multi-task module – subroutines in different
tasks that make up the layer
4/26/2011
Frank Sliz, CS533, Upcalls
2
Outline
•
•
•
•
•
•
•
Background
Upcalls and Multi-task Modules
Example
Advantages
Swift Operating System
Problems
Conclusions
4/26/2011
Frank Sliz, CS533, Upcalls
3
Background
• 1968 – THE operating system
• Great interest in using layers to structure OS
• 1982 – ISO model for network communication
• 1985 – Swift operating system
4/26/2011
Frank Sliz, CS533, Upcalls
4
Monolithic Operating System
4/26/2011
Frank Sliz, CS533, Upcalls
5
Layered Operating System
4/26/2011
Frank Sliz, CS533, Upcalls
6
Advantages of Layered OS
•
•
•
•
•
•
Modularity
Easier to test and debug
Easier to modify
Acyclic dependency
Verification
Trustworthiness
4/26/2011
Frank Sliz, CS533, Upcalls
7
7-Layer OSI Model
7
application
6 presentation
6
1
4/26/2011
5
session
4
transport
3
network
2
data link
1
physical
Frank Sliz, CS533, Upcalls
8
Disadvantages of Layered OS
• Performance
– Asynchronous communication between layers
– Buffering of data between layers
– Copying of data for crossing protection boundary
– Programming complexity
• Inefficient support for upward flow of control
4/26/2011
Frank Sliz, CS533, Upcalls
9
Upcalls and Multi-Task Modules
• Upcalls
– Flow of control by a lower layer calling an upper
layer via procedure call
• Multi-Task Modules
– Subroutines in different tasks that make up the
layer
– Subroutines are callable from above or below via
procedure calls
– State variables in shared memory
4/26/2011
Frank Sliz, CS533, Upcalls
10
System Organization
4/26/2011
Frank Sliz, CS533, Upcalls
11
Example - Network Protocol
3 Layers and 3 Tasks
Display
Transport
Network
Create
4/26/2011
Receive
Frank Sliz, CS533, Upcalls
Send
12
Control Flow in Network Protocol
Display
Layer
Transport
Layer
Network
Layer
4/26/2011
Frank Sliz, CS533, Upcalls
13
Example - Display Layer
Network Protocol
4/26/2011
Frank Sliz, CS533, Upcalls
14
Example - Transport Layer
Network Protocol
4/26/2011
Frank Sliz, CS533, Upcalls
15
Example Network Layer
Network Protocol
4/26/2011
Frank Sliz, CS533, Upcalls
16
Example – Create Task
4/26/2011
Frank Sliz, CS533, Upcalls
17
Example – Receive Task
4/26/2011
Frank Sliz, CS533, Upcalls
18
Example – Send Task
4/26/2011
Frank Sliz, CS533, Upcalls
19
Advantages of Upcalls
• Upward, synchronous flow via procedure call
is more efficient than IPC
• No need for data buffering between layers
• Simplicity of implementation
• Lower layer can ask advice from upper layer
resulting in simplification of algorithm
4/26/2011
Frank Sliz, CS533, Upcalls
20
Advantages of Multi-Task Modules
• Subroutine interfaces are easier to deal with
than IPC interfaces
• No system wide IPC message format needed
• Decisions about task usage can be made later,
the tasks are not hard coded into the layers
• Acknowledgements can be sent with new
data packet - Piggybacking
4/26/2011
Frank Sliz, CS533, Upcalls
21
Swift Operating System
•
•
•
•
•
•
Explore upcall and multi-module usage
Single address space with a typesafe language
Monitor locks for access to shared state
Initially used for network protocols
Test to determine if useful in other contexts
Develop solutions for upcall problems
4/26/2011
Frank Sliz, CS533, Upcalls
22
Problems with Upcall
• Violates basic principle of layering
– upcall failure could leave lower layer left in
unstable condition
• Recovery of resources when an upcall fails
• Upcall gets into an infinite loop
4/26/2011
Frank Sliz, CS533, Upcalls
23
Mitigating Upcall Failures
• 2 classes of data
– Client or private data which is expendable
– Data shared between tasks must be unlocked and
consistent before upcall
• Expendable tasks
• Layer-specific cleanup via system procedures
• Timer or User to detect infinite loop
4/26/2011
Frank Sliz, CS533, Upcalls
24
Solutions to Indirect Recursive Call
• Put state variables in consistent state before
upcall and then reevaluate them upon return
• Prohibit recursive downcall – variables can be
left locked and inconsistent when upcalling
• Downcall queues the work for later execution
• Downcall is restricted in its actions
• Downcall is replaced by extra arguments or it
is replaced by a second upcall to query
4/26/2011
Frank Sliz, CS533, Upcalls
25
Problems with Multi-Task Modules
• Failure to use monitor locks properly which
can cause incorrect results
• With single shared memory address space
program bugs can corrupt memory
• Need queues for suspended tasks waiting to
obtain monitor locks
4/26/2011
Frank Sliz, CS533, Upcalls
26
Conclusions
• Methodology is useful for operating systems
– upcalls and multi-task modules are efficient
– Strongly checked typesafe language should be
used in a single shared address space
– useful for network protocols, text editors, and I/O
• Bad idea to implement a layer as a process
• Parallel systems need shared memory for
efficient communication between processes
4/26/2011
Frank Sliz, CS533, Upcalls
27