Estructura de los sistemas operativos
2.1.1 Estructura monolítica.
Es la estructura de los primeros sistemas operativos
constituídos fundamentalmente por un solo programa compuesto de un conjunto de
rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra
(Ver Fig. 2). Las características fundamentales de este tipo de estructura son:
Construcción del programa final a base de módulos
compilados separadamente que se unen a través del ligador.
Buena definición de parámetros de enlace entre las
distintas rutinas existentes, que puede provocar mucho acoplamiento.
Carecen de protecciones y privilegios al entrar a
rutinas que manejan diferentes aspectos de los recursos de la computadora, como
memoria, disco, etc.
Generalmente están hechos a medida, por lo que son
eficientes y rápidos en su ejecución y gestión, pero por lo mismo carecen de
flexibilidad para soportar diferentes ambientes de trabajo o tipos de
aplicaciones.
2.1.2 Estructura jerárquica.
A medida que fueron creciendo las necesidades de los
usuarios y se perfeccionaron los sistemas, se hizo necesaria una mayor
organización del software, del sistema operativo, donde una parte del sistema
contenía subpartes y esto organizado en forma de niveles.
Se dividió el sistema operativo en pequeñas partes, de
tal forma que cada una de ellas estuviera perfectamente definida y con un claro
interface con el resto de elementos.
Se constituyó una estructura jerárquica o de niveles
en los sistemas operativos, el primero de los cuales fue denominado THE (Technische
Hogeschool, Eindhoven), de Dijkstra, que se utilizó con fines didácticos (Ver
Fig. 3). Se puede pensar también en estos sistemas como si fueran `multicapa’.
Multics y Unix caen en esa categoría. [Feld93].
En la estructura anterior se basan prácticamente la
mayoría de los sistemas operativos actuales. Otra forma de ver este tipo de
sistema es la denominada de anillos concéntricos o “rings” (Ver Fig. 4).
En el sistema de anillos, cada uno tiene una apertura,
conocida como puerta o trampa (trap), por donde pueden entrar las llamadas de
las capas inferiores. De esta forma, las zonas más internas del sistema
operativo o núcleo del sistema estarán más protegidas de accesos indeseados
desde las capas más externas. Las capas más internas serán, por tanto, más
privilegiadas que las externas.
2.1.3 Máquina Virtual.
Se trata de un tipo de sistemas operativos que
presentan una interface a cada proceso, mostrando una máquina que parece
idéntica a la máquina real subyacente. Estos sistemas operativos separan dos conceptos
que suelen estar unidos en el resto de sistemas: la multiprogramación y la
máquina extendida. El objetivo de los sistemas operativos de máquina virtual es
el de integrar distintos sistemas operativos dando la sensación de ser varias
máquinas diferentes.
El núcleo de estos sistemas operativos se denomina
monitor virtual y tiene como misión llevar a cabo la multiprogramación,
presentando a los niveles superiores tantas máquinas virtuales como se
soliciten. Estas máquinas virtuales no son máquinas extendidas, sino una
réplica de la máquina real, de manera que en cada una de ellas se pueda
ejecutar un sistema operativo diferente, que será el que ofrezca la máquina
extendida al usuario (Ver Fig. 5).
2.1.4 Cliente-servidor ( Microkernel)
El tipo más reciente de sistemas operativos es el
denominado Cliente-servidor, que puede ser ejecutado en la mayoría de las
computadoras, ya sean grandes o pequeñas.
Este sistema sirve para toda clase de aplicaciones por
tanto, es de propósito general y cumple con las mismas actividades que los
sistemas operativos convencionales.
El núcleo tiene como misión establecer la comunicación
entre los clientes y los servidores. Los procesos pueden ser tanto servidores
como clientes. Por ejemplo, un programa de aplicación normal es un cliente que
llama al servidor correspondiente para acceder a un archivo o realizar una
operación de entrada/salida sobre un dispositivo concreto. A su vez, un proceso
cliente puede actuar como servidor para otro.” [Alcal92]. Este paradigma ofrece
gran flexibilidad en cuanto a los servicios posibles en el sistema final, ya
que el núcleo provee solamente funciones muy básicas de memoria,
entrada/salida, archivos y procesos, dejando a los servidores proveer la
mayoría que el usuario final o programador puede usar. Estos servidores deben
tener mecanismos de seguridad y protección que, a su vez, serán filtrados por
el núcleo que controla el hardware. Actualmente se está trabajando en una
versión de UNIX que contempla en su diseño este paradigma.
2.2 Sistemas Operativos por Servicios
Esta clasificación es la más comúnmente usada y
conocida desde el punto de vista del usuario final. Esta clasificación se
comprende fácilmente con el cuadro sinóptico que a continuación se muestra en
la Fig. 6.
2.2.1 Monousuarios
Los sistemas operativos monousuarios son aquéllos que
soportan a un usuario a la vez, sin importar el número de procesadores que
tenga la computadora o el número de procesos o tareas que el usuario pueda
ejecutar en un mismo instante de tiempo. Las computadoras personales
típicamente se han clasificado en este renglón.
2.2.2 Multiusuarios
Los sistemas operativos multiusuarios son capaces de
dar servicio a más de un usuario a la vez, ya sea por medio de varias
terminales conectadas a la computadora o por medio de sesiones remotas en una
red de comunicaciones. No importa el número de procesadores en la máquina ni el
número de procesos que cada usuario puede ejecutar simultáneamente.
2.2.3 Monotareas
Los sistemas monotarea son aquellos que sólo permiten
una tarea a la vez por usuario. Puede darse el caso de un sistema multiusuario
y monotarea, en el cual se admiten varios usuarios al mismo tiempo pero cada
uno de ellos puede estar haciendo solo una tarea a la vez.
2.2.4 Multitareas
Un sistema operativo multitarea es aquél que le
permite al usuario estar realizando varias labores al mismo tiempo. Por
ejemplo, puede estar editando el código fuente de un programa durante su
depuración mientras compila otro programa, a la vez que está recibiendo correo
electrónico en un proceso en background. Es común encontrar en ellos interfaces
gráficas orientadas al uso de menús y el ratón, lo cual permite un rápido
intercambio entre las tareas para el usuario, mejorando su productividad.
2.2.5 Uniproceso
Un sistema operativo uniproceso es aquél que es capaz
de manejar solamente un procesador de la computadora, de manera que si la
computadora tuviese más de uno le sería inútil. El ejemplo más típico de este
tipo de sistemas es el DOS y MacOS?.
2.2.6 Multiproceso
Un sistema operativo multiproceso se refiere al número
de procesadores del sistema, que es más de uno y éste es capaz de usarlos todos
para distribuir su carga de trabajo. Generalmente estos sistemas trabajan de
dos formas: simétrica o asimétricamente. Cuando se trabaja de manera
asimétrica, el sistema operativo selecciona a uno de los procesadores el cual
jugará el papel de procesador maestro y servirá como pivote para distribuir la
carga a los demás procesadores, que reciben el nombre de esclavos. Cuando se
trabaja de manera simétrica, los procesos o partes de ellos (threads) son
enviados indistintamente a cualesquira de los procesadores disponibles,
teniendo, teóricamente, una mejor distribución y equilibrio en la carga de
trabajo bajo este esquema.
Se dice que un thread es la parte activa en memoria y
corriendo de un proceso, lo cual puede consistir de un área de memoria, un
conjunto de registros con valores específicos, la pila y otros valores de
contexto. Us aspecto importante a considerar en estos sistemas es la forma de
crear aplicaciones para aprovechar los varios procesadores. Existen
aplicaciones que fueron hechas para correr en sistemas monoproceso que no toman
ninguna ventaja a menos que el sistema operativo o el compilador detecte
secciones de código paralelizable, los cuales son ejecutados al mismo tiempo en
procesadores diferentes. Por otro lado, el programador puede modificar sus
algoritmos y aprovechar por sí mismo esta facilidad, pero esta última opción
las más de las veces es costosa en horas hombre y muy tediosa, obligando al
programador a ocupar tanto o más tiempo a la paralelización que a elaborar el
algoritmo inicial.
2.3. Sistemas Operativos por la Forma de Ofrecer sus
Servicios
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 accesa los
servicios. Bajo esta clasificación se pueden detectar dos tipos principales:
sistemas operativos de red y sistemas operativos distribuídos.
2.3.1 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
informació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 cinjunto de comandos o llamadas al sistema para
ejecutar estas operaciones, además de la ubicación de los recursos que desee
accesar. Por ejemplo, si un usuario en la computadora hidalgo necesita el
archivo matriz.pas que se localiza en el directorio /software/codigo en la
computadora morelos bajo el sistema operativo UNIX, dicho usuario podría
copiarlo a través de la red con los comandos siguientes: hidalgo% hidalgo% rcp
morelos:/software/codigo/matriz.pas . hidalgo% En este caso, el comando rcp que
significa “remote copy” trae el archivo indicado de la computadora morelos y lo
coloca en el directorio donde se ejecutó el mencionado comando. Lo importante
es hacer ver que el usuario puede accesar y compartir muchos recursos.
2.3.2 Sistemas Operativos Distribuídos
Los sistemas operativos distribuídos abarcan los
servicios de los de red, logrando integrar recursos ( impresoras, unidades de
respaldo, memoria, procesos, unidades centrales de proceso ) en una sola
máquina virtual que el usuario accesa en forma transparente. Es decir, ahora el
usuario ya no necesita saber la ubicación de los recursos, sino que los conoce
por nombre y simplementa los usa como si todos ellos fuesen locales a su lugar
de trabajo habitual. Todo lo anterior es el marco teórico de lo que se desearía
tener como sistema operativo distribuído, pero en la realidad no se ha
conseguido crear uno del todo, por la complejidad que suponen: distribuír los
procesos en las varias unidades de procesamiento, reintegrar sub-resultados,
resolver problemas de concurrencia y paralelismo, recuperarse de fallas de
algunos recursos distribuídos y consolidar la protección y seguridad entre los
diferentes componentes del sistema y los usuarios. [Tan92]. Los avances
tecnológicos en las redes de área local y la creación de microprocesadores de
32 y 64 bits lograron que computadoras mas o menos baratas tuvieran el
suficiente poder en forma autónoma para desafiar en cierto grado a los
mainframes, y a la vez se dio la posibilidad de intercomunicarlas, sugiriendo
la oportunidad de partir procesos muy pesados en cálculo en unidades más
pequeñas y distribuirlas en los varios microprocesadores para luego reunir los
sub-resultados, creando así una máquina virtual en la red que exceda en poder a
un mainframe. El sistema integrador de los microprocesadores que hacer ver a
las varias memorias, procesadores, y todos los demás recursos como una sola
entidad en forma transparente se le llama sistema operativo distribuído. Las
razones para crear o adoptar sistemas distribuídos se dan por dos razones
principales: por necesidad ( debido a que los problemas a resolver son
inherentemente distribuídos ) o porque se desea tener más confiabilidad y
disponibilidad de recursos. En el primer caso tenemos, por ejemplo, el control
de los cajeros automáticos en diferentes estados de la república. Ahí no es
posible ni eficiente mantener un control centralizado, es más, no existe
capacidad de cómputo y de entrada/salida para dar servicio a los millones de
operaciones por minuto. En el segundo caso, supóngase que se tienen en una gran
empresa varios grupos de trabajo, cada uno necesita almacenar grandes
cantidades de información en disco duro con una alta confiabilidad y
disponibilidad. La solución puede ser que para cada grupo de trabajo se asigne
una partición de disco duro en servidores diferentes, de manera que si uno de
los servidores falla, no se deje dar el servicio a todos, sino sólo a unos
cuantos y, más aún, se podría tener un sistema con discos en espejo ( mirror )
a través de la red,de manera que si un servidor se cae, el servidor en espejo
continúa trabajando y el usuario ni cuenta se da de estas fallas, es decir,
obtiene acceso a recursos en forma transparente.
2.3.2.1 Ventajas de los Sistemas Distribuídos
En general, los sistemas distribuídos (no solamente
los sistemas operativos) exhiben algunas ventajas sobre los sistemas
centralizados que se describen enseguida.
• Economía: El cociente precio/desempeño de la suma
del poder de los procesadores separados contra el poder de uno solo
centralizado es mejor cuando están distribuídos.
• Velocidad: Relacionado con el punto anterior, la
velocidad sumada es muy superior.
• Confiabilidad: Si una sola máquina falla, el sistema
total sigue funcionando.
• Crecimiento: El poder total del sistema puede irse
incrementando al añadir pequeños sistemas, lo cual es mucho más difícil en un
sistema centralizado y caro.
• Distribución: Algunas aplicaciones requieren de por
sí una distribución física.
Por otro lado, los sistemas distribuídos también
exhiben algunas ventajas sobre sistemas aislados. Estas ventajas son:
• Compartir datos: Un sistema distribuído permite
compartir datos más fácilmente que los sistemas aislados, que tendrian que
duplicarlos en cada nodo para lograrlo.
• Compartir dispositivos: Un sistema distribuído
permite accesar dispositivos desde cualquier nodo en forma transparente, lo
cual es imposible con los sistemas aislados. El sistema distribuído logra un
efecto sinergético.
• Comunicaciones: La comunicación persona a persona es
factible en los sistemas distribuídos, en los sistemas aislados no. _
Flexibilidad: La distribución de las cargas de trabajo es factible en el
sistema distribuídos, se puede incrementar el poder de cómputo.
2.3.2.2 Desventajas de los Sistemas Distribuídos
Así como los sistemas distribuídos exhiben grandes
ventajas, también se pueden identificar algunas desventajas, algunas de ellas
tan serias que han frenado la producción comercial de sistemas operativos en la
actualidad. El problema más importante en la creación de sistemas distribuídos
es el software: los problemas de compartición de datos y recursos es tan
complejo que los mecanismos de solución generan mucha sobrecarga al sistema
haciéndolo ineficiente. El checar, por ejemplo, quiénes tienen acceso a algunos
recursos y quiénes no, el aplicar los mecanismos de protección y registro de
permisos consume demasiados recursos. En general, las soluciones presentes para
estos problemas están aún en pañales.
Otros problemas de los sistemas operativos
distribuídos surgen debido a la concurrencia y al paralelismo. Tradicionalmente
las aplicaiones son creadas para computadoras que ejecutan secuencialmente, de
manera que el identificar secciones de código `paralelizable’ es un trabajo
ardúo, pero necesario para dividir un proceso grande en sub-procesos y
enviarlos a diferentes unidades de procesamiento para lograr la distribución.
Con la concurrencia se deben implantar mecanismos para evitar las condiciones
de competencia, las postergaciones indefinidas, el ocupar un recurso y estar
esperando otro, las condiciones de espera circulares y , finalmente, los
“abrazos mortales” (deadlocks). Estos problemas de por sí se presentan en los
sistemas operativos multiusuarios o multitareas, y su tratamiento en los
sistemas distribuídos es aún más complejo, y por lo tanto, necesitará de
algoritmos más complejos con la inherente sobrecarga esperada.
Por otro lado, en el tema de sistemas distribuídos
existen varios conceptos importantes referentes al hadware que no se ven en
este trabajo: multicomputadoras, multiprocesadores, sistemas acoplados débil y
fuertemente, etc. En [Tan92] páginas 366 - 376 puede encontrarse material
relacionado a estos conceptos.
Leer y usar cuidadosamente todas estas
instrucciones y videos para construir un valioso trabajo en formato DIGITAL,
suerte.
Competencias Digitales (Tic’s Basicas) a practicar con este TEMA:
- Usar www.Google.com para buscar y
localizar UN material academico apropiado y que se pueda recomendar para
el tema, ver VIDEO BUSQUEDAS abajo en esta pagina.
- En el post ( o tema )
apropiado en el Libro de Blogger, pegar el material localizado y que se
recomienda para este tema, ver VIDEO BLOGGER abajo en esta pagina.
pd: Recordar incluir la fuente del tema usando el
formato de citacion apropiado, ver VIDEO WIKIPEDIA abajo en esta pagina.
- En el editor de Blogger usar colores para destacar los parrafos mas
importantes y usar subrayados para las citas mas relevantes.
- En el post ( o tema ) apropiado
en el libro en Blogger, para incluir ecuaciones o notacion matematica se
debera usar el icono del editor de Blogger IMAGE y construir esta notacion
matematica con imagenes Latex, ver VIDEO LATEX ABAJO.
- Construir al final y despues de la fuente del material, un breve
resumen ( no mas de 2–3 parrafos) explicando palabras propias el contenido
del tema.
pd: Se pueden usar alguna de las citas que encontradas
dentro del tema, solo recordar encerrarla entre comillas.
pd: Se pueden usar tambien cambios en fonts para darle
mas visibilidad, consistencia y relevancia al resumen del tema.
- PUNTOS EXTRAS Si se usa una segunda fuente valiosa de informacion y
recordar encadenar los dos materiales mediante uno o dos parrafos
apropiados.
- Enviar a el maestro o compañeros un correo electronico que incluya la
liga a el tema en blogger para revision, recomendacion, sugerencias y
evaluacion, ver VIDEO LIGAS GMAIL abajo.
- Sacar una cuenta (click en)http://docs.google.com, usando el correo
de Gmail y tratar de conseguir el mismo usuario que se construyo en Gmail
y Blogger ver VIDEO GOOGLE DOCS abajo en esta pagina.
pd: Si ya se tiene una cuenta ignorar esta competencia
digital.
pd: Google Docs es el equivalente a OFFICE pero con la
caracteristica que todos sus componentes ( procesador de palabras, presentacion
electronica y hoja de calculo) estan completamente en internet, es decir todos
los archivos o material estaran en linea, seguros y siempre disponibles, ademas
de que se pueden trabajarlos desde cualquier pc, ya sea la personal, la del
laboratorio de la escuela o la de un lugar publico como la biblioteca o un cafe
internet.
- Construir una Presentacion Electronica ( usando muy pocos slides) del
tema en GOOGLE DOCS e incrustrarla en el tema de
bloger ver VIDEO GOOGLE DOCS en esta pagina abajo.
pd: Recordar que una presentacion electronica, es
solamente un resumen muy condensado del
tema ( o mapa o guia mental ), que ayuda a recordar los elementos y conceptos
mas basicos del tema, cuando se estan exponiendo frente a un grupo.
pd: No olvidar incluir un primer slide con el titulo
de la presentacion electronica, un segundo slide con un indice de la
presentacion electronica y un ultimo slide con dos o tres parrafos de
conclusiones y bibliografia.
- Buscar en Google Imagenes o www.Flickr.com o www.PhotoBucket.com una galeria de
fotos o de imagenes apropiadas al tema actual,
- Para los casos de Photobucket y Flicker, ambos sitios proporcionan
ligas a sus imagenes y tambien objetos (los recuerdan??), que se pueden
incluir en el tema del libro apropiado en Blogger.
pd: para estos sitios deberan obtener una cuenta
usando el correo de gmail y de preferencia obtener el mismo usario que se ha
venido manejando a lo largo del curso.
pd: Tratar de usar resoluciones y tamaños de imagenes
chicos o medianos, recordar que todo este material termina en el post del tema en Blogger y esa pagina no tiene mucho
espacio para desplegar fotos o imagenes.
pd: El formato apropiado para fotos o imagenes es JPG, tratar de no usar otros formatos.
pd: Se puede construir y conseguir esta coleccion o
galeria de imagenes con:
1) Usando Google Imagenes, recordar conseguir solo
imagenes que tengan permiso de publicacion abierto, no usar imagenes o fotos que
tengan derechos reservados.
pd: Estas fotos almacenarlas en un folder en el
desktop o escritorio de su computadora y subirlas a el post en blogger usando
el icono IMAGE del editor de Blogger.
2) Flickr y Photo Bucket tambien tienen una gran
cantidad de imagenes que se pueden usar o mejor dicho enlazar a el tema o post en Blogger.
3) Tambien se puede usar la camaras digitales o las
camaras de sus telefonos celulares.
4) Tambien se puede usar el programa o aplicacion
llamado Srip32.exe( solo buscar srip32 en google) bajarlo e instalarlo, este
programa permite capturar una pantalla de la pc, es decir si se encuentra un
sitio con imagenes o incluso texto apropiado o relevante al tema, capturar la
pantalla con srip32 y ya se tendra la imagen, ver VIDEO Srip32 abajo.
- Incluir al menos una imagen de cada uno de los dos sitios (flickr y
Photobucket) en el tema o post que se esta
construyendo en Blogger.
- PUNTOS EXTRAS Si se incluyen una galeria completa de imagenes
apropiadas desde cualquiera de estos sitios de FLICKR o Photobucket.
- Sacar una cuenta (click en)www.DivShare.com, usando el
correo de Gmail y tratar de conseguir el mismo usuario que se consiguio en
Gmail y Blogger y Flickr ver VIDEO DIVSHARE abajo en esta pagina.
pd: Si ya se tiene una cuenta ignorar esta competencia
digital.
pd: Usar Divshare para almacenar material en audio
(MP3) apropiado a el tema ( no usarlo para almacenar material comercial o les
suspenden la cuenta)
pd: El material en Audio, con formato MP3 se debera
producir usando un microfono en la pc y programas de aplicacion apropiados,
llamados editores de audio, un ejemplo de ellos es el SOUND RECORDER que ya
viene en Windows, pero se recomienda usar mejor AUDACITY ( solo buscar en
google AUDACITY) bajarlo e instalarlo, ver VIDEO AUDACITY abajo.
- Crear al menos dos archivos de audio mp3:
1) El primero de ellos sera la lectura completa de
este tema en voz apropiada. ( o aprender a editar con audacity la voz)
2) El segundo de ellos sera un resumen del tema. (
buena voz o editarla con audacity)
3) Ambos archivos subirlos a Div Share (recordor que
tienen que ser MP3) y el reproductor que proporciona gratis Div Share, ver
VIDEO DIVSHARE abajo e insertarlo en el lugar apropiado del tema que se esta
construyendo en Blogger.
4) Ejemplo del reproductor incrustado en una pagina:
- Sacar una cuenta (click en)www.YouTube.com, usando el
correo de Gmail y tratar de conseguir el mismo usuario que se consiguio en
Gmail y Blogger y Flickr.
pd: Si ya se tiene una cuenta ignorar esta competencia
digital.
- Para producir video se pueden usar tres fuentes:
1) Localizar Videos apropiados en Youtube.
2) Usar nuestras camaras digitales o nuestros telefonos
celulares para producir video.
3) Producir un video de la propia pantalla de la
computadora ( muy similar a lo que se hizo con Srip32) pero usando un programa
especializado en video, tal como CAMSTUDIO (click en www.CamStudio.org) bajar e instalar ( no olvidar bajar e
instalar el CODEC que esta abajo en el mismo sitio.
3.1) para Usar Camstudio solo recordar que es muy
similar a Srip32 Solo que el resultado final es un archivo de video AVI.
- Producir un video de resumen del tema (usar camstudio con el fondo de
la pagina con el tema e irlo comentando en voz apropiada)
- Producir un video en vivo con la exposicion del tema ( pueden usar la
presentacion electronica de fondo o cualquier otro material, pizarron,
filminas, rotafolios, etc.)
- Subir los videos a su cuenta en Youtube e incluirlos o ligarlos en la
pagina en Blogger, tambien los pueden subir directamente a BLOGGER ver
VIDEO BLOGGER VIDEO abajo.
Saludos y suerte prof Lauro Soto, Ensenada, BC,
Mexico.