Beruflich Dokumente
Kultur Dokumente
Applications, services
Middleware
Node 1 Node 2
InstructorsGuideforCoulouris,
Figure 6.2
Core OS functionality
Process manager
Communication
manager
Supervisor
InstructorsGuideforCoulouris,
Figure 6.3
Address space
2N
Auxiliary
regions
Stack
Heap
Text
0
InstructorsGuideforCoulouris,
Figure 6.4
Copy-on-write
RB copied
from RA
RA RB
Kernel
Shared
frame
A's page B's page
table table
InstructorsGuideforCoulouris,
Figure 6.5
Client and server with threads
Thread 2 makes
requests to server
Receipt & Input-output
queuing
Thread 1
generates
results
T1
Requests
N threads
Client
Server
InstructorsGuideforCoulouris,
Figure 6.6
Alternative server threading architectures (see also Figure 6.5)
InstructorsGuideforCoulouris,
Figure 6.7
State associated with execution environments and threads
Executionenvironment Thread
Addressspacetables Savedprocessorregisters
Communicationinterfaces,openfilesPriorityandexecutionstate(suchas
BLOCKED)
Semaphores,othersynchronization Softwareinterrupthandlinginformation
objects
Listofthreadidentifiers Executionenvironmentidentifier
Pagesofaddressspaceresidentinmemory;hardwarecacheentries
InstructorsGuideforCoulouris,
Figure 6.8
Java thread constructor and management methods
Thread(ThreadGroupgroup,Runnabletarget,Stringname)
CreatesanewthreadintheSUSPENDEDstate,whichwillbelongtogroupand
beidentifiedasname;thethreadwillexecutetherun()methodoftarget.
setPriority(intnewPriority),getPriority()
Setandreturnthethreadspriority.
run()
Athreadexecutestherun()methodofitstargetobject,ifithasone,andotherwise
itsownrun()method(ThreadimplementsRunnable).
start()
ChangethestateofthethreadfromSUSPENDEDtoRUNNABLE.
sleep(intmillisecs)
CausethethreadtoentertheSUSPENDEDstateforthespecifiedtime.
yield()
EntertheREADYstateandinvokethescheduler.
destroy()
Destroythethread.
InstructorsGuideforCoulouris,
Figure 6.9
Java thread synchronization calls
thread.join(intmillisecs)
Blocksthecallingthreadforuptothespecifiedtimeuntilthreadhasterminated.
thread.interrupt()
Interruptsthread:causesittoreturnfromablockingmethodcallsuchassleep().
object.wait(longmillisecs,intnanosecs)
Blocksthecallingthreaduntilacallmadetonotify()ornotifyAll()onobject
wakesthethread,orthethreadisinterrupted,orthespecifiedtimehaselapsed.
object.notify(),object.notifyAll()
Wakes,respectively,oneorallofanythreadsthathavecalledwait()onobject.
InstructorsGuideforCoulouris,
Figure 6.10
Scheduler activations
P added
Process Process
A B SA preempted
Process SA unblocked
SA blocked
Kernel
P idle
Virtual processors Kernel
P needed
InstructorsGuideforCoulouris,
Figure 6.11
Invocations between address spaces
Protection domain
(b) RPC/RMI (within one computer) boundary
Thread 1 Thread 2
User 1 User 2
Kernel 1 Kernel 2
InstructorsGuideforCoulouris,
Figure 6.12
RPC delay against parameter size
RPC delay
Requested data
size (bytes)
0 1000 2000
Packet
size
InstructorsGuideforCoulouris,
Figure 6.13
A lightweight remote procedure call
Client Server
A stack
A
Kernel
2. Trap to Kernel 3. Upcall 5. Return (trap)
InstructorsGuideforCoulouris,
Figure 6.14
Times for serialized and concurrent invocations
Receive
unmarshal
process results
Client Server Client Server
InstructorsGuideforCoulouris,
Figure 6.15
Monolithic kernel and microkernel
S4 .......
S1 S2 S3 S4 .......
.......
S1 S2 S3
InstructorsGuideforCoulouris,
Figure 6.16
The role of the microkernel
Middleware
Microkernel
Hardware
InstructorsGuideforCoulouris,