Download PLAN 9 INFERNO LIMBO - juancarunbasic

Document related concepts

Plan 9 from Bell Labs wikipedia , lookup

Arquitectura de Windows NT wikipedia , lookup

Document wikipedia , lookup

Windows NT wikipedia , lookup

Acme (editor) wikipedia , lookup

Transcript
PLAN 9 e INFERNO
Juan Carlos Gutiérrez M.
Universidad Tecnológica de Pereira, abril 27 de 2009
Glenda
Plan 9
Introducción
Glenda
Plan 9 de Bell Labs es un sistema de investigación desarrollado en Bell
Labs a partir de finales del decenio de 1980. Sus diseñadores
originales y autores de Ken Thompson, Rob Pike, Dave Presotto, y
Phil Winterbottom. Fueron acompañados por muchos otros
continuado el desarrollo en el decenio de 1990 hasta el presente.
Es un sistema operativo para sistemas distribuido donde una colección
de computadores separados físicamente están conectados entre sí
por una red de comunicaciones. Cada máquina posee sus
componentes de hardware y software que el usuario percibe como
un solo sistema (no necesita saber qué cosas están en qué
máquinas). El usuario accede a los recursos remotos (RPC) de la
misma manera en que accede a recursos locales.
Conceptos de diseño en Plan 9
Glenda
* Recursos como archivos: todos los recursos del sistema se
representan como archivos en el sistema de archivos jerárquico.
* Espacios de nombres (namespaces: un conjunto de nombres en
el cual todos los nombres son únicos): la vista de la red por parte de
la aplicación es un espacio de nombres simple y coherente que
aparece como un sistema de archivos jerárquico pero que puede
representar recursos físicamente separados (locales o remotos).
* Protocolo de comunicaciones estándar: se usa un protocolo
estándar, llamado 9P, para acceder a todos los recursos, ya sean
locales o remotos.
Ej. Namespace: Juan es el ID 123 en la UTP, Maria es ID 123 en la Católica,
UTP y La Católica son namespaces diferentes que permiten que Juan y María
Se identifiquen con el ID 123.
El mismo identificador puede independientemente ser definido en múltiples namespaces
Sistema de archivos  Nombres
Glenda
Plan 9 extendió el sistema de archivos a nombres, esto es, una ruta
única a un objeto ya sea un archivo, pantalla, usuario ó
computadora. Todos se manejaron utilizando los estándares UNIX
existentes, pero extendidos de forma que cualquier objeto pudiera
ser nombrado y accedido, un concepto similar al más conocido
sistema URI utilizado en la World Wide Web.
En UNIX, dispositivos como impresoras habían sido representados por
nombres utilizando "conversores software" en el directorio /dev,
pero éstos solamente manejaban dispositivos del hardware local y
no dispositivos remotos.
Bajo Plan 9 las impresoras fueron virtualizadas como archivos,
que podían ser accedidos a través de la red desde cualquier
estación de trabajo.
URI es una cadena corta de caracteres que identifica inequívocamente un recurso (servicio, página, documento,
dirección de correo electrónico, enciclopedia, etc.). Normalmente estos recursos son accesibles en una red o
sistema.
Nombres diferentes al mismo
objeto real
Glenda
Otra innovación de Plan 9 fue la habilidad de que los usuarios tuvieran
nombres diferentes para los mismos objetos reales. Cada usuario
podía crear un entorno personalizado colectando objetos varios en
su espacio de nombres.
UNIX tiene un concepto similar en el que los usuarios ganan
"privilegios" siendo copiados desde otro usuario, pero Plan 9
extiende esto a todos los objetos. Los usuarios pueden fácilmente
crear copias de sí mismos, modificarlas y después eliminarlas sin
afectar los recursos de los que fueron creadas.
Directorios Unión
Glenda
Plan 9 también introdujo el concepto de los directorios unión, directorios que
combinan y agrupan recursos a través de distintos medios y redes.
Por ejemplo, el directorio /bin (programas) de otro computador puede ser
vinculado al del propio computador, y entonces este directorio contendrá las
aplicaciones locales y las aplicaciones remotas (del otro computador), a las
que el usuario puede acceder de forma transparente.
Lo interesante es que los usuarios pueden utilizar el sistema de directorios
unión para anexar aplicaciones remotas en su espacio de nombres,
interactuando con ellas como si fueran locales, y haciendo el
procesamiento a través de una red algo muy sencillo.
Software para Plan 9
Python 2.2+
Graphviz
Perl 5.8.0
The PQ database program
TeX and LaTeX
Glenda
INFORMACIÓN PLAN 9
http://plan9.bell-labs.com/plan9/
Glenda
Inferno
Introducción
Inferno es un sistema operativo compacto diseñado para la
construcción de sistemas distribuidos y en red en una amplia
variedad de dispositivos y plataformas.
Esta basado en Plan 9, por lo que tiene los mismos principios de
diseño:
Recursos como archivos
Espacio de nombres ( namaspaces)
Protocolo de comunicación Estándar STYX
Portabilidad: Sistema operativo
Inferno puede ser ejecutado como una aplicación sobre un sistema
operativo existente, o como sistema operativo “stand alone”
Sistemas operativos que pueden actuar como anfitriones:
Windows NT/2000/XP
Irix
Linux
MacOS X
FreeBSD
Solaris
Plan 9
Portabilidad: Arquitectura
Inferno soporta las siguientes arquitecturas
Intel x86 (386 y superior)
Intel XScale
IBM PowerPC
ARM StrongARM (ARM y Thumb)
Sun SPARC
Portabilidad: Plug-in
Inferno funciona, adicionando un plug-in para intenet explorer 4 o
superior.
Esto permite, tener un aspecto homogeneo para el programador, sin
que deba preocuparse por el sistema operativo o la arquitectura
Portabilidad: Aplicaciones
Las aplicaciones en Inferno, están escritas en LIMBO, un lenguaje de
programación concurrente, modular, moderno y seguro, con una
sintaxis similar a C y considerablemente mas fácil de entender y
depurar que c++ o java.
El código en LIMBO es compilado en un código independiente de la
arquitectura, por “Dis virtual maxhine”.
Las especificaciones para Dis virtual machine se encuetran en:
http://www.vitanuova.com:8090/inferno/papers/dis.html
Limbo
Es un lenguaje de programación utilizado en el sistema operativo distribuido Inferno.
Tipos de datos:
Byte Unsigned, 8 bits
Int signed, 32 bits
Big signed, 64 bits
Real IEEE long float, 64 bits
Declaraciones y control de flujo
if (expr) stat
if (expr) stat else stat
while (expr) stat
for (expr; expr; expr) stat
do stat while (expr) ;
return expr ;
exit ;
Librerías:
Sys: funciones del sistema como print,
open, read
Draw: line , rect…
Tk: Mostrar gráficos, manejo mouse y
teclado
Bufio: Entrad y salida
Regex: Para expresiones regulares
Math: matemáticas
Limbo
Ejemplo “Hola mundo”: En el editor de texto OpcionesLIMBO
implement Hola;
include "sys.m";
sys: Sys;
include "draw.m";
Hola: module
{
init: fn(ctxt: ref Draw->Context, args: list of string);
};
init(ctxt: ref Draw->Context, args: list of string)
{
sys = load Sys Sys->PATH;
sys->print(“Hola mundo\n");
}
Limbo: Compilador desde consola
Emu.exe
; limbo –g ejem1
;ejem1
Hola mundo
;
Limbo: Ejecutar desde wm
Emu.exe
wm/wm
Abrir Shell
% ejem3.txt
Bibliografía
http://juancarunbasic.wikispaces.com/Plan9_SistemaOperativo
http://plan9.bell-labs.com/plan9/index.html
http://www.vitanuova.com/index.html
http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Limbo