Re:50 Years in Filesystems: 1974 Unix V7
by musicale on Thursday May 11, 2023 @02:06AM
(#35898280)
Point taken. In any case, single-writer helps with concurrency and consistency. For V7 Unix, I think one solution could be to split the file into blocks, each with a single writer. Admittedly this makes reads of the whole file more costly, so one has to be careful about the block size.
[ Parent
| on HN ]
> Admittedly this makes reads of the whole file more costly, so one has to be careful about the block size.
Maybe? You're probably locking each block at a time in the buffer cache during reads anyway.
N.B.: in V7 (and 32V), inodes are locked identically for both writes and reads[1],
if((ip->i_mode&(IFCHR&IFBLK)) == 0)
plock(ip);
if(mode == FREAD)
readi(ip);
else
writei(ip);
if((ip->i_mode&(IFCHR&IFBLK)) == 0)
prele(ip);
I imagine a more serious bottleneck to random read/write concurrency would have been disk performance.Average seek time / rotational latency (years by manual copyright, so estimated):
RL02 (1978): 55 ms / 12.5 ms RK07 (1978): 36.5 ms / 12.5 ms RA81 (1982): 28 ms / 8.3 ms RA92 (1989): 16 ms / 8.3 ms.
Note that the RL02 (and V7) and RA92 mentioned in the article are separated by about a decade.
[1] https://github.com/dspinellis/unix-history-repo/blob/Researc...