Difference between revisions of "ITS Internals Manual"

From Computer History Wiki
Jump to: navigation, search
m (External links: Start conversion to give only one version, in its/tree/master/doc/)
m (External links: more canonical links)
Line 43: Line 43:
 
** [https://github.com/PDP-10/its/tree/master/doc/sysdoc/its.paging ITS Paging] - for the KS; somewhat cryptic/truncated
 
** [https://github.com/PDP-10/its/tree/master/doc/sysdoc/its.paging ITS Paging] - for the KS; somewhat cryptic/truncated
 
** [https://github.com/PDP-10/its/tree/master/doc/sysdoc/_calls.127 ITS Calls] - documentation on all symbolic ("new") system calls
 
** [https://github.com/PDP-10/its/tree/master/doc/sysdoc/_calls.127 ITS Calls] - documentation on all symbolic ("new") system calls
** [https://github.com/PDP-10/its/tree/master/doc/sysdoc/uuos.114 ITS UUOS] - "non-symbolic ("old") system calls"
+
** [https://github.com/PDP-10/its/tree/master/doc/sysdoc/uuos.114 ITS UUOS] - "non-symbolic ('old') system calls"
** [https://github.com/PDP-10/its-vault/blob/master/files/_info_/its.usets ITS USETS] - "all user variables hacked by .USET/.SUSET"
+
** [https://github.com/PDP-10/its/tree/master/doc/sysdoc/usets.120 ITS USETS] - "all user variables hacked by .USET/.SUSET"
*** [https://github.com/PDP-10/its-vault/blob/master/files/sysdoc/usets.120 ITS USETS] - different dir
+
** [https://github.com/PDP-10/its/tree/master/doc/sysdoc/%25pi.105 ITS Interrupts]
** [https://github.com/PDP-10/its-vault/blob/master/files/_info_/its.%25pi ITS Interrupts]
 
*** [https://github.com/PDP-10/its-vault/blob/master/files/sysdoc/%25pi.105 ITS Interrupts] - different dir
 
 
** [https://github.com/PDP-10/its-vault/blob/master/files/_info_/its.intrup Overview of ITS User Interrupts]
 
** [https://github.com/PDP-10/its-vault/blob/master/files/_info_/its.intrup Overview of ITS User Interrupts]
 
*** [https://github.com/PDP-10/its-vault/blob/master/files/sysdoc/intrup.108 Overview of ITS User Interrupts] - different dir
 
*** [https://github.com/PDP-10/its-vault/blob/master/files/sysdoc/intrup.108 Overview of ITS User Interrupts] - different dir
Line 58: Line 56:
 
** [https://github.com/PDP-10/its-vault/blob/master/files/_info_/its.locks LOCK device] - "documentation for the LOCK device, the locked switch list and critical routine features"
 
** [https://github.com/PDP-10/its-vault/blob/master/files/_info_/its.locks LOCK device] - "documentation for the LOCK device, the locked switch list and critical routine features"
 
*** [https://github.com/PDP-10/its-vault/blob/master/files/sysdoc/locks.108 LOCK device] - different dir
 
*** [https://github.com/PDP-10/its-vault/blob/master/files/sysdoc/locks.108 LOCK device] - different dir
** [https://github.com/PDP-10/its-vault/blob/master/files/_info_/its.clo Core link device]
+
** [https://github.com/PDP-10/its/tree/master/doc/sysdoc/clo.100 Core link device]
*** [https://github.com/PDP-10/its-vault/blob/master/files/sysdoc/clo.100 Core link device] - different dir
 
 
** [https://github.com/PDP-10/its-vault/blob/master/files/_info_/its.ttyvar ITS TTYVAR] - "TTY variables"
 
** [https://github.com/PDP-10/its-vault/blob/master/files/_info_/its.ttyvar ITS TTYVAR] - "TTY variables"
 
** [https://github.com/PDP-10/its-vault/blob/master/files/sysdoc/mldev.protoc MLDEV/MLSLV protocol]
 
** [https://github.com/PDP-10/its-vault/blob/master/files/sysdoc/mldev.protoc MLDEV/MLSLV protocol]

Revision as of 01:36, 13 September 2023

There is some documentation for Incompatible Timesharing System, but principally oriented towards the users and programmers thereof (see links below). This page attempts to provide at least the high-level portions of a manual which describes how the kernel of the system is organized.

Note: This page is under construction.

Basics

  • Jobs
    • User variables
    • Interrupts
    • How they get started
  • Memory management (pages)
  • File system
  • I/O
    • Terminals
      • Terminal-type independent output
    • Virtual devices
  • Daemons
  • Bootstrapping
  • Networking

Daemons

ITS has both classic daemons (which are ordinary processes, which load their code from the file system, run in the same CPU mode as normal user processes - and thus have a private address space), and what we are calling 'system processes [temporary placeholder - I need to send that email to COFF] (whose code is statically linked in with the kernel, and thus loaded into main memory at bootstrapping time, and run in 'executive' mode, and thus share the kernel's address space).

On startup, ITS starts a job called SYSJOB which does some system tasks as a regular job. One of the things it does when it starts, is to run SYS; ATSIGN DRAGON which is a central daemon. (On ITS, a "dragon" is a permanent system job, and a "demon" is a temporary system job which is started on demand.) This dragon is also called TARAKA and lives in the CHANNA directory (names taken from the book Lord of Light.) TARAKA is responsible for starting other dragons in there, which start with the file name RAKASH. One of those is RAKASH CNAVRL which launches COMSAT (the mailer daemon).

There is also a system process called the CORE JOB, which before paging used to shuffle processes around in core, but which now ??

At least one ITS machine, DM, had a 'batch' daemon.

How system jobs get started

When ITS wants to start a system job, it calls NUJBST with the SIXBIT job name in T. The core image in SYS: ATSIGN T will be started. This is used to start HACTRN, the Arpanet NETRFC handler, the TCP handler, the CHAOS agent, and demons.

T is stored in a ring buffer, and is read out on a "slow clock" tick by USTART. A new job is created, and its user PC is set to 1. The job accumulators are loaded with code from NUSTCD, which opens the file, calls LOAD, and jumps to the starting address. In ancient times, the NUSTCD code would first try the file on the SYS: device, and then fall back to the UT2: device; this is a remnant from when ITS ran off DECtape with the system tape mounted on unit 2.

External links