File locking under Unix

Jeff Lee jeff at gatech.UUCP
Fri Jun 8 07:34:41 AEST 1984


I'm  almost finished with a general-purpose tree-structured accounting pac-
kage for (what I hope is) a relatively generic  version  of  Unix.   I  im-
plemented  a  simple locking procedure for the master accounting file using
links.  I keep a lock file around to which each  process  will  attempt  to
link.   Whenever  a  process  sees that the file is busy, it waits 1 second
(the smallest interval) and then attempts  it  again.   Currently  it  will
retry  9  times  before  it announces failure to the calling routine, but I
have tested it with 15 times.  This means that a process may have  to  wait
up  to  15  seconds before it can access the master file, which is a pretty
long time considering that each operation only takes .2 to .25  seconds  to
complete.   The  problem  is  this, when I cranked up 5 processes that were
beating on the master file pretty heavily, I was having processes  starving
(often).   I  knew  that  it  didn't prevent this but I had no idea that it
would be quite so bad.  I have considered setting an alarm for  10  seconds
and  linking  as  much as possible during that time to try to eliminate the
synchronizing that seems to be hap- pening.  All that needs to happen is to
get the file once in 10 seconds to prevent starvation.

Does anyone else have a file locking scheme that will ensure  mutual  excl-
usion and prevent starvation?  Semaphores would be nice but we are assuming
no  such  beasties  in  most  Unix  implementations.  No frills needed.  No
record locking or N readers or 1 writer function.  This can be Canada  Dry,
not Perrier.
-- 
Jeff Lee
CSNet:	Jeff @ GATech		ARPA:	Jeff.GATech @ CSNet-Relay
uucp:	...!{akgua,allegra,rlgvax,sb1,unmvax,ulysses,ut-sally}!gatech!jeff



More information about the Comp.unix.wizards mailing list