NEC and Toshiba announced ACOS-6, a large general-purpose operating system that realized multi-dimensional processing, in November 1974, and started shipping it in December. In 1978, the two companies started shipping a version that used a full-scale virtual storage system.
ACOS-6 maintained the succession of the software assets of the ACOS Series 77, which was the basis of ACOS-6, but strengthened flexibility, expandability and reliability by adopting multi-dimensional processing and virtual storage systems to boost multi-user support. It was installed in large machines of the ACOS Series, systems 600, 600S, 700, 800, 900 and 1000, and in sub-models of the series, systems 650 and 850.
The multi-dimensional processing and virtual storage systems adopted in these machines were also inherited by successors of ACOS-6 as basic technologies.
Features of the newly adopted architecture and of major functions included the following:
- (1) Multiprogramming
- In the architecture, a job, or unit of work given to the system, consisted of sequentially executed programs and processing units, called “activities,” corresponding to the associated data. In the execution stage, the system time-divided all activities into processing units called “processes,” each of which had a group of sequentially executed instructions and the associated data, and to which resources such as CPU and I/O were allocated” regardless of the types of activities. Thus, multiprogramming was achieved.
- (2) Virtual storage system
- The OS provided a virtual memory (called virtual space) independent of the main memory, which had a finite size. Programs and data were stored in a virtual space, making it possible to remove a limit on the main memory from the programmer and efficiently share use of the main memory among multiple users. Four major architectures related to the virtual memory system of ACOS-6 were outlined as follows:
Paging was adopted as the method for physically segmenting the virtual space. In ACOS-6, the virtual space was divided into pages, each accounting for 4 KB and mapped on the main memory. Specifically, the demand-paging method was adopted for paging. This allowed only the portion required for executing the program to be loaded from an external storage to the main memory in units of pages as triggered by a page absence interrupt.
In addition, segmentation was adopted as the method for logically segmenting the virtual space. In ACOS-6, physical pages were independent of logical segments, and attribute-checking functions such as boundary checking and writable-or-not checking were provided for each segment of any size, from bytes to gigabytes.
The segement set of the area of instructions and data that the program can access is called a “domain.” The OS realized access protection by switching between domains for each program, and enabled attribute data transfer and data sharing between programs by adding and sharing segments among domains.