Incompatible Timesharing System (ITS)
ITS es un sistema operativo de tiempo compartido revolucionario e influencial desarrollado por el Masachussets Institute of Technology en el LAboratorio de Inteligencia Artificial.
El desarrollo de ITS inició a finales de la de cada de 1960 como alternativa a Multics (que había inicia a mediados de 1960s), el nombre Incompatible Timesharing System era una broma sobre el nombre de su precedesor en MIT; el Compatible Time-Sharing System que data de inicios de 1960s. ITS se escribió en assembly inicialmente para la DEC PDP-6 y posteriormente para la PDP-10.
ITS introdujo características significativas:
* It had the first device-independent graphics terminal output; programs generated generic commands to control screen content, which the system automatically translated into the appropriate character sequences for the particular type of terminal operated by the user.
* A general mechanism for implementing virtual devices in software which ran in user processes (which were called "jobs" in ITS).
* Using this mechanism, it provided transparent inter-machine filesystem access (almost certainly the first operating system to do so). The ITS machines were all connected to the ARPAnet, and a user on one could perform the same operations on files on other ITS machines as on local files.
* Sophisticated process management; user processes were organized in a tree, and a superior process could control a large number of inferior processes. Any inferior process could be frozen at any point in its operation, and its state (including contents of the registers) examined; the process could then be restarted transparently.
* An advanced software interrupt facility that allowed user processes to operate asynchronously, using complex interrupt handling mechanisms.
* PCLSRing, a mechanism which provided what appeared (to user processes) to be quasi-atomic, safely interruptible system calls. No process could ever observe any process (including itself) in the middle of executing any system call.
* In support of the AI Lab's robotics work, ITS also supported simultaneous real-time and time-sharing operation.
Todos los programas en ITS se ejecutan en JOBS
, cuando se presiona CALL
y s obtiene la atención de ITS, ITS crea un JOB
llamado HACTRN
para ti e inicia una copia de DDT
en este.
Cuando DDT
inicia, imprime el número de versión el número de tu TTY
, cuantos usuarios hay conectados al sistema y que tan cargado está. El prompt de DDT
es *****
Es importante entender que ITS es uns sitema muy abierto, aunque no es posible iniciar sesión sin una cuenta, los usuarios pueden leer y modificar los arhivos de otros, incluido el e-mail.
No existe la protección de archivos, si escribes o borras archivos en los directorios del sistema, la acción solo es registrada; pero nada más.
Hay poca protección de procesos, los procesos no se pueden meter con otros procesos, pero los usuarios pueden tomar posesión de los procesos de otros, depurarlos, etc.
Hay poca protección del sistema, Cualquiera puede detener el sistema usando el comando :LOCK
.
El comando :INFO
, da acceso a la ayuda del sistema; ¡usalo!.
Cuando se utiliza ITS vía una terminal convencional, CTRL+Z puede usarse para simullar un CALL
. Igual que ALTMODE
es la tecla ESC y se representa con $.
BACKNEXT
se simula con CTRL+_
:LOGOUT
:REATTACH `uname`/K
Los directorios en ITS no son jerárquicos, hay un número finito de directorios; todos en el mismo nivel, sin sub-directorios.
Lista el contenido de un directorio
:LISTF <nombre_directorio>
Sistema de Arhivos
Cada nombre de archivo en ITS tiene cuatro campos, no todos necesarios (aunque algunos pueden estar especificados por default).
DSK: MYDIR; MYFILE NEW
<dispositivo>: <directorio>; <nombre_archivo1> <nombre_archivo1>
- Dispositivo - es el dispositivo de hardware/software donde vive el archivo.
- Directorio - el nombre del directorio (si aplica).
- nombre_archivo1 - los primeros 1 a 6 carácteres del nombre de archivo.
- nombre_archivo2 - los segundos 1 a 6 carácteres del nombre de archivo.
ITS reconoce el caracter > como segundo nombre de archivo de forma especial, esta convención permite crear nombres de archivos numerados.
DDT treats files specially that have a first file name of TS. When a user types
:<job-name>
DDT will look for a file named “TS
Traditionally, many second file names of files have been treated specially. The following is a list of some of those file names.
COMPRS This is a TECO compressed library. :EJ This is a TECO compiled library. (Note that ‘:’ is special to file naming and usually means the end of a device field. To type in a file name with a “:” in it, you must type a ^Q (control-Q) immediately before the colon. Example: “DSK:FOO;BAR ^Q:EJ”
OUTPUT This is a temporary file output by a program. Such files should be renamed to something more useful when the program is finished with them. The GFR (Grim File Reaper) has been known to delete files with this name without asking.
@XGP This is a temporary file created by the “:@” command. The @ program normally queues this file for output on the XGP, and later deletes this file automatically. XGP This is a file created by some text-justifying program (for example, TJ6) for output on the XGP. Such files are also usually considered temporary. PRESS This is a file, also temporary, created for output on the Dover printer.
LAP This is a file containing a lisp-assembly program (compiled, not assembled). FASL This is a file containing a fast-loading lisp binary program (compiled and assembled).
(INIT) In the past, initialization files had funny first file names and ‘(INIT)’ as a second file name. This convention has been flushed, in favor of a first file name the same as the user’s login name and a second file name the same as the program name.
Thus, the following old file names now convert into the new
file names as shown:
.DDT. (INIT)
.DDT_ (INIT)
.EMACS (INIT)
.TECO. (INIT)
.LISP. (INIT)
MACSYM (INIT)
Para imprimir (en pantalla) un archivo
:PRINT <archivo>
Renombrar archivos
:RENAME <nombre_archivo>,<nuevo_nombre_archivo>
El caracter , (coma) separa el nuevo nombre del nombre original.
Copia achivos
:COPY <nombre_archivo>,<archiv_destino>
El archivo destino, puede epecificar la ruta en otro directorio o dispositivo.
Cuidado si el archivo destino existe, este es sobre-escrito sin ninguna advertencia.
**Mover archivos
:MOVE <nombre_archivo>,<archivo_destino>
Este comando borra el archivo original si la copia al destino es exitosa.
Borrar archivos
:DELETE <nombre_archivo_completo>
Cuidado, es necesario especificar completamente el nombre de archivo. Si solo se escribe el comando :DELETE
, se elimina el último archivo usado en DDT.
DDT
DDT es la interface de comandos más comunmente usada en ITS, provee invocación de comandos, manipulación de archivos y ayuda para depurar programas.
Los número en DDT representan ocatl a menos que tengan un punto decimal, en tal caso representan decimales. Siguiendo el manual de ITS 1.5 bit
borra el último caracter tecleado. | ||||
^D | Cancela todo lo tecleado sin procesar | |||
^L | Limpia la pantalla | |||
^S | Deshabilita la salida hacia la terminal del comando en progreso(Muchos comandos DDT se detendran si piensan que no están haciendo nada útil) | |||
^G | Comando abortar | |||
^Z | Detiene un programa en ejecución y devuelve el control de la terminal a DDT | |||
^W | Deshabilita la salida a la terminal por periodos largos | |||
^V | Habilita la salida a la terminal | |||
^E | Deshabilita la salida a un archivo | |||
^B | Habilita la salida a un archivo | |||
^_ | BACK-NEXT se usa para comunicarse con otros usuarios y/o especificar varios opciones relacionadas com el manejo de la terminal de ITS |
En ITS cada copia de un programa en ejecución debe residir en un job
que es una máquina virtual muy parecida a una PDP-10. Cada job
tiene dos nombres: UNAME que identifica al usuario al que pertenece y JNAME que distingue entre varios jobs del mismo usuario. El primer job que cualquier usuario tiene es aquel donde ITS pone su DDT; el nombre de ese trabajo siempre es HACTRN (una parodia de FORTRN).
Colon Commands | Abreviación | Descripción | |||||
:LOGIN |
Login | ||||||
:TCTYP <terminal | HELP> | Tipo de terminal | |||||
:MSGS | Imprime mensajes del sistema | ||||||
:PRMAIL | Imprime el email | ||||||
:LOGOUT | $$U | Finaliza la sesión | |||||
:DETACH | separa el arbol de jobs del usuario | ||||||
:ATTACH | – | ||||||
:REATTACH |
Se usa para mover jobs de una consola aotra | ||||||
:DELETE |
Borra un archico | ||||||
:PRINT |
^R | Imprime el contenido de un archivo | |||||
:LISTF |
<directory | sname> ^F | Lista el contenido de un directorio | ||||
:RENAME |
$$^O |
Renombra un archivo | |||||
:COPY |
$^R |
Copia un archivo | |||||
:MOVE |
Mueve un archivo | ||||||
:LINK |
Enlaza un archivo (como symlink?) |
Ejecutar programas
La forma más simple es usando el nombre del programa como un comando colon, por ejemplo :TECO
, pero esto no funciona si el nombre del programa es el mismo que un comando interno de DDT. DDT busca el programa a ejecutar, primero en el directorio del usuario, si no lo encuentra busca en los directorios del sistema.
Procesos
Jobs en ITS estan organizados en arboles. Cada job es de nivel superior o tiene un nivel superior. Un job puede tener hasta 8 niveles inferiores. El job HACTRN
siempre es de nivel superior y los jobs creados por este sus inferiores. DDT es capáz de examinar cualquier job, pero solo controla completamente su nivel inferior directo.
El comando :JOB
se puede usar para hacer de cualquier job existente el job actual y poder operar en el.
:JOB |
convierte |
Si el
Los jobs pueden encontrarse en varios estados.
P | Detenido pero capaz de proceder | |||
R | En ejecución | |||
- | No iniciado | |||
W | Interrumpido esperando regresar a DDT |
:CONTINUE | $P | Resume el job actual y le da el control de la terminal, deshace el efecto de ^Z | ||||
:PROCEED | ^P | Permite que un job se ejecute sin tener el control de la terminal | ||||
^X | Detiene un programa que no tiene la terminal | |||||
:KILL | $^X o |
Mata el job actual | ||||
:MASSACRE | Mata todos los jobs | |||||
:LISTJ | $$V | Lista todos los trabajos. | ||||
:START | $G | Inicia un trabajo en la dirección de inicio del programa | ||||
:UJOB |
Selecciona el job para examinarse, si no tiene dueño te convierte en el dueño |
*:SSTATUS
You're all alone, Fair share
:VERSION
:LOADP
Fair Share
1 user idle less than 1 minute.
0 idle 1 to 5 minutes.
0 idle 5 to 10 minutes.
19 free net ports.
47 free job slots.
:KILL
The CALL key (or tZ) is used at almost any time to get the attention of ITS, interrupt the running job, and return you to DDT. Control-G is an interrupt similar to CALL, but it is more drastic and is not guaranteed to leave things in a consistant state. Control-S is used to stop the output of a DDT command. The RUBOUT key deletes the last character you typed. Control-D deletes the current line being typed. Control-L clears and refreshes the screen, retyping the current line.