TENEX, a Paged Time Sharing System for the PDP-10

UNIX-like

3 types of VM

Type Example
OS VM TENEX
H/W VM VM ware
LANG VM Java on JVM

Paging

Relocation

It provides individual mapping (relocation) of each page of both user and monitor address spaces using separate maps for each.

Virtual address -> Physical address

Sharing

Implementation in TENEX

        VAS
       +------------+
       |            |
       +------------+
+------>            +-------+     PAS
|      +------------+       |   +------------+
|      |            |       |   |            |
|      +------------+       |   +------------+
|                           +--->            |
|       VAS                     +------------+
|      +------------+           |            |
|      |            |           +------------+
|      +------------+
+------+            |
       +------------+
       |            |
       +------------+


                   VAS = Virtual Address Space

                   PAS = Physical Address Space

Implementation used in systems nowadays.

 VAS
+------------+
|            |
+------------+
|            +-------+     PAS
+------------+       |   +------------+
|            |       |   |            |
+------------+       |   +------------+
                     +--->            |
 VAS                 |   +------------+
+------------+       |   |            |
|            |       |   +------------+
+------------+       |
|            +-------+
+------------+
|            |
+------------+


            VAS = Virtual Address Space

            PAS = Physical Address Space

The pager permits individual pages to be shared for write as well as read references, so two or more processes may communicate by sharing a common page into which any or all may write.

Copy on Write

Allow users to share large portions of an address space containing procedures and data, and to obtain private copies of only those pages which are changed.

Backward Compatibility

Problem

Make binary images of old programs run without re-compilation on new systems.

Change OS while still support old programs.

Solution

A compatibility package running in the user space, translating the old system monitor calls to the new JSYS instruction supported by the new system.

Tradeoff: Overhead or Recompile.

Scheduler

Balance Set

  • Maximize CPU utilization
  • Interactivity
  • Fairness
  • Priority boost for those willing to pay more

Priority + Memory status (In paging?) -> Run state

Hierarchy

Process Tree

EXEC

Running in Shell, creating a child process of the shell process

Protection

File System

File Descriptor

  • Device name
  • Directory name
  • File name
  • Extension
  • Version Number

C:\FILE.C VER

If the version should be maintained by file system or not is a problem. In TENEX, it is supported by FS, but in other systems, we need extra tools, e.g., CVS.