Articulo de referencia

DNIX

DNIX (ortografía original: D-Nix ) es un sistema operativo en tiempo real tipo Unix, ya descontinuado , de la compañía sueca Dataindustrier AB (DIAB). Se desarrolló una versión ...

DNIX (ortografía original: D-Nix ) es un sistema operativo en tiempo real tipo Unix, ya descontinuado , de la compañía sueca Dataindustrier AB (DIAB). Se desarrolló una versión llamada ABCenix para la computadora ABC 1600 de Luxor. Daisy Systems también tenía un sistema llamado Daisy DNIX en algunas de sus estaciones de trabajo de diseño asistido por computadora (CAD) . Este sistema no guardaba relación con el producto de DIAB.

Historia

Inicio en DIAB en Suecia

Carpetas del sistema para DIAB DS90 y D-NIX

Dataindustrier AB (traducción literal: sociedad anónima de la industria informática) fue fundada en 1970 por Lars Karlsson como fabricante de ordenadores de placa única en Sundsvall , Suecia , produciendo un ordenador basado en Zilog Z80 llamado Data Board 4680. En 1978, DIAB comenzó a trabajar con la compañía de televisión sueca Luxor AB para producir las series de ordenadores domésticos y de oficina ABC 80 y ABC 800 .

En 1983, DIAB desarrolló de forma independiente la primera máquina compatible con Unix , la DIAB DS90, basada en la CPU Motorola 68000. Aquí apareció D-NIX, basado en una licencia de UNIX System V de AT&T Corporation . Sin embargo, DIAB era una empresa de sistemas de control industrial (automatización) y necesitaba un sistema operativo en tiempo real , por lo que reemplazó el núcleo UNIX proporcionado por AT&T con su propia variante en tiempo real, desarrollada internamente y compatible. Este núcleo se inspiró en un núcleo Z80 llamado OS.8 , creado para la división Monroe Systems de Litton Industries . [ 1 ] [ 2 ]

Con el tiempo, la empresa también reemplazó varias de las herramientas estándar del espacio de usuario de UNIX con sus propias implementaciones, hasta el punto de que ningún código derivaba de UNIX, y sus máquinas podían implementarse independientemente de cualquier licencia de AT&T UNIX. Dos años más tarde y en cooperación con Luxor, se desarrolló una computadora llamada ABC 1600 para el mercado de oficinas, mientras que, paralelamente, DIAB continuó produciendo versiones mejoradas de la computadora DS90 utilizando versiones más recientes de las CPU de Motorola, como Motorola 68010 , 68020 , 68030 y finalmente 68040. En 1990, DIAB fue adquirida por Groupe Bull , que continuó produciendo y dando soporte a las máquinas DS bajo la marca DIAB , con nombres como DIAB 2320 , DIAB 2340 , etc., que aún ejecutaban la versión de DNIX de DIAB. [ 3 ]

Derivado en ISC Systems Corporation

