[TNO-logo]

Scope and NOS/BE Permanent files

Although all file I/O was accomplished through local files, there was a separate, orthogonal system that kept track of permanent files (PFs). PFs were disk files that persisted between jobs. The relationship between local files and PFs was not intuitive, and was a frequent source of confusion and complaint from users.

Before a permanent files could be written, one had to request that the file be placed on a permanent file disk resource. This unless there was no chance that the file could reside on a scratch pack. In principle, this was easy:
REQUEST,local_filename,*PF.

PFs were managed by the permanent file system, which was largely distinct from the portions of the OS that did I/O to and from disk files. The PF system gave each permanent file a unique name containing 1-40 characters. Each permanent file was associated as well with a 1-9 character user ID or PUBLIC (no ID specified). Unlike local filenames, PF names could contain any Display Code character, though most filenames contained only alphanumeric characters.

Cataloging files

Local files were deleted from the system at job termination unless they were first entered into the PF system. This was done via the statement:
CATALOG,local_filename, permanent_filename, ID=username [,optional parameters].

This made local_filename permanent by creating an entry for it in the PF system under the name permanent_filename. CATALOG did not make a copy of the data; the data still resided in the same sectors on the same disk drive. CATALOG called the PFC PP-program that simply stored the file information and disk sector pointers into two special system files, the PF-Catalog (PFC) and the PF-Directory (PFD). The first one contained per permanent file the volume, segment and sectors where the data resided. The PFD contained the directory with per permanent file name PFC-pointer(s) to the (max 5) cycles. The PFC and PFD consistency was verified at each deadstart ("boot"). Bit drops in the early 6x00 systems (no parity checks in memory) caused many times crossed files.

To access an existing permanent file, a user issued an ATTACH statement of the form:
ATTACH,local_filename, permanent_filename [,optional parameters].

This created a local file which was associated with the named permanent file. For the rest of this job, I/O to local_filename was done to the file previously cataloged under permanent_filename.

Permanent file attributes

In addition to the 40-character file name, permanent files had these attributes:

PRU's and disk allocation units

Disk data on disks was given to the user in chunks of a number of physical recording units or PRU's. Each PRU contained 64 words of 60 bits. This disk allocation unit was the minimum disk unit that could be allocated to a permanent file. The disk allocation unit size had a minimum that depended upon the physical device characteristics. During the disk initialization process, larger allocation units could be specified. Larger allocation units required less system overhead in reserving data space and reading it back. The drawback was larger overhead as the last block contained much more unused bytes.

Indirect Permanent Files (IPF)

For small files, the disk overhead could be enormous. Wasted disk space of 30-40% could occur. The (KRO)NOS "sister" operating system, that was intended to support much more interactive sessions than the batch oriented NOS/BE, had an additional permanent file concept targeted on small files. This was the "indirect permanent file" concept.
The University of Adelaide implemented in Pascal this "indirect permanent file" concept in NOS/BE. Small files could be SAVEd in, or GET from, a permanent file. The overhead of many small permanent files was reduced to that of one single file. As the IPF-system was fast and required easy short command names, it became popular at many sites as well, including at TNO-FEL.

 

(with special thanks to Mark Riordan who provided the basis for this page)


[email protected]
25/02/1998

Museum Homepage