Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!samsung!rex!uflorida!novavax!hcx1!steve From: steve@SSD.CSD.HARRIS.COM (Steve Brosky) Newsgroups: comp.realtime Subject: Re: real-time multicomputer systems Message-ID: <4399@hcx1.UUCP> Date: 5 Jun 90 15:53:21 GMT Sender: news@hcx1.UUCP Organization: Harris Computer Systems, Fort Lauderdale, FL Lines: 33 >> * real-time process synchronization -- >> very fast synchronization primitives to coordinate access to shared data >> between cooperating processes (this is not AT&T system V IPC semaphores, >> they are too slow!). The synchronization primitives which block, will >> also place a bound on priority inversion. >> > Could you please elaborate more on what you mean by placing "a bound on > priority inversion"? Is this some form of avoidance protocol? These blocking primitives implement basic priority inheritance. This means that when process A attempts to lock one of these locks, and it is already locked by the lower priority process B, we guarantee that process B will get an effective priority at least as high as process A. This allows process B to run until he releases the lock, and loses his higher effective priority. The highest priority process that was waiting for the lock will now be run. This scheme does not eliminate priority inversion, note that while process B was running inside the critical section above a priority inversion was in effect. However the length of the priority inversion is bounded to the longest hold time of the lock. Basic priority inheritance is also not the only approach to priority inversion. The priority ceiling protocol provides better worst-case bounds but is more difficult to implement. For more information see the up coming summer USENIX proceedings for the article "An Implementation of Real-Time Thread Synchronization" by Mark Heuser. Steve Brosky sabrosky@ssd.csd.harris.com Harris Computer Systems Division Fort Lauderdale, Fla.