ISC Systems Corporation (ISC) adquirió los derechos de uso de DNIX a finales de la década de 1980 para su uso en su línea de computadoras bancarias basadas en Motorola 68k . (ISC fue comprada posteriormente por Olivetti , y a su vez revendida a Wang , que luego fue comprada por Getronics . Esta entidad corporativa, más comúnmente conocida como 'ISC', ha respondido a una desconcertante variedad de nombres a lo largo de los años). Esta rama de código era la versión compatible con SVR2 , y recibió una extensa modificación y desarrollo por parte de ellos. Las características notables de este sistema operativo fueron su soporte para paginación bajo demanda , estaciones de trabajo sin disco , multiprocesamiento , entrada/salida (E/S) asíncrona , la capacidad de montar procesos (manejadores) en directorios en el sistema de archivos y paso de mensajes . Su soporte en tiempo real consistía principalmente en colas internas controladas por eventos en lugar de mecanismos de búsqueda de listas (sin 'tormenta de truenos' [ 4 ] ), prioridades de procesos estáticas en dos clases (ejecución completa y segmentación temporal), soporte para archivos contiguos (para evitar la fragmentación de recursos críticos) y bloqueo de memoria. La calidad de la implementación de eventos asíncronos ortogonales aún no ha sido igualada en los sistemas operativos comerciales actuales, aunque algunos se acercan. (El concepto que aún no se ha adoptado es que el punto de serialización síncrono de toda la actividad asíncrona también podría ser asíncrono, ad infinitum. DNIX manejó esto con aplomo). La facilidad de E/S asíncrona evitó la necesidad de la selección de sockets de Berkeley o el mecanismo de sondeo STREAMS de SVR4 , aunque había una biblioteca de emulación de sockets que conservaba la semántica de sockets para la compatibilidad con versiones anteriores. Otra característica de DNIX fue que ninguna de las utilidades estándar (como ps, un infractor frecuente) rebuscaban en la memoria del núcleo para hacer su trabajo. En su lugar, se usaban llamadas al sistema, y ​​esto significaba que la arquitectura interna del núcleo era libre de cambiar según fuera necesario. El concepto de manejador permitía que las pilas de protocolos de red estuvieran fuera del núcleo, lo que facilitó enormemente el desarrollo y mejoró la fiabilidad general, aunque a costa del rendimiento. También permitía que los sistemas de archivos externos fueran procesos de nivel de usuario, de nuevo para mejorar la fiabilidad. El sistema de archivos principal, aunque podría haber sido (y una vez fue) un proceso externo, se integró en el núcleo por razones de rendimiento. Si no fuera por esto, DNIX bien podría haberse considerado un micronúcleo , aunque no se desarrolló formalmente como tal. Los manejadores podían aparecer como cualquier tipo de archivo, estructura de directorio o dispositivo Unix 'nativo', y las solicitudes de E/S de archivos que el manejador no podía procesar podían pasarse a otros manejadores, incluido el subyacente en el que estaba montado el manejador. Las conexiones de manejador también podían existir y pasarse independientemente del sistema de archivos, de forma muy parecida a una tubería . Una de las consecuencias de esto es que se podrían emular dispositivos tipo terminal de texto (TTY) sin necesidad de una función de pseudoterminal basada en el kernel .

Un ejemplo de cómo un manejador resultó útil se dio en la compatibilidad de ISC con estaciones de trabajo sin disco, donde un error en la implementación provocaba que el uso de tuberías con nombre en la estación de trabajo pudiera generar bloqueos de recursos no deseados en el servidor de archivos. Se creó un manejador en la estación de trabajo para controlar los accesos a las tuberías con nombre afectadas hasta que se pudieran desarrollar las correcciones necesarias en el kernel. Este manejador requirió aproximadamente 5 kilobytes de código para su implementación, lo que demuestra que un manejador complejo no tiene por qué ser extenso.

ISC también obtuvo el derecho a fabricar las máquinas DS90-10 y DS90-20 de DIAB como sus servidores de archivos. Sin embargo, las DS90-20 multiprocesador eran demasiado caras para el mercado objetivo, por lo que ISC diseñó sus propios servidores y adaptó DNIX a ellos. ISC diseñó sus propias estaciones de trabajo sin disco con interfaz gráfica de usuario para usar con estos servidores de archivos y volvió a adaptar DNIX. (Aunque ISC usó estaciones de trabajo Daisy con Daisy DNIX para diseñar las máquinas que ejecutarían el DNIX de DIAB, hubo una confusión mínima interna, ya que el personal de diseño y maquetación rara vez hablaba con el personal de software. ¡Además, el personal de diseño de hardware no usaba ninguno de los dos sistemas! La broma recurrente era algo así como: "En ISC construimos computadoras , no las usamos "). La compatibilidad con E/S asíncronas de DNIX permitió una programación sencilla basada en eventos en las estaciones de trabajo, que funcionaron bien a pesar de tener recursos relativamente limitados. (La estación de trabajo sin disco con interfaz gráfica tenía un procesador 68010  de 7 MHz y era utilizable con solo 512 KB de memoria, de los cuales el núcleo consumía aproximadamente la mitad. La mayoría de las estaciones de trabajo tenían 1 MB de memoria, aunque posteriormente hubo versiones de 2 MB y 4 MB, junto con procesadores de 10 MHz). Una instalación completa podía consistir en un servidor ( 68020 de 16 MHz , 8 MB de RAM y un disco duro de 200 MB) y hasta 64 estaciones de trabajo. Aunque lento para arrancar, tal conjunto funcionaría de manera aceptable en una aplicación de cajero bancario . Además de la eficiencia inherente de DNIX, el compilador DIAB C asociado fue clave para un alto rendimiento. Generaba código particularmente bueno para el 68010 , especialmente después de que ISC lo terminara. (ISC también lo redirigió al coprocesador gráfico Texas Instruments TMS34010 utilizado en su última estación de trabajo). El compilador DIAB C se utilizó, por supuesto, para construir DNIX, lo que fue uno de los factores que contribuyeron a su eficiencia, y todavía está disponible, de alguna forma, a través de Wind River Systems .  

