1
0
mirror of https://github.com/DoctorWkt/pdp7-unix.git synced 2026-01-13 15:27:39 +00:00
2019-10-30 15:04:31 -04:00

139 lines
3.7 KiB
Groff

.oh '11/3/70''FILE SYSTEM(V)'
.ta 18 21 24
NAME format of file system
.sp
SYNOPSIS --
.sp
DESCRIPTION
.in 8
The RB09 fixed head disk has 8,000 64-word
blocks (100 tracks of 80 blocks)
on each of its two surfaces. The Unix filesystem
is stored in the first 80 tracks of
the second surface (physical blocks 8,000 to
14,399 -- physical tracks 100 to 179)
and numbers them from logical block 0 to
logical block 6,399.
.sp
The Unix filesystem is divided into 6,400 logical blocks
of 64 words per block. Block 0 is the "sysdata"
block. The first word points to the first block
of the free-storage map. Each block in the
free-storage map is structured as follows: the
first word is the block number of the next block
in the free-storage map, or zero if this is the
end of the free-storage map. The next nine words
hold free block numbers, or zero (no block
number).
.sp
Block 1 on the filesystem is unused. (?)
.sp
I-numbers begin at 1, and the storage for
i-nodes begins at block 2. Blocks 2 to 711
contain the i-nodes, with five 12-word
i-nodes per block. Certain i-nodes are reserved
for special files, directories and devices:
.sp
.nf
1 The core file written by "sys save"
or a bad system call
2 The "dd" directory directory
3 The "system" directory
6 The "ttyin" special file
7 The "keyboard" (GRAPHIC-2)
special file
8 The "pptin" (paper tape reader)
special file
10 The "ttyout" special file
11 The "display" (GRAPHIC-2)
special file
12 The "pptout" (paper tape punch)
special file
.fi
.sp
There is only one file system which is always
mounted; it resides on the RB disk.
.sp
The last twenty tracks of the second disk surface
are use for bootable images and swapping:
.sp
Each physical track from 180 to 189
contains a bootable system image of 3K words.
.sp
Each physical track from 190 to 199 is used to swap
a user process (4K words plus a 64-word swapable
"userdata" area).
.sp
Each i-node represents one file. The format of
an i-node is as follows, where the left column
represents the offset in words from the
beginning of the i-node:
.sp
.nf
0 flags (see below)
1 first indirect block or data block
...
7 seventh indirect block or data block
8 user ID of owner
9 link count
10 size in words
11 unique value assigned at creation
.sp
.in 8
The flags are as follows:
.sp
400000 i-node is allocated
200000 large file
?????? allocated bit (always on)
000040 special file
000020 directory
000010 read, owner
000004 write, owner
000002 read, non-owner
000001 write, non-owner
.fi
.in 8
.sp
The allocated bit (flag ??????) is believed even
if the i-node map says the i-node is free; thus
corruption of the map may cause i-nodes to
become unallocatable, but will not cause active
nodes to be reused.
.sp
Word number n of a file is accessed as follows:
n is divided by 64 to find its logical block
number (say b) in the file. If the file is small
(flag 200000 is 0), then b must be less than 7,
and the physical block number corresponding to b
is the bth entry in the address portion of the
i-node.
.sp
If the file is large, b is divided by 64 to
yield a number which must be less than 8 (or
the file is too large for UNIX to handle).
The corresponding slot in the i-node address
portion gives the physical block number of an
indirect block. The residue mod 64 gives a
word offset in the indirect block, and the
word found there is the physical address of
the block corresponding to b.
.sp
If block b in a file exists, it is not necessary
that all blocks less than b exist. A zero block
number either in the address words of the i-node
or in an indirect block indicates that the
corresponding block has never been allocated.
Such a missing block reads as if it contained
all zero words.
.in 0
.sp
FILES --
.sp
SEE ALSO dir(V)
.sp
DIAGNOSTICS --
.sp
BUGS --
.sp
OWNER ken