Gabriel Bermudez
Franklin Araujo
Isamar Sivira
Isaac Castañeda
Blog realizado para la materia sistemas operativos..!

jueves, 24 de noviembre de 2011
Mas sobre Minix
Este sistema operativo al igual que Linux, Windows NT y Amoeba permite la multiprogramación, en estos sistemas el procesador ejecuta cada programa durante decenas o centenares de milisegundos, para luego conmutar al programa siguiente. En cada instante el procesador está ejecutando un sólo programa, pero a lo largo de un espacio de tiempo puede haber ejecutado partes de diversos programas dando así la sensación de paralelismo. Para poder realizar esto necesitamos una buena planificación de cómo los procesos se ejecutarán en la CPU.
Un proceso es un programa en ejecución que comprende el valor actual del contador de programa, de los registros y de las variables. Conceptualmente cada proceso tiene su propio procesador virtual y la CPU va conmutando de un proceso a otro. Para que esta conmutación pueda darse el sistema dota a los procesos una serie de estados en los que pueden encontrarse. Estos estados en Minix son tres, pero como veremos más adelante en Windows NT son 6 y en Linux son 5. Estos estados son:
- En ejecución: el proceso esta usando el procesador.
- Bloqueado: el proceso está esperando a que ocurra un evento externo.
- Listo : el proceso está preparado para ser ejecutado, pero está parado.
Existen cuatro transiciones posible entre los diferentes estados que son:
- De ejecución a bloqueado
- De ejecución a listo
- De listo a ejecución
- De bloqueado a listo
La primera transición ocurre cuando un proceso no puede continuar, por ejemplo porque tiene que leer de un tubo en el que todavía no se ha escrito.
La segunda y tercera transición es el planificador el encargado de realizarlas, para realizar estas transiciones el planificador dota a cada proceso de un quantum de tiempo que indica el tiempo que cada proceso deberá estar en ejecución y cuando este tiempo a expirado realiza la transición 2 para "sacar" del procesador al proceso que se está ejecutando y después realiza la transición 3 para "meter" en el procesador a un proceso que está en el estado listo. La forma en que se realizan estas transiciones por parte del planificador la explicaré más adelante.
Por último la cuarta transición se produce cuando el proceso que estaba bloqueado recibe la información que precisaba para continuar ejecutando.
Para implementar este modelo de procesos el sistema operativo utiliza la tabla de procesos que posee una posición por cada proceso. Esta posición contiene información sobre el estado del proceso, su contador de programa, el puntero a pila, la memoria asignada, el estado de sus ficheros abiertos, información relativa a su planificación y a su utilización de los recursos, es decir, todo lo que hay que salvar para que cuando el proceso pasa de ejecución a listo después pueda volver a pasar a ejecución.
El planificador de Minix es el nivel más inferior del sistema operativo, todo el manejo de interrupciones así como el manejo y la parada de los procesos y la comunicación entre ellos están ocultos dentro del planificador. Es por esto que el planificador debe ser muy eficiente porque de él depende que el sistema operativo le saque el mayor rendimiento posible a la CPU.
Descargar Minix 3
Aqui les dejo la direccion para descargar el SO MINIX 3.. Espero les sirva!!!
http://www.minix3.org/download/
http://www.minix3.org/download/
Estructura de Minix
Estructura de MINIX
Para comprender un poco mejor la estructura Microkernel de MINIX se detallan a continuación las diferentes capas.
Capa 1: Esta es la capa que interactúa directamente con el hardware. Es la encargada de atrapar todas las interrupciones y trampas, de planificar y ofrecer a las capas superiores un modelo de procesos independientes y secuenciales para comunicarse mediante el uso de mensajes. En resumen cuenta con dos partes bien definidas: la primera trata todo lo referente a la programación de bajo nivel para brindar la abstracción de procesos a las capas superiores. La segunda parte se gestiona los aspectos más mecánicos de los mensajes, como lo son los buffers de envío y recepción de mensajes que se alojan en la memoria física, las verificaciones de destinos y todo lo referente al manejo físico de memoria en lo que respecta a los mensajes. La primera capa es la que está escrita en lenguaje ensamblador. El resto de las capas ya está escrito en lenguaje C.
Capa 2: Contiene todo lo concerniente a los procesos de E/S, uno por cada tipo de dispositivos (tareas). Como se ilustra en el gráfico, tenemos tareas para discos, impresoras, relojes, interfaces de red y tareas de sistema, que si bien no son dispositivos de sistema sí tienen por finalidad el servicio de copiado entre diferentes regiones de memoria para procesos que no cuentan con los privilegios para realizarlos ellos mismos. Todas las tareas de la capa 2 y el código de la capa 1 se combinan para formar un solo programa binario llamado kernel, aunque a pesar de que son compilados juntos cuando el kernel y los manejadores de interrupciones se están ejecutando estos tienen mayores privilegios que las tareas. De este modo se logra que el kernel pueda ejecutar todo tipo de instrucciones usando datos de cualquier parte del sistema, a fin de poder acceder a cualquier parte de la memoria y cualquier registro de procesador. Sin embargo, las tareas a pesar de no contar con los privilegios a nivel de kernel sí pueden acceder a cualquier región de memoria que pertenezca a un proceso menos privilegiado con el objetivo de realizar E/S para ellos.
Capa 3: Aglutina los procesos conocidos como procesos servidores. Se ejecutan en un nivel menos privilegiado que el kernel o las tareas, y no acceden directamente a los puertos de E/S. Tampoco pueden acceder a otra región de memoria que no sea la que le fue asignada. Para ello se vale de las llamadas al sistema (FORK, EXEC y BRK) las cuales son proporcionadas por el administrador de memoria (MM). El sistema de archivos (FS) realiza las llamadas al sistema para los archivos (READ, MOUNT y CHDIR). Cabe destacar que el sistema de archivos de MINIX está diseñado como “servidor de archivos” por lo que se podría mover a una máquina remota casi sin cambios. Otros servidores de esta capa son el servidor de reencarnación (RS), que permite reiniciar los drivers que se cierren por fallos u otras causas.
Capa 4: Finalmente aquí se alojan todos los procesos de usuario tales como shells, editores, compiladores, programas, etc.
Fuente: Sistemas Operativos: Diseño e Implementación, Andrew S. Tanenbaum
Historia de minix
Andrew S.Tanenbaum creó MINIX en la Universidad Libre de Ámsterdam para ejemplificar los principios recogidos en su libro de texto Operating Systems: Design and Implementation (1987). Una parte del código en C del núcleo, el controlador de memoria y el sistema de ficheros de MINIX 1.0 se recogen en este libro.
Junto con el libro también había disponible un disquete con el código fuente de MINIX y los binarios, junto con un manual de referencia del sistema.
Tanenbaum creó originalmente MINIX para que fuera compatible con las arquitecturas IBM PC e IBM PC/AT, que eran las comunes en esa época.
MINIX 1.5, lanzado en 1991, incluía soporte para MicroChannel IBM PS/2 y también fue adaptado para las arquitecturas Motorola 68000 y SPARC, soportando Atari ST, Commodore Amiga, Apple Macintosh y plataformas Sun SPARCstation.
También existió una adaptación no oficial a las arquitecturas compatibles con Intel 80386 (en modo de 32 bits protegido), National Semiconductor NS32532, ARM y procesadores INMOS transputer. Meiko Scientific utilizó una primera versión de MINIX como base de su sistema operativo MeikOS. También existió una versión de MINIX que se ejecutaba como un proceso de usuario en el sistema operativo SunOS.
Al decrementarse la demanda de las computadoras de arquitectura de 68k, MINIX 2.0, lanzada el 1997, sólo era compatible con las arquitecturas x86 y SPARC. Fue el tema para la segunda edición del libro de Tanenbaum, en esta ocasión co-escrito junto con Albert Woodhull, y fue distribuido en un CD-ROM incluido en el libro. MINIX 2.0 añadía compatibilidad con POSIX1, soporte para arquitecturas Intel 80386 y superiores de 32 bits y reemplazó los protocolos de red Amoeba incluidos en MINIX 1.5 por TCP/IP. También aparecieron adaptaciones no oficiales de MINIX 2.0 para las arquitecturas basadas en el 68020 ISICAD Prisma 7000 y las basadas en Hitachi SH3.
Minix-vmd es una variante de MINIX 2.0 para procesadores compatibles con Intel IA-32, que fue creada por dos investigadores de la Vrije Universiteit, la cual añadía memoria virtual y soporte para el sistema gráfico X Window System.
MINIX 3 fue públicamente anunciado el 24 de octubre de 2005 por Andrew Tanenbaum, durante su exposición en la conferencia de ACM en el Symposium on Operating System Principles. Aunque sigue manteniéndose como ejemplo para la nueva edición de su libro, está comprensiblemente rediseñado para ser “utilizado como un sistema serio en computadoras con recursos limitados y para aplicaciones que requieren de gran fiabilidad”.
Actualmente MINIX 3 soporta sólo arquitecturas derivadas de IA-32, y está disponible en LiveCD, lo que permite ser utilizado sin necesidad de instalar el sistema operativo, y en versiones compatibles con sistemas de emulación o virtualización como BOCHS, Qemu, VMware y VirtualPC.
La versión 3.1.5 fue lanzada el 5 de noviembre de 2009, y contiene X11, emacs, vi, cc, gcc, perl, python, ash, bash, zsh, ftp, ssh, telnet, pine y cerca de 650 aplicaciones más, comunes a los sistemas Unix. Con la incorporación de X11, esta versión marca el punto de transición entre el modo texto y gráfico en este sistema operativo. Otra característica de esta versión, que será mejorada en un futuro, es la habilidad del sistema para mantenerse cuando el driver de algún componente deja de funcionar, y en algunos casos éstos son reemplazados automáticamente sin afectar a los procesos que se estén ejecutando. Siguiendo este camino, MINIX es self-healing, lo que lo hace ideal para sistemas que requieren alta fiabilidad.
Actualmente MINIX 3 está libremente disponible desde la página oficial www.minix3.org
Suscribirse a:
Entradas (Atom)