Estos sistemas siguen en uso a fecha de 2006, en antiguas sucursales del Seattle-First National Bank, ahora conocidas como Bank of America . Es posible que existan, y probablemente existan, otros clientes de ISC que aún utilicen DNIX de alguna forma. A través de ISC, DNIX tuvo una presencia considerable en Centroamérica y Sudamérica .

eventos asíncronos

La llamada al sistema nativa de DNIX era la dnix(2)función de biblioteca, análoga a la función estándar unix(2)de Unix syscall(2). Recibía varios argumentos, el primero de los cuales era un código de función. Semánticamente, esta única llamada proporcionaba toda la funcionalidad apropiada de Unix, aunque su sintaxis era diferente y, por supuesto, tenía numerosas extensiones exclusivas de DNIX.

Los códigos de función DNIX se organizaron en dos clases: Tipo 1 y Tipo 2. Los comandos de Tipo 1 eran aquellos asociados con la actividad de E/S, o cualquier cosa que pudiera potencialmente causar el bloqueo del proceso emisor. Los ejemplos principales eran, F_OPEN, F_CLOSE, F_READ, F_WRITE, F_IOCR, F_IOCW, F_WAIT, y F_NAP. El Tipo 2 era el resto, como, F_GETPID, F_GETTIME, etc. Podían ser satisfechos por el kernel inmediatamente.

Para invocar la asincronía, se debía haber creado un descriptor de archivoF_OTQ especial llamado cola de trampas mediante el código de operación de tipo 2. Una llamada de tipo 1 tendría el F_NOWAITbit OR con su valor de función, y uno de los parámetros adicionales de dnix(2)sería el descriptor de archivo de la cola de trampas. El valor de retorno de una llamada asíncrona no era el valor normal, sino un identificador asignado por el kernel. Cuando la solicitud asíncrona se completaba, un read(2)(o F_READ) del descriptor de archivo de la cola de trampas devolvería una pequeña estructura definida por el kernel que contenía el identificador y el estado del resultado. La F_CANCELoperación estaba disponible para cancelar cualquier operación asíncrona que aún no se hubiera completado; uno de sus argumentos era el identificador asignado por el kernel. (Un proceso solo podía cancelar las solicitudes que le pertenecían. La semántica exacta de la cancelación dependía del controlador de cada solicitud; fundamentalmente, solo significaba que se terminaría cualquier espera. Se podía devolver una operación parcialmente completada). Además del identificador asignado por el kernel, uno de los argumentos que se pasaban a cualquier operación asíncrona era un identificador de 32 bits asignado por el usuario. Este solía hacer referencia a un puntero a la función de la subrutina correspondiente que gestionaría el método de finalización de E/S, pero esto era simplemente una convención. La entidad que leía los elementos de la cola de trampas era la responsable de interpretar este valor.

struct itrq { /* Estructura de los datos leídos de la cola de trampas. */ short it_stat ; /* Estado */ short it_rn ; /* Número de solicitud */ long it_oid ; /* ID del propietario proporcionado en la solicitud */ long it_rpar ; /* Parámetro devuelto */ };

