Sistemas Operativos Sistema Operativo Cómo funciona un Sistema Operativo Software

Anuncio
Sistemas Operativos
Sistema Operativo
Software básico que controla una computadora. El sistema operativo tiene tres grandes funciones: coordina y
manipula el hardware de la computadora, como la memoria, las impresoras, las unidades de disco, el teclado
o el mouse; organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos
duros, discos compactos o cintas magnéticas, y gestiona los errores de hardware y la pérdida de datos.
Cómo funciona un Sistema Operativo
Los sistemas operativos controlan diferentes procesos de la computadora. Un proceso importante es la
interpretación de los comandos que permiten al usuario comunicarse con el ordenador. Algunos intérpretes de
instrucciones están basados en texto y exigen que las instrucciones sean tecleadas. Otros están basados en
gráficos, y permiten al usuario comunicarse señalando y haciendo clic en un icono. Por lo general, los
intérpretes basados en gráficos son más sencillos, pero muchos usuarios expertos prefieren los intérpretes de
instrucciones basados en texto porque son más potentes.
Los sistemas operativos pueden ser de tarea única o multitarea. Los sistemas operativos de tarea única, más
primitivos, sólo pueden manejar un proceso en cada momento. Por ejemplo, cuando la computadora está
imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas instrucciones hasta que se
termine la impresión.
Todos los sistemas operativos modernos son multitarea y pueden ejecutar varios procesos simultáneamente.
En la mayoría de los ordenadores sólo hay una UCP; un sistema operativo multitarea crea la ilusión de que
varios procesos se ejecutan simultáneamente en la UCP. El mecanismo que se emplea más a menudo para
lograr esta ilusión es la multitarea por segmentación de tiempos, en la que cada proceso se ejecuta
individualmente durante un periodo de tiempo determinado.
Sistemas Operativos por la Forma de Ofrecer sus Servicios
1
Esta clasificación también se refiere a una visión externa, que en este caso se refiere a la del usuario, el cómo
aceza los servicios. Bajo esta clasificación se pueden detectar dos tipos principales: sistemas operativos de red
y sistemas operativos distribuidos.
ð
Sistemas Operativos de Red
Los sistemas operativos de red se definen como aquellos que tiene la capacidad de interactuar con sistemas
operativos en otras computadoras por medio de un medio de transmisión con el objeto de intercambiar
in1formación, transferir archivos, ejecutar comandos remotos y un sin fin de otras actividades.
El punto crucial de estos sistemas es que el usuario debe saber la sintaxis de un conjunto de comandos o
llamadas al sistema para ejecutar estas operaciones, además de la ubicación de los recursos que desee acezar.
Por ejemplo, si un usuario en la computadora hidalgo necesita el archivo matriz.pas que se localiza en el
directorio /software/código en la computadora modelos bajo el sistema operativo UNIX, dicho usuario podría
copiarlo a través de la red con los comandos siguientes: hidalgo % hidalgo % rcp
modelos:/software/código/matriz.pas . hidalgo%
En este caso, el comando rcp que significa "remote copy" trae el archivo indicado de la computadora modelos
y lo coloca en el directorio donde se ejecutó el mencionado comando. Lo importante es hacer ver que el
usuario puede acezar y compartir muchos recursos.
1. ¿Qué es un sistema operativo?
Un sistema operativo es el programa que oculta la verdad del hardware al programador y presenta una vista
simple y agradable de los archivos nominados que pueden leerse y escribirse. Es sistema operativo resguarda
al programador del hardware del disco y presenta una interfaz simple orientada al archivo, también disimula
mucho del trabajo concerniente a interrupciones, relojes o cronómetros, manejo de memoria y otras
características de bajo nivel.
La función del sistema operativo es la de presentar al usuario con el equivalente de una máquina ampliada o
máquina virtual que sea más fácil de programar que el hardware implícito.
2. Historia de los sistemas operativos
2
Los Sistemas Operativos, al igual que el Hardware de los computadores, han sufrido una serie de cambios
revolucionarios llamados generaciones. En el caso del Hardware, las generaciones han sido marcadas por
grandes avances en los componentes utilizados, pasando de válvulas ( primera generación ) a transistores (
segunda generación ), a circuitos integrados ( tercera generación), a circuitos integrados de gran y muy gran
escala (cuarta generación). Cada generación Sucesiva de hardware ha ido acompañada de reducciones
substanciales en los costos, tamaño, emisión de calor y consumo de energía, y por incrementos notables en
velocidad y capacidad.
Generación Cero (década de 1940)
Los primeros sistemas computacionales no poseían sistemas operativos. Los usuarios tenían completo acceso
al lenguaje de la maquina. Todas las instrucciones eran codificadas a mano.
Primera Generación (década de 1950)
Los sistemas operativos de los años cincuenta fueron diseñados para hacer mas fluida la transición entre
trabajos. Antes de que los sistemas fueran diseñados, se perdía un tiempo considerable entre la terminación de
un trabajo y el inicio del siguiente. Este fue el comienzo de los sistemas de procesamiento por lotes, donde los
trabajos se reunían por grupos o lotes. Cuando el trabajo estaba en ejecución, este tenia control total de la
maquina. Al terminar cada trabajo, el control era devuelto al sistema operativo, el cual limpiaba y leía e
iniciaba el trabajo siguiente.
Al inicio de los 50's esto había mejorado un poco con la introducción de tarjetas perforadas (las cuales servían
para introducir los programas de lenguajes de máquina), puesto que ya no había necesidad de utilizar los
tableros enchufables.
Además el laboratorio de investigación General Motors implementó el primer sistema operativo para la IBM
701. Los sistemas de los 50's generalmente ejecutaban una sola tarea, y la transición entre tareas se suavizaba
para lograr la máxima utilización del sistema. Esto se conoce como sistemas de procesamiento por lotes de un
sólo flujo, ya que los programas y los datos eran sometidos en grupos o lotes.
La introducción del transistor a mediados de los 50's cambió la imagen radicalmente.
Se crearon máquinas suficientemente confiables las cuales se instalaban en lugares especialmente
acondicionados, aunque sólo las grandes universidades y las grandes corporaciones o bien las oficinas del
gobierno se podían dar el lujo de tenerlas.
Para poder correr un trabajo (programa), tenían que escribirlo en papel (en Fortran o en lenguaje ensamblador)
y después se perforaría en tarjetas. Enseguida se llevaría la pila de tarjetas al cuarto de introducción al sistema
y la entregaría a uno de los operadores. Cuando la computadora terminara el trabajo, un operador se dirigiría a
la impresora y desprendería la salida y la llevaría al cuarto de salida, para que la recogiera el programador.
Segunda Generacion (a mitad de la década de 1960)
La característica de los sistemas operativos fue el desarrollo de los sistemas compartidos con
multiprogramación, y los principios del multiprocesamiento. En los sistemas de multiprogramación, varios
programas de usuario se encuentran al mismo tiempo en el almacenamiento principal, y el procesador se
cambia rápidamente de un trabajo a otro. En los sistemas de multiprocesamiento se utilizan varios
procesadores en un solo sistema computacional, con la finalidad de incrementar el poder de procesamiento de
la maquina.
La independencia de dispositivos aparece después. Un usuario que desea escribir datos en una cinta en
3
sistemas de la primera generación tenia que hacer referencia especifica a una unidad de cinta particular. En la
segunda generación, el programa del usuario especificaba tan solo que un archivo iba a ser escrito en una
unidad de cinta con cierto numero de pistas y cierta densidad.
Se desarrollo sistemas compartidos, en la que los usuarios podían acoplarse directamente con el computador a
través de terminales. Surgieron sistemas de tiempo real, en que los computadores fueron utilizados en el
control de procesos industriales. Los sistemas de tiempo real se caracterizan por proveer una respuesta
inmediata.
Tercera Generación (mitad de década 1960 a mitad década de 1970)
Se inicia en 1964, con la introducción de la familia de computadores Sistema/360 de IBM. Los computadores
de esta generación fueron diseñados como sistemas para usos generales . Casi siempre eran sistemas grandes,
voluminosos, con el propósito de serlo todo para toda la gente. Eran sistemas de modos múltiples, algunos de
ellos soportaban simultáneamente procesos por lotes, tiempo compartido, procesamiento de tiempo real y
multiprocesamiento. Eran grandes y costosos, nunca antes se había construido algo similar, y muchos de los
esfuerzos de desarrollo terminaron muy por arriba del presupuesto y mucho después de lo que el planificador
marcaba como fecha de terminación.
Estos sistemas introdujeron mayor complejidad a los ambientes computacionales; una complejidad a la cual,
en un principio, no estaban acostumbrados los usuarios.
Cuarta Generación (mitad de década de 1970 en adelante)
Los sistemas de la cuarta generación constituyen el estado actual de la tecnología. Muchos diseñadores y
usuarios se sienten aun incómodos, después de sus experiencias con los sistemas operativos de la tercera
generación.
Con la ampliación del uso de redes de computadores y del procesamiento en línea los usuarios obtienen
acceso a computadores alejados geográficamente a través de varios tipos de terminales.
Los sistemas de seguridad se ha incrementado mucho ahora que la información pasa a través de varios tipos
vulnerables de líneas de comunicación. La clave de cifrado esta recibiendo mucha atención; han sido
necesario codificar los datos personales o de gran intimidad para que; aun si los datos son expuestos, no sean
de utilidad a nadie mas que a los receptores adecuados.
El porcentaje de la población que tiene acceso a un computador en la década de los ochenta es mucho mayor
que nunca y aumenta rápidamente.
El concepto de maquinas virtuales es utilizado. El usuario ya no se encuentra interesado en los detalles físicos
de; sistema de computación que esta siendo accedida. En su lugar, el usuario ve un panorama llamado
maquina virtual creado por el sistema operativo.
Los sistemas de bases de datos han adquirido gran importancia. Nuestro mundo es una sociedad orientada
hacia la información, y el trabajo de las bases de datos es hacer que esta información sea conveniente
accesible de una manera controlada para aquellos que tienen derechos de acceso.
3. Conceptos de los Sistemas Operativos
Llamadas al Sistema:
La interfaz entre el sistema operativo y los programas del usuario se define por medio del conjunto de
4
"instrucciones extendidas" que el sistema operativo proporciona. Estas instrucciones extendidas se conocen
como llamadas al sistema. Las llamadas al sistema varían de un sistema operativo a otro (aunque los
conceptos fundamentales tienden a ser análogos).
Las llamadas al sistema se clasifican normalmente en dos categorías generales: aquellas que se relacionan con
procesos y la que lo hacen con el sistema de archivo.
• Por Procesos: Un proceso es básicamente un programa en ejecución. Consta del programa ejecutable
y la pila o stack del programa, su contador de programa, apuntador de pila y otros registros, así como
la otra información que se necesita para ejecutar el programa. En si el proceso en el concepto de los
sistemas operativos es como el sistema de tiempo compartido. Esto es, que en forma periódica, el
sistema operativo decide suspender la ejecución de un proceso y dar inicio a la ejecución de otro, por
ejemplo, porque el primero haya tomado ya más de su parte del tiempo de la CPU, en terrenos del
segundo.
Cuando un proceso se suspende temporalmente, debe reiniciarse después exactamente en el mismo estado en
que se encontraba cuando se detuvo. Esto significa que toda la información relativa al proceso debe guardarse
en forma explícita en algún lugar durante la suspensión. En muchos sistemas operativos, toda la información
referente a cada proceso, diferente del contenido de su espacio de direcciones, se almacena en una tabla de
sistema operativo llamada tabla de procesos, la cual es un arreglo (lista enlazada) de estructuras, una para cada
proceso en existencia.
Por lo tanto, un proceso (suspendido) consta de su espacio de direcciones, generalmente denominado imagen
del núcleo (en honor de las memorias de imagen de núcleo magnético que se utilizaron en tiempos antiguos) y
su registro de la tabla de procesos, que contiene sus registros entre otras cosas.
• Por Sistema de Archivo: Una función importante del S.O. consiste en ocultar las peculiaridades de los
discos y otros dispositivos de E/S y presentar al programador un modelo abstracto, limpio y agradable
de archivos independientes del dispositivo. Las llamadas al sistema se necesitan con claridad para
crear archivos, eliminarlos, leerlos y escribirlos. Antes de que se pueda leer un archivo, éste debe
abrirse y después de que se haya leído debe cerrarse, de modo que las llamadas se dan para hacer estas
cosas.
Antes de que un archivo pueda leerse o escribirse, éste debe abrirse, en cuyo instante se verifican los
permisos. Si se permite el acceso, el sistema produce un entero pequeño llamado descriptor del archivo para
utilizarse en operaciones subsiguientes. Si se prohibe el acceso, se produce un código de error.
4. Shell (intérprete de comandos):
El sistema operativo es el código que realiza las llamadas al sistema. Los editores, compiladores,
ensambladores, enlazadores e intérpretes de comandos definitivamente no son parte del sistema operativo,
aunque son importantes y útiles. El Shell es el intérprete de comandos, a pesar de no ser parte del sistema
operativo, hace un uso intenso de muchas características del sistema operativo y por tanto sirve como un buen
ejemplo de la forma en que se pueden utilizar las llamadas al sistema. También es la interfaz primaria entre un
usuario situado frente a su terminal y el sistema operativo.
Cuando algún usuario entra al sistema, un "shell" se inicia. El shell tiene la terminal como entrada y como
salida estándar. Este da inicio al teclear solicitud de entrada, carácter como un signo de pesos, el cual indica al
usuario que el shell está esperando un comando. En MS−DOS normalmente aparece la letra de la unidad,
seguida por dos puntos (:), el nombre del directorio en que se encuentra y por último el signo de "mayor que"
(>). Esto es: C:\>
5
5. Estructura de un Sistema Operativo
Internamente los sistemas operativos estructuralmente de se clasifican según como se hayan organizado
internamente en su diseño, por esto la clasificación más común de los S.O. son:
• Sistemas monolíticos:
En estos sistemas operativos se escriben como un conjunto de procedimientos, cada uno de los cuales puede
llamar a cualquiera de los otros siempre que lo necesite. Cuando se emplea esta técnica, cada procedimiento
del sistema tiene una interfaz bien definida en términos de parámetros y resultados, y cada una tiene la
libertad de llamar a cualquiera otra, si la última ofrece algún cálculo útil que la primera necesite.
Para construir el programa objeto real del sistema operativo cuando se usa este método, se compilan todos los
procedimientos individuales a archivos que contienen los procedimientos y después se combinan todos en un
solo archivo objeto con el enlazador.
En términos de ocultamiento de información, esencialmente no existe ninguno; todo procedimiento es visible
para todos (al contrario de una estructura que contiene módulos o paquetes, en los cuales mucha información
es local a un módulo y sólo pueden llamar puntos de registro designados oficialmente del exterior del módulo)
Esta organización sugiere una estructura básica del sistema operativo:
1.− Un programa central que invoque el procedimiento de servicio solicitado (Shell o Kernel)
2.− Un conjunto de procedimientos de servicios que realice las llamadas al sistema.
3.− Un conjunto de procedimientos de uso general que ayude a los procedimientos de servicio
• Sistemas en estratos:
Estos sistemas operativos se organizan como una jerarquía de estratos, cada uno construido arriba del que está
debajo de él. El primer sistema construido en esta forma fuel el sistema THE que se fabricó en Technische
Hogeschool Eindhoven de Holanda por E. W Dijkstra (1968) y sus alumnos. El sistema THE era un sistema
de lote para una computadora alemana, la Electrológica X8, que tenía 32K de palabras de 27 bits ( los bits
eran costosos en aquellos días)
El sistema tenía 6 estratos, estos se muestran en la siguiente tabla:
5
4
3
2
1
0
Operador de THE
Programas del usuario
Administración de Entrada/Salida
Comunicación entre el operador y el proceso
Administración de la memoria y el tambor magnético
Distribución del procesador y multiprogramación
− El estrato 0 trabajaba con la distribución del procesador, cambiando entre procesos cuando ocurrían
interrupciones o los relojes expiraban. Sobre el estrato 0, el sistema constaba de procesos secuenciales, cada
uno de los cuales podía programarse sin tener que preocuparse por el hecho de que múltiples procesos
estuvieran corriendo en un solo procesador. En otras palabras, el estrato 0 ofrecía la multiprogramación básica
de la CPU.
6
El estrato 1 realizaba el manejo de memoria. Este distribuía espacio para procesos contenidos en la memoria
central y en un tambor de 512K palabras que se usaba para contener partes de procesos (páginas) para las
cuales no había espacio en la memoria central. Sobre el estrato 1, los procesos no tenía que preocuparse de si
estaban en la memoria o en el tambor; el software del estrato 1 se hacía cargo de asegurar que las páginas se
trajeran a la memoria siempre que se necesitaran.
El estrato 2 manejaba la comunicación entre cada proceso y la consola de operador.
El estrato 3 se hacía cargo de manejar los dispositivos de E/S y de separar la información en flujo que entraba
y salí de ellos. Sobre el estrato 3 cada proceso podía trabajar con dispositivos de E/S abstractos con
propiedades agradables, en vez de dispositivos reales con muchas peculiaridades
El estrato 4 era donde se encontraban los programas de los usuarios. No tenían que preocuparse por el manejo
de los procesos, memoria, consola o E/S. El proceso operador del sistema se localizaba en el estrato 5.
MINIX
Este sistema operativo fue escrito por A. S. Tanenbaun para ser estudiado en universidades y a modo personal.
El autor lo escribió como una copia exacta de UNIX en su versión 7, ya que a partir de esta versión el código
de UNIX ya no era de manejo público. Es sistema operativo esta escrito íntegramente en C y se puede ejecutar
en Pc's compatibles sin necesidad de disco duro. Al ser una copia de UNIX posee todas sus características
como la capacidad de soportar multiusuario, multitarea, etc.
Al ser copia de UNIX las llamadas al sistema de minix cumplen con el Standard Posixx. En concreto minix
posee un total de 41 llamadas al sistema para ser utilizadas por lo programadores. Este conjunto de llamadas
se pueden dividir en dos grandes grupos: Las llamadas al sistema para la gestión de procesos y Las llamadas
al sistema para la gestión de ficheros. Estos dos grupos de llamadas son los más importantes ya que en minix
al igual que en UNIX todo el sistema se basa en procesos y ficheros.
El conjunto de llamadas para la gestión de procesos nos permiten la manipulación total de los procesos. Las
llamadas más importantes de este grupo son fork, que permite la creación de un proceso hijo, exec la cual
permite cambiar la memoria de un proceso, wait que hace que el proceso padres espere a que el hijo termine, y
exit que hace terminar a un proceso. Con estas cuatro llamadas principales y alguna más podemos conseguir
crear los procesos necesarios para ejecutar varias tareas sin que se produzcan enfrentamientos entre ellos.
Los procesos que se crean en minix necesitan comunicarse y en este sistema operativo la comunicación entre
procesos se realiza mediante señales y es por esto que también existe un grupo de llamadas que se encarga de
gestionar las señales. Este grupo de llamadas nos permite mandar señales de un proceso a otro y preparar a los
procesos para recibir las señales para de esta forma poderse comunicar.
El conjunto de llamadas para la gestión de ficheros es el más numeroso en minix y parece normal porque
todos los dispositivos en este sistema operativo se tratan como archivos. Este conjunto de llamadas nos
permite manejar totalmente los ficheros, proporciona funciones para crear , leer , escribir y cerrar ficheros así
como otro grupo de instrucciones que nos la creación de ficheros intermedios (tubos), para que se comuniquen
también los procesos, y funciones que nos permiten obtener información sobre los ficheros. Como he dicho
antes este grupo de llamadas es importante ya que al tomarse todos los dispositivos (teclado, impresora,
monitor..) como archivos esto nos proporciona independencia de los dispositivos que tengamos.
Existen tres grupos más de llamadas al sistema que se encargan de la gestión de directorios, protección y
gestión de tiempo.
El primero de ellos nos permite entre otras cosas establecer vínculos entre ficheros de esta forma un fichero se
7
encuentra en un directorio y puede ser compartido por los usuarios teniéndolo en sus directorios con nombres
distintos. El conjunto de llamadas también permite montar directorios, esto es muy importante ya que
significa que podemos montar un sistema de archivos y después desmontarlo como si no hubiera existido
nunca, y hacer referencias a archivos que se encuentran en diferentes directorios.
El segundo grupo encargado de la protección nos permite realizar operaciones sobre los permisos de los
ficheros y directorios y por ultimo el tercer grupo en el que cabe destacar la llamada TIMES que devuelve
información sobre el tiempo de procesador empleado por un proceso.
En relación a los objetivos principales del sistema operativo minix, los cuales eran ser un mini−unix, para ser
estudiado en las universidades, observamos que el conjunto de llamadas al sistema que realiza es muy
completo ya que permite, al igual que UNIX, multiusuario y multitarea con el conjunto de llamadas que
realiza para gestionar los procesos y ficheros. Además con las llamadas al sistema para la protección se
pueden proteger los ficheros más importantes.
En conclusión el sistema operativo minix tiene un conjunto de llamadas apropiado para los objetivos que se
plantearon Tanenbawn y sus alumnos cuando lo escribieron.
LINUX
El sistema operativo Linux nace en la Universidad de Helsinki, en Finlandia de las manos de Linux Trovalds
que contaba con la ayuda de muchos colaboradores expertos en Unix. Este sistema operativo en un principio
sólo fue un proyecto de aficionado de Linux Trovalds pero en la actualidad se ha convertido en uno de los
sistemas operativos mejor diseñados del mundo.
Éste es un sistema de libre distribución donde cualquier persona puede participar en la escritura del código.
Esto lo hace todavía más interesante porque todos los fuentes del sistema se pueden consultar y ver.
En lo referente a la arquitectura el sistema Linux en un principio se inspiraba en Minix y en la actualidad es
un clónico de Unix capaz de ejecutar el entorno gráfico X−windows, TCP/IP, Emacs, UUCP y software de
correo y News.
Linux es un sistema operativo completo multitarea u multiusuario como cualquier sistema Unix. Linux es
compatible con ciertos estándares como IEE, POSIX.1, System V y BSD.
Al ser un sistema operativo clónico de Unix, los conceptos sobre procesos y archivos son iguales que el , es
decir iguales que Minix. En Linux los dispositivos hardware son tratados como archivos y los software como
procesos. Es por esto que el conjunto de llamadas al sistema de Linux sea muy parecido al de minix si bien
Linux incluye más llamadas porque es un sistema operativo más completo capaz de soportar redes y entornos
gráficos si bien el entorno gráfico no forma parte del sistema operativo y se puede tener Linux en perfecto
funcionamiento sin X−windows.
La gestión de procesos en Linux y mínix se realiza de las misma forma y por tanto las llamadas al sistema que
se utilizan en los dos sistemas son las mismas. Utiliza la llamada fork() para la creación de procesos hijos y al
igual que minix execv() para cambiar la memoria del proceso hijo. Des esta forma consigue hacer que el padre
ejecute un código mientras que el hijo ejecuta otro diferente. En Línux también existe la llamada wait() para
que un padre espere a que el hijo termine de ejecutar un código. La llamada utilizada para que un proceso
termine es exit(). Existen otras llamadas más para la gestión de procesos pero estas son las principales. Estos
procesos pueden estar ejecutándose en paralelo y por tanto es necesario que puedan comunicarse para
establecer un orden de ejecución o simplemente para que de unos a otros puedan pasarse la información que
8
necesiten. Los procesos en Linux se pueden comunicar de dos formas mediante las señales o mediante
ficheros intermedios que reciben el nombre de tubos. Para el manejo de señales Linux proporciona una serie
de llamadas que permiten a los procesos enviar señales (kill) y prepararse para recibir señales signal, ya que si
un proceso recibe una señal para la que no está preparado este directamente hará exit. En cuanto a la
comunicación mediante tubos de esta forma los procesos pueden pasarse información, como he dicho antes
los tubos son ficheros intermedios y por tanto para leer y escribir en ello se utilizarán las llamadas al sistema
que permiten leer y escribir en ficheros. Para la creación de tubos la llamada al sistema que proporciona Linux
es pipe. Las llamadas al sistema para la gestión del sistema de ficheros de Linux son en este caso también las
mas numerosas. Existen llamadas que son muy parecidas en todos los sistemas operativos como son las de
crear (creat), cerrar (close), abrir (open), leer y escribir (read , write). También posee una llamada al sistema
que nos devuelve el estado del archivo, esta llamada es fstat y se utiliza mucho ya que también devuelve los
permisos de los archivos ya que en Linux como en Unix y en los demás sistemas que son multiusuario los
ficheros están protegidos según para quien los use. Relacionado con esto de los permisos tenemos un conjunto
de llamadas al sistema que nos permite cambiar los modos de los archivos así como saber que usuario pide
una operación sobre un archivo para saber si este tiene permiso para realizar la operación pedida o no. Estas
llamadas son: Chmod para cambiar los modos de un archivo y getuid, setuid, getgid y setgid para obtener
iformación sobre los usuarios.
Junto con las llamadas al sistema de gestión den sistema de ficheros tenemos también una serie de llamadas
para la gestión de directorios, estas llamadas entre otras cosas nos permiten , al igual que en minix crear
enlaces con ficheros así como montar sistemas de directorios con la orden mount. A parte de estas dos
operaciones también existen una serie de llamadas que nos permiten movernos por el árbol de directorios del
sistema como puede ser chdir.
Como se puede observar el sistema operativo Linux utiliza las mismas llamadas al sistema que el sistema
operativo minix y esto parece razonable ya que los dos son sistemas operativos que parten como base de Unix.
Pero Linux aparte es capaz , como he dicho antes de ejecutarse en modo gráfico utilizando las X−Windows,
las X no forman parte de S.O. pero en sí pero proporcionan un interfaz gráfico para el usuario. El modelo que
utilizan las X es el mismo que utiliza Amoeba o Windows NT, este es el modelo cliente servidor, en el que
procesos clientes (aplicaciones) realizan una serie de peticiones a procesos servidores que se encargan de
ejecutarlas y dar respuesta a los clientes. Además de esto Linux es un sistema opertivo que incorpora soporte
para redes y por tanto existen llamadas para gestionar esta red. De esta forma Linux se convierte en uno de los
sistemas operativos con un diseño muy robusto y estable que proporciona un amplio soporte.
AMOEBA
El sistema operativo Amoeba se originó en la universidad Vrije Universiteit, de Holanda en 1981, como un
proyecto de investigación del computo distribuido y paralelo. En principio fue diseñado por Andrew S.
Tanenmbaun y tres de sus estudiantes de doctorado. Lo novedoso de éste Sistema Operativo es que el
proyecto partió de un plan totalmente limpio, a diferencia de otros proyectos de investigación de S.O.
distribuidos que lo que hacían es partir de un S.O. existente le añadían uso de redes y un sistema compartido
de archivos. Partiendo de 0 desarrolló un sistema nuevo cuyo propósito era experimentar con nuevas ideas sin
tener que preocuparse pos la compatibilidad hacia atrás como por ejemplo hace Windows 95.
Uno de los objetivos principales era construir un sistema operativo distribuido y transparente, y otro era el de
proporcionar un colchón de prueba para la realización de una programación distribuida y paralela.
Existen varias características que diferencian totalmente a Amoeba de los demás sistemas operativos, como he
dicho antes Amoeba es un sistema distribuido y por tanto en Amoeba no existe el concepto de "máquina
origen". El Shell inicial se ejecuta en cierta máquina arbitraria pero los comandos en general no se ejecutan en
9
la misma máquina que el Shell, en lugar de esto el sistema busca automáticamente la máquina con menor
carga para ejecutar cada nuevo comando. Otra de las características que lo diferencian es que todos los
recursos pertenecen al Sistema, no son de usuarios específicos.
Éste sistema operativo esta basado en el modelo cliente servidor en el cual los clientes ( procesos de usuario)
realizan llamadas a los servidores para que les proporcionen lo pedido. Estos servidores son utilizados para
gestionas los objetos ya que en Amoeba todo esta considerado como un objeto que tiene predefinido una serie
de operaciones que se realizan sobre él. Se trata como objeto a los procesos, las CPU's, los archivos, los
directorios, los discos, etc. y por tanto existen servidores que se encargan de gestionar todo esto.
Además del concepto de Proceso amoeba soporta varios hilos de control dentro de un mismo proceso. Estos
hilos de control se encuentran dentro de un mismo espacio de memoria pero poseen su propia pila. Un proceso
con un sólo hilo es igual que un proceso en Minix o Linux , aunque en Amoeba los procesos se crean de
forma distinta a Minix y Linux. Amoeba permite crear un proceso nuevo específico donde la imagen de
memoria comience al principio, pero los procesos pueden ejecutarse en paralelo. Las llamadas para la gestión
de procesos más importantes son EXEC que realiza un RPC al servidor de procesos específico, GETLOAD
que regresa información sobre la velocidad de la CPU y STUM que permite que un hijo bloquee la ejecución
del proceso padre.
Para la gestión de los hilos existen llamadas para crear hilos y destruir hilos así como para la sincronización
de hilos. Estas llamadas realizan la misma función que las señales en Linux o Minix pero en este caso la
comunicación se realiza entre hilos y no entre procesos.
La gestión del sistema de archivos en amoeba la lleva a cabo el servidor de archivos que soporta las ordenes
más comunes para los archivos pero a diferencia de otros los archivos en Amoeba son inmutables y estos a su
vez puede estar comprometidos o no. Los archivos comprometidos no pueden ser modificados. Por otro lado
tenemos el servidor de directorios el cual como función principal tiene la de proporcionar una asociación entre
los nombres legibles para nosotros (código ASCII) y las posibilidades. Una de las llamadas más comunes que
se utilizan de este servidor es una que regresa el conjunto de posibilidades que corresponden a un nombre en
concreto. Para poder realizar copias de los objetos que proporciona el servidor de directorios se utiliza el
servidor de réplicas. Este servidor además de utilizarse para la función anterior permite también comprobar
los objetos que son útiles mediante la llamada TOUCH.
Existen varios modos de comunicación en Amoeba y por cada uno de ellos existe un servidor que se encarga
de gestionarlos.
La primera de ellas es la llamadas a procedimiento remoto RPC. Para realizar este tipo de comunicación el
servidor de RPC utiliza tres llamadas principalmente que son GET_REQUEST, PUT_REPLY y TRANS que
permite la comunicación entre clientes y servidores.
La segunda forma de comunicación en Amoeba es la comunicación en grupo y las llamadas que proporciona
para este tipo de comunicación nos permiten crear nuevos grupos, unir procesos a grupos existentes, enviar
información a grupos y una serie tareas más para gestionar esta comunicación.
La capa más baja es el protocolo de internet fast local(FLIP) que se utiliza para la transmisión real de
mensajes. FLIP está diseñado para su integración dentro del hardware por esta razón se le ha especificado un
interfaz preciso con la capa inmediatamente superior(RPC y Comunicación por grupo). Este interfaz consta de
nueve llamadas, siete para el tráfico de salida y dos para el tráfico de llegada.
Amoeba también posee un servidor de TC/IP que realiza las gestiones oportunas para comunicarse con
máquinas que no son Amoeba y con máquinas Amoeba a través de internet.
10
A parte de todos los servidores anteriores amoeba posee un servidor de arranque al cual utiliza llamadas para
comprobar que todos los servidores necesarios están en ejecución.
Con todo esto se observa que el sistema Operativo Amoeba es un sistema compartido ideal donde cada
usuario del sistema cree que está ejecutando el sistema en modo exclusivo pero en realidad no sabe donde se
están ejecutando sus procesos y donde está guardando sus archivos. Es por esto que uno de los bloque más
potentes de llamadas al sistema sea el de la comunicación.
WINDOWS NT
Windows NT es aparece en el mercado como la primera propuesta de la empresa Microsoft de construir un
sistema operativo serio capaz de competir con UNIX. La arquitectura de este sistema operativo no tiene nada
que ver con el otro sistema operativo de Microsoft para aplicaciones de 32 bits.
Uno de los objetivos principales que se propone Microsoft con el diseño de este sistema operativo es que
posea un núcleo tan pequeño como fuera posible y que en el estuvieran integrados alguno módulos que dieran
respuestas a algunas llamadas que necesariamente se tuvieran que ejecutar en modo privilegiado y que las
demás llamadas fueran atendidas por otras entidades. De esta forma se conseguiría tener un núcleo compacto
y estable.
Para realizar este diseño Microsoft, al igual que Amoeba, se basa en el modelo cliente servidor donde el
kernel se encarga de recibir llamadas y pasarlas a procesos servidores que se encargan de ejecutarlas. También
al igual que en Amoeba en Windows
NT todo son objetos los cuales poseen unos atributos y unas funciones específicas que se encargan de
modificar estos atributos. Los objetos son ficheros, procesos y dispositivos físicos a diferencia de Linux,
Mínix o Ms−Dos donde los dispositivos físicos son tratados como archivos.
Cómo he dicho anteriormente (en el punto referido a W95) en Windows las llamadas al sistema reciben el
nombre de API. Estas llamadas al sistema en Windows NT son atendidas principalmente por subsistemas, al
igual que pasaba con Amoeba con los servidores.
Existen varios subsitemas encargados de ejecutar las llamadas al sistema. Estos son:
El Subsistema win32 el cual es el más importantes de todos ya que no sólo atiende las aplicaciones nativas de
Windows NT, sino que para aquellos programas no Win32 reconoce su tipo y los lanza hacia el subsistema.
Este subsistema soporta una buena parte del Api Win32 y se encarga de todo lo relacionado con la interfaz
gráfica con el usuario (GUI), controlando las entradas del usuario y las salidas de la aplicación. Por otra parte
tenemos el subsistema Posix y el OS/2 que se ejecutan interaccionando con el Executive y se encargan de
proporcionar soporte para aplicaciones Unix y OS/2 respectivamente. Por ultimo tenemos dos subsistemas
más que son el de Proceso de inicio que se encarga de gestionar los usuarios locales así como los remotos, y el
subsistema de seguridad que interacciona con el de proceso de inicio atendiendo las peticiones de accesos al
sistema.
Por otra parte tenemos el Executive que no se trata del núcleo del sistema sino que dentro de él se encuentra el
núcleo del sistema, pero aparte esta formado pos otros servidores o administradores que se encargan también
de recibir las llamadas al sistema. Dentro de estos administradores tenemos el administrador de objetos, que
se encarga de crear, destruir y gestionar todos los objetos. Cómo he dicho antes en Windows NT la gran
mayoría de cosas son objetos, los procesos, los subprocesos (hilos de ejecución), ficheros, segmentos de
memoria, etc. Por esto existen llamadas que permiten crear y destruir objetos y éstas van a ser atendidas por
este servidor. También posee un administrador de procesos que, en colaboración que el administrador de
objetos se encarga de crear, destruir y gestionar los procesos y los subprocesos. Algunas de las llamadas que
11
poseemos para gestionar estos procesos son: SetThreadPriority que se encarga de poner una prioridad a los
procesos, CreateProcess que sirve para crear procesos( esta función recibe muchos parámetros y es
complicada), la llamada que poseemos para eliminar al procesos es ExitProcess. También poseemos llamadas
para la creación y destrucción de subprocesos (hilos), alguna de ellas son: CreateThread, para crear un
subproceso, y ExitThread y TerminateThread para la finalización de los subprocesos. Por otra parte los
procesos en windows NT al igual que en los demás S.O. (Excepto en Ms−Dos y W95) deben comunicarse
entre ellos. En Windows NT la comunicación entre procesos se puede realizar de varias formas, mediante
Semáforos, Mútex, Sucesos, archivos, procesos, subprocesos, entrada del terminal y notificación de cambio de
archivo. Es por esto que existen llamadas al sistema que nos permiten controlar todas estas clases de
comunicaciones entre procesos. Por ejemplo para crear y destruir mutex tenemos CreateMutex y
ReleaseMutex. Existe también un modo de comunicación entre subproceso que pertenecen a un mismos
proceso, como la comunicación entre hilos de amoeba, esta comunicación recibe el nombre de Sección critica
y también posee una serie de llamadas para controlarla.
Continuando con los administradores contenidos en el Executive también nos encontramos un
ADMINISTRADOR DE MEMORIA VIRTUAL que se encarga de gestionar la memoria(Este
administrador los explicaré detalladamente en capitulo dedicado a la gestión de memoria de los sistemas
operativos). Otro de los Administradores importantes para este capitulo es el ADMINISTRADOR DE
ENTRADA SALIDA. Este administrador se encarga de la gestión de la comunicación entre los distintos
drivers de dispositivo. Este subsistema contiene dentro de él, el administrador del sistema de ficheros. Este
administrador se encarga de gestionar el sistema de ficheros de Windows NT. Las llamadas que existen para
la gestión de ficheros las mismas que en los demás sistemas operativos. Estas llamadas nos permiten, abrir
ficheros, escribir en ficheros ( WriteFile), escribir en ficheros (WriteFile), etc. Los ficheros en Windows NT
también poseen bits de protección y existe una llamada para saber sus permisos, esta llamada es
GetFileIngormationByHandle. Como he dicho antes dentro del executive también se encuentra el núcleo
(KERNEL) del sistema y aparte un administrador que se encarga de la gestión de las llamadas a
procedimientos locales y remotos (RPC y LPC). El RPC y el LPC son iguales que el de Amoeba y sirve para
comunicar procesos servidores con procesos clientes, con la salvedad que LPC se utiliza para comunicar
procesos de la misma máquina y RPC entre máquinas diferentes.
Los objetivos de Windows NT son eran ser un sistema distribuido y tras ver todo esto nos damos cuenta que
tiene bastantes parecidos con el sistema operativo Amoeba. El conjunto de llamadas al sistema que Windows
NT (y las forma en que lo hace) es totalmente distinto al de Windows 95 y tras estudiar los dos sistemas
Windows 95 parece ser un sistema operativo hecho para no se qué.
MS−DOS
El sistema operativo Ms−dos aparece en el año 1981 como el primer operativo para microprocesadores de 16
bits. Este sistema operativo aparece por la necesidad de IBM de tener un sistema operativo para sus IBM−PC.
Fue realizado por la empresa Microsoft con el fin de tener un sistema operativo de propósito general, que
fuera ejecutable en máquinas con procesadores de intel.
En este sistema operativo la comunicación con el sistema se realiza al igual que en los anteriores mediante
llamadas al sistema. Estas llamadas al sistema realizan diversos servicios de MS−DOS, son realizadas
mediante interrupciones de forma que el programa puede emitir una interrupción que provocará la ejecución
de una rutina para manejo de interrupciones. Al igual que en los demás sistemas operativos las llamadas al
sistema de MS−DOS las podemos clasificar en varios grupos según las funciones que desempeñan.
MS−DOS no posee las llamadas fork y exec distintas, como Linux y Minix, sino que las agrupa en una misma
llamad LOAD_AND_EXEC, la razón de esto es porque en MS−DOS el shell guarda sus propios descriptores
de fichero después establece los del hijo y ejecuta al hijo, de esta forma no pueden coexistir procesos ya que el
shell espera a que el hijo termine y después restaura sus propios descriptores de fichero. Tampoco existe la
12
llamada wait y para que el padre sepa como termina el hijo tenemos la llamada GET_CHILD_STATUS. La
disposición de memoria de MS−DOS es más complicada que en sistemas como Unix y Linux y por esto el
conjunto de llamadas al sistema que se encarga de la administración de memoria es más complejo. En
MS−DOS existen llamadas para asignas, liberar y cambiar el tamaño de los bloques de memoria mientras que
en Linux por ejemplo esto se realiza mediante las funciones de las librerías de C y no desde el S.O.
Por ultimo tenemos el bloque más importante de llamadas que es el de la gestión de archivos, este bloque es
muy parecido al de Linux y Minix ya que al igual que estos, el sistema operativo considera todos los
dispositivos como archivos. Estas llamadas al sistema nos permiten crear y destruir ficheros, abrir ficheros,
etc. Pero en Ms−dos no hay protección de archivos, como en los demás Sistemas operativos, aunque existen
atributos para los archivos. Podríamos incluir dentro de este grupo de llamadas al sistema las relacionadas con
entrada y salida de datos ya que éstas son un conjunto de llamadas que nos permiten manejar archivos
especiales.
Como se puede observar en MS−DOS no existen llamadas para la gestión del tiempo y tampoco existen
llamadas que nos permitan montar sistemas de archivos ni nada por el estilo esto es debido a que la gestión de
archivos se hace de forma diferente. Tampoco encontramos llamadas que nos permitan la comunicación entre
procesos, cosa normal ya que en este sistema operativo no pueden coexistir procesos.
En resumen podemos decir que este sistema operativo contiene el más reducido grupo de llamadas al sistema
de todos y en consecuencia es el menos potente.
WINDOWS 95
Windows 95 se diseña como un sistema operativo de propósito general para mejorar la facilidad de uso con
respecto a Windows 3.11. Para ello se realiza una nueva interfaz de usuario de modo "intuitiva". El lo
referente al código de Windows 95 se escribe para poder ejecutar programas escritos en código de 32 bits.
Para que los programadores puedan escribir su código en este formato es preciso cambiar las llamadas al
sistema. El Windows 3.11 utiliza un conjunto de llamadas denominadas API(Application Programming
Interfaces). Para este nuevo sistema operativo se crea al API Win 32 que también es utilizado por Windows
NT aunque de un modo más desarrollado. Esta API Win 32 es compatible con la de Windows 3.11 y posee
más de 2.000 funciones y macros.
Los objetivos que se plantea microsoft para la creación de WIN 32 son : Amplio soporte lo cual significaba
hacerla compatible con la de Windows 3.11, Capacidad para ampliarla y dar soporte a las nuevas tecnologías
y que fuese adecuada para ajustarse a las diferentes plataformas de Hardware.
La parte incluida en Windows 95 de la API total es muy reducida ya que ésta consta de 2246 macros y
mensajes, de los que sólo 114 están en Windows 95.
Sobre la arquitectura un modo de funcionamiento de Windows 95 es muy difícil encontrar información pero
se puede observar que es de todos los sistemas operativos el que menos aprovecha las capacidades de la
máquina. En lo referente a las llamadas al sistema las API incluidas en Windows 95 son:
El API OLE que es el más importante y proporciona las llamadas para la gestión de objetos, El API de
consola que proporciona un entorno para aplicaciones que requieren características de E/S en modo carácter.
Aunque este API no está incluido por completo ya que windows 95 permite la gestión de una sola consola
mientras que windows NT permite la gestión de múltiples consolas. También existen otra serie de API más
como la de controles, descompresión, conexión lógica a red, comunicaciones, multimedia, y por último RPC
que da soporte para las llamadas al procedimientos remotos.
13
Documentos relacionados
Descargar