Cabe destacar que los eventos asíncronos se recopilaban mediante operaciones normales de lectura de descriptores de archivo, y que dicha lectura también podía ser asíncrona. Esto tenía implicaciones para los paquetes de gestión de eventos asíncronos semiautónomos que podían existir dentro de un mismo proceso. (DNIX 5.2 no disponía de procesos ligeros ni hilos). Asimismo, cabe mencionar que cualquier operación potencialmente bloqueante podía ejecutarse de forma asíncrona, por lo que DNIX estaba bien preparado para gestionar numerosos clientes con un único proceso de servidor. Un proceso no estaba limitado a tener una sola cola de trampas, por lo que las solicitudes de E/S podían priorizarse de forma general.

Compatibilidad

Además de la dnix(2)llamada nativa, estaba disponible un conjunto completo de llamadas de interfaz libcopen(2) 'estándar'. , close(2), read(2), write(2), etc. Además de ser útiles para la retrocompatibilidad, estas se implementaron de manera binariamente compatible con la computadora NCR Tower , de modo que los binarios compilados para ella se ejecutarían sin cambios bajo DNIX. El núcleo DNIX tenía dos despachadores de interrupciones internamente, uno para el método DNIX y otro para el método Unix. La elección del despachador dependía del programador, y era aceptable usar ambos indistintamente. Semánticamente eran idénticos dondequiera que la funcionalidad se superpusiera. (En estas máquinas, la instrucción 68000trap #0 se usaba para las unix(2)llamadas, y la trap #4instrucción para dnix(2). Los dos manejadores de interrupciones eran muy similares, aunque la unix(2)llamada [generalmente oculta] mantenía el código de la función en el registro D0 del procesador, mientras que dnix(2)lo mantenía en la pila con el resto de los parámetros).

DNIX 5.2 no tenía pilas de protocolos de red internas (excepto la pila de protocolos Ethernet basada en X.25 añadida por ISC para su paquete de soporte de estaciones de trabajo sin disco); toda la comunicación en red se realizaba mediante lectura y escritura en manejadores. Por lo tanto, no existía un mecanismo de sockets , pero sí uno que utilizaba E/S asíncrona para comunicarse con el manejador TCP/IP. El programa de red típico derivado de Berkeley podía compilarse y ejecutarse sin modificaciones (salvo los problemas habituales de portabilidad a Unix ), aunque podría no ser tan eficiente como un programa equivalente que utilizara E/S asíncrona nativa.libsocket(3)

adiestradores

En DNIX, un proceso podía utilizarse para gestionar las solicitudes de E/S y extender el sistema de archivos. Dicho proceso se denominaba Handler y era una característica fundamental del sistema operativo. Un handler se definía como un proceso que poseía al menos una cola de solicitudes , un descriptor de archivo especial que se obtenía de dos maneras: mediante una llamada F_ORQo una F_MOUNTllamada. La primera creaba una cola de solicitudes aislada, cuyo extremo se pasaba normalmente a un proceso hijo. (Los programas de ejecución remota en red, de los que había muchos, utilizaban este método para proporcionar rutas de E/S estándar a sus procesos hijos). La segunda se integraba en el sistema de archivos para que los handlers pudieran gestionar las solicitudes de E/S de archivos. (Los programas de inicio de sesión de red, de los cuales había aún más, utilizaban este método para proporcionar rutas de E/S estándar a sus procesos hijos, ya que la semántica del inicio de sesión en Unix requiere una forma para que múltiples procesos, posiblemente no relacionados, se interpongan en la ruta de E/S estándar hacia el operador). Una vez montado en un directorio del sistema de archivos, el controlador recibía todas las llamadas de E/S hasta ese momento.

Un manejador leería entonces pequeñas estructuras de datos de solicitud asignadas por el kernel desde la cola de solicitudes. (Dicha lectura podría hacerse de forma síncrona o asíncrona según lo deseara el autor del manejador). El manejador haría entonces lo que cada solicitud requiriera para ser satisfecha, a menudo usando DNIX F_UREADy F_UWRITEllamadas para leer y escribir en el espacio de datos de la solicitud, y luego terminaría la solicitud apropiadamente usando F_TERMIN. Un manejador privilegiado podía adoptar los permisos de su cliente para solicitudes individuales a manejadores subordinados (como el sistema de archivos) a través de la F_T1REQllamada, por lo que no necesitaba reproducir el esquema de permisos del subordinado. Si un manejador no podía completar una solicitud por sí solo, la F_PASSRQfunción podía usarse para pasar solicitudes de E/S de un manejador a otro. Un manejador podía realizar parte del trabajo solicitado antes de pasar el resto a otro manejador. Era muy común que un manejador estuviera orientado a la máquina de estados de modo que las solicitudes que recibía de un cliente se hicieran todas de forma asíncrona. Esto permitía que un solo manejador recibiera solicitudes de múltiples clientes simultáneamente sin que se bloquearan entre sí innecesariamente. La estructura de la solicitud incluía el ID del proceso y su prioridad, de modo que el gestor pudiera elegir en qué trabajar primero basándose en esta información. No era necesario que el trabajo se realizara en el orden en que se solicitaba. Para facilitar esto, era posible consultar las colas de solicitudes y de excepciones para ver si había más trabajo pendiente antes de comenzar a realizarlo.

struct ireq { /* Estructura de la solicitud entrante */ short ir_fc ; /* Código de función */ short ir_rn ; /* Número de solicitud */ long ir_opid ; /* ID del propietario que proporcionó al abrir o montar */ long ir_bc ; /* Conteo de bytes */ long ir_upar ; /* Parámetro de usuario */ long ir_rad ; /* Dirección aleatoria */ ushort ir_uid ; /* ID de usuario */ ushort ir_gid ; /* Grupo de usuarios */ time_t ir_time ; /* Hora de la solicitud */ ulong ir_nph ; ulong ir_npl ; /* ID de nodo y proceso */ };

No existía ninguna restricción específica sobre el número de colas de solicitudes que podía tener un proceso. Esto se utilizaba , por ejemplo, para proporcionar infraestructura de red a entornos chroot .

Ejemplos

Para comprender mejor la utilidad de los manejadores, cabe mencionar que en ISC existían manejadores para:

  • sistemas de archivos extranjeros
    • GORDO
    • CD-ROM / ISO9660
    • archivos de imagen de disco
    • Disco RAM (para usar con discos de arranque protegidos contra escritura)
  • protocolos de red
  • sistemas de archivos remotos
    • Ruta /net/machine/path/from/its/root de DNET...
    • NFS
  • inicio de sesión remoto
  • ejecución remota
    • rx (DNET)
    • remsh
    • rexec
  • extensión del sistema
    • windowman (GUI)
    • vterm (similar a xterm )
    • Impresora de documentos (libretas de ahorro)
    • dmap (análogo de ruptime)
    • windowmac ​​(puerta de enlace con interfaz gráfica para Macintosh)
  • parches del sistema
    • manipulador de tuberías con nombre

Extensiones de ISC

ISC adquirió las versiones 5.2 ( compatible con SVR2 ) y 5.3 ( compatible con SVR3 ) de DNIX. En el momento de la compra, DNIX 5.3 aún estaba en desarrollo en DIAB , por lo que se implementó DNIX 5.2. Con el tiempo, los ingenieros de ISC incorporaron la mayoría de las características de su kernel 5.3 en la versión 5.2, principalmente memoria compartida e IPC , lo que generó cierta divergencia de características entre las versiones de DNIX de DIAB e ISC. Es probable que la versión 5.3 de DIAB llegara a incluir más características de SVR3 que la versión 5.2 de ISC. Además, DIAB pasó a desarrollar DNIX 5.4, un sistema operativo compatible con SVR4 .

En ISC, los desarrolladores ampliaron considerablemente su versión de DNIX 5.2 (solo se enumeran las características relacionadas con el núcleo ) basándose tanto en sus necesidades como en las tendencias generales de la industria Unix:

  • Compatibilidad con estaciones de trabajo sin disco. El sistema de archivos del núcleo de la estación de trabajo se eliminó y se reemplazó por un módulo de comunicaciones Ethernet basado en X.25. El núcleo del servidor de archivos también se amplió con un componente auxiliar que recibía las solicitudes remotas y las entregaba a un grupo de procesos del núcleo para su procesamiento, aunque se podría haber escrito un controlador estándar para esta tarea. (Más adelante en el ciclo de vida del producto, ISC implementó servidores Unix estándar basados ​​en SVR4 en lugar de los servidores DNIX. Estos utilizaban flujos X.25 y un programa de servidor de archivos personalizado. A pesar de la estructura menos eficiente, la potencia bruta de las plataformas utilizadas dio como resultado un servidor mucho más rápido. Es una lástima que este programa de servidor de archivos no admitiera todas las funcionalidades del servidor DNIX nativo. Aspectos complejos, como las tuberías con nombre , simplemente no funcionaban. Esta fue otra justificación para el proceso de gestión de tuberías con nombre).
  • Compatibilidad con puntos de vigilancia de gdb mediante las funciones de la MMU de ISC .
  • Se implementó la E/S asíncrona al sistema de archivos. (Originalmente, de todos modos, era bloqueante). Para ello, se utilizaron procesos del núcleo (kprocs o hilos).
  • Compatibilidad con programas similares a truss o strace . Además de corregir algunos errores en el mecanismo estándar de ejecución paso a paso de ptrace de Unix, fue necesario añadir una función de adopción temporal de procesos para que el rastreador pudiera utilizar dicho mecanismo en procesos existentes.
  • Extensiones del mecanismo de señales SVR4 . Principalmente para las nuevas señales STOP y CONT , pero también abarcando las nuevas llamadas de control de señales. Debido a la falta de código fuente de ISC para los depuradores adb y sdb, la página u no pudo modificarse, por lo que las nuevas señales solo pudieron bloquearse o recibir el manejo predeterminado; no pudieron ser capturadas.
  • Compatibilidad con la monitorización de red . Esto requirió extender el controlador Ethernet para que un solo evento pudiera satisfacer más de una solicitud de E/S, e implementar condicionalmente el filtrado de hardware en software para admitir el modo promiscuo .
  • Duplicación de disco . Esto se realizaba en el sistema de archivos y no en el controlador del dispositivo, de modo que dispositivos ligeramente (o incluso completamente) diferentes podían duplicarse juntos. Duplicar un disco duro pequeño en un disquete era una forma popular de probar la duplicación, ya que expulsar el disquete era una manera fácil de provocar errores de disco.
  • Se añadieron al sistema de archivos inodos de 32 bits , nombres de archivo de 30 caracteres, enlaces simbólicos y extensiones de directorio persistentes . Se agregaron los dispositivos /dev/zero, /dev/noise, /dev/stdXXX y /dev/fd/X.
  • Listas de ID de grupo de procesamiento (de SVR4 ).
  • #! ejecución directa del script.
  • Multiplicación de puertos serie mediante tarjetas de comunicación VMEbus basadas en el chip Z-80 de ISC .
  • Partición de intercambio móvil.
  • Instantáneas de volcado de memoria de los procesos en ejecución. Compatibilidad con el comando fuser .
  • Función de refinamiento de procesos. Programa de repriorización de tiempo compartido asociado para implementar prioridades flotantes.
  • Una forma de "robar" un proceso, privándolo instantáneamente de todos sus recursos de memoria. Muy útil para determinar cuál es el conjunto de trabajo actual , en contraposición a lo que aún está disponible pero no necesariamente se está utilizando. Esto estaba asociado con una utilidad gráfica que mostraba el estado de las 1024 páginas del mapa de memoria de un proceso. (Este es el número de páginas de memoria admitidas por la MMU de ISC). En su uso, se "robaba" el proceso objetivo periódicamente durante su ciclo de vida y luego se observaba cuánta memoria se intercambiaba de nuevo. Esto era útil dado que el entorno de producción de ISC utilizaba solo unos pocos procesos de larga duración, y controlar su utilización y crecimiento de memoria era clave para mantener el rendimiento.

Funcionalidades que nunca se añadieron

Cuando el desarrollo de DNIX en ISC cesó efectivamente en 1997, varias características planificadas del sistema operativo quedaron sin implementar:

  • Objetos compartidos : Existían dos bibliotecas de carga dinámica, un encriptador para DNET y la biblioteca de procesamiento de imágenes de la interfaz gráfica de usuario, pero esta funcionalidad nunca se generalizó. Las máquinas de ISC se caracterizaban por una escasez general de espacio de direcciones virtuales , por lo que no habría sido posible un uso extensivo de entidades mapeadas en memoria.
  • Procesos ligeros : el kernel ya contaba con múltiples hilos que compartían un único contexto MMU, por lo que extender esto a los procesos de usuario debería haber sido sencillo. Las implicaciones de la API habrían sido la parte más difícil.
  • Listas de control de acceso (ACL): Su implementación es muy sencilla utilizando un controlador de ACL montado sobre el sistema de archivos estándar.
  • Múltiples particiones de intercambio: DNIX ya utilizaba espacio libre en el volumen seleccionado para el intercambio; habría sido fácil proporcionarle una lista de volúmenes para probar uno por uno, posiblemente con límites de espacio asociados para evitar que consumiera todo el espacio libre en un volumen antes de pasar al siguiente.
  • Depuración remota del kernel mediante gdb : existían todos los elementos necesarios para hacerlo, ya fuera a través del puerto serie habitual o mediante Ethernet utilizando el software de enlace X.25 integrado en el kernel, pero nunca se ensamblaron.
  • Soporte para el 68030 : los prototipos de ISC nunca se completaron. Se construyeron dos tarjetas de expansión para procesadores, pero nunca se utilizaron como algo más que versiones más rápidas del 68020. No eran fiables ni tan rápidas como podrían haber sido debido a la necesidad de encajar en un zócalo del 68020. La MMU de conmutación de contexto rápida de ISC se dejaría desactivada (y se eliminaría por completo en las unidades de producción propuestas), y en su lugar se utilizaría la integrada del 68030, mediante una derivación del código de la MMU del DS90-20. Si bien la MMU de ISC era muy eficiente y admitía la conmutación instantánea entre 32 procesos residentes, su capacidad de direccionamiento era muy limitada. La MMU del 68030 habría permitido mucho más de 8 MB de espacio virtual en un proceso, que era el límite de la MMU de ISC. Si bien esta MMU sería más lenta, la mayor velocidad general del 68030 debería haberlo compensado con creces, por lo que se esperaba que una máquina 68030 fuera en todos los sentidos más rápida y admitiera procesos mucho más grandes.

Véase también

Referencias

  1. ^ Sjöström, Roland (1996). "1981 Introducción a ABC 800". Posicionamiento bajo estrategisk osäkerhet - Luxor Datorer och persondatorbranschen . Estudios de Linköping en Gestión y Economía, Disertaciones no 30. Vol. 1, núm.  2. Linköping: Ekonomiska Institutionen, Linköpings tekniska högskola. págs. 73 a 100. ISBN  91-7871-699-3ISSN 0345-7524 
  2. ^ Sjöström, Roland (1996). "1982 Ökad konkurrens och especialización". Posicionamiento bajo estrategisk osäkerhet - Luxor Datorer och persondatorbranschen . Estudios de Linköping en Gestión y Economía, Disertaciones no 30. Vol. 1, núm. 2. Linköping: Ekonomiska Institutionen, Linköpings tekniska högskola. págs. 101 a 122. ISBN   91-7871-699-3ISSN 0345-7524 
  3. Historia de DIAB – Dataindustrier AB
  4. Escalabilidad de Accept() en Linux