Está en la página 1de 7

INF151 Temática: Generalidades Clase 22/02/2021

Docente: Lic. Rubén Alcón López

ESTRUCTURA DE LOS SISTEMAS OPERATIVOS


Éstos surgen desde finales de los 50's. La construcción de un SO debe tener en cuenta dos tipos
de requisitos:
1) Requisitos de usuario: Un sistema fácil de usar y de aprender seguro rápido y adecuado
para el uso que se determine.
2) Requisitos del software: Considera tareas de: mantenimiento forma de operación
restricciones de uso eficiencia tolerancia frente a los errores y flexibilidad.

El objetivo de la estructuración del SO es buscar una organización interna que facilite la


comprensión incremente la portabilidad extensión y favorezca el mantenimiento de los Sistemas
Operativos.

Los Sistemas Monolíticos. (Estructuras Simples)


Es la estructura más simple para un Sistema Operativo. También llamados de Estructura Modular
fue concebido para proporcionar una máxima funcionalidad dentro del menor espacio posible; se
caracteriza porque no tienen una estructura clara; sus rutinas y funcionalidades (ej. manejo de
drivers sistemas de archivos gestión de memoria etc.) se encuentran agrupados en un solo
programa (el Sistema Operativo).

Este tipo de sistema está descrito como un conjunto de procedimientos o rutinas entrelazadas de
tal forma que cada una tiene la posibilidad de llamar a las otras rutinas cada vez que así lo
requiera. Las falencias en este tipo de estructura radica principalmente en la poca confiabilidad
lograda ya que todo el sistema -al no tener una estructura definida- se ejecuta todo en el mismo
nivel del núcleo (kernel) lo que lo hace altamente vulnerable.

Cuando falla un programa se produce un error en todo


el sistema; si se modifica el hardware por lo general
será necesario recompilar el kernel para poder
disponer de las nuevas funcionalidades; esto consume
tiempo y recursos porque la compilación de un nuevo
kernel puede durar varias horas y necesita de una
gran cantidad de memoria.

Considerando que en el espacio del kernel están incluidos todos los servicios básicos la estructura
monolítica presenta tres grandes inconvenientes: el tamaño del núcleo la falta de extensibilidad y
la dificultad de mantenimiento.

Los sistemas por capas o jerárquica (Estructura por niveles)


En esta estructura el Sistema Operativo queda definido modularmente por divisiones en capas o
niveles cuya organización está dada como una jerarquía de capas; cada una de ellas ofrece una
interfaz clara y bien definida la capa superior solamente utiliza los servicios y funciones que ofrece
la capa inferior es decir la capa n sólo se comunica para obtener lo requerido con la capa n - 1
donde la capa inferior es la más privilegiada.

El primer sistema construido de esta manera fue el sistema THE (Technische Hogeschool
Eindhoven) desarrollado en Holanda por E. W. Dijkstra (1968) y sus estudiantes. El sistema
original consta de 6 capas: Capa 5: Se encuentra la interfaz de usuario. Capa 4: Aloja los
programas de usuario. Capa 3: Se controlan los dispositivos E/S (entrada y salida) Capa 2: Se
administra la comunicación inter-proceso y la consola del operador. Capa 1: Administración de
memoria y discos. Capa 0: Correspondiente al Hardware realizando asignación del procesador
también alterna entre procesos cuando ocurren interrupciones o han expirado y proporciona
multiprogramación básica de la CPU.
Como ventajas de esta alternativa podemos mencionar que al tener una organización
modularizada otorga facilidad en la construcción y depuración del sistema. La facilidad de
construcción se respalda porque al existir división en módulos (capas) se produce una abstracción
del problema simplificándose solamente a la función que realiza el módulo correspondiente a una
capa N.

Con esta abstracción no es necesario saber detalles de


implementación de las capas inferiores -sólo se utilizan-. La
facilidad de depuración es más simple que la tarea de encontrar
errores en el código y corregirlos. Otro aspecto positivo relacionado
con la modularidad existente cuando ocurre un error o falla en una
de las capas no se compromete a todo el sistema sólo a la capa
relacionada con la falla. Con respecto a las desventajas de esta
organización la problemática se da por la dificultad de realizar la
división y definición de las funcionalidades ya que se tiene que
considerar que las capas superiores solamente pueden utilizar los
servicios de la capa que se encuentra en la parte inferior por lo
tanto se debe tener mucho cuidado en la planificación del sistema
para que exista un óptimo funcionamiento. Otra desventaja que podemos mencionar es el gasto
de tiempo que se genera en ir de una capa a otra cada capa implica un gasto extra.

Los sistemas de Micronúcleo o Microkernel


El Micronúcleo surge como una nueva forma de organización para un Sistema Operativo es un
término relacionado con el diseño del SO. En este tipo de sistema las funciones centrales son
manejadas por el núcleo (kernel) y la interfaz de usuario es manejada por el entorno (shell). El
Microkernel se encarga de todo el código de un sistema y de planificar los hilos (threads) con la
finalidad de ejecutar múltiples tareas.

Entre las ventajas de los Micronúcleos tenemos:


•Uniformidad de interfaces: los procesos disponen de una interfaz
única para las solicitudes (paso de mensajes).
•Portabilidad: reducción del tamaño de núcleo e implementación
casi todo en base a servidores en arquitecturas diferentes sólo será
necesario modificar el núcleo mejorando su portabilidad.
•Fiabilidad: es más fácil corregir fallas en un sistema pequeño ya
que se pueden realizar pruebas más rigurosas que en un sistema
mucho más grande.

Sistema Cliente-Servidor
La esencia de esta arquitectura es la presencia de procesos cliente y procesos servidor. En los
sistemas operativos modernos los sistemas cliente-servidor nacen con la finalidad de minimizar el
núcleo (kernel) trasladando el código de todos sus servicios a las capas superiores; y el núcleo
sólo deberá controlar la comunicación que se realiza mediante mensajes entre clientes y
servidores o servidores y hardware.

El objetivo de la arquitectura cliente - servidor es


desarrollar la mayoría de las funciones del sistema
operativo como procesos de usuario. Un proceso de
usuario llamado en este caso proceso cliente envía
una solicitud a un proceso servidor que realiza el
trabajo y devuelve la respuesta. El sistema
operativo se divide en partes donde cada una
controla una faceta del sistema entre ellos servicios
a archivos servicios a procesos servicios a
terminales o servicios a la memoria donde cada una es pequeña y controlable así al ejecutar los
procesos y si hay algún error en algún servidor este afectará sólo a dicha parte y no a toda la
máquina ya que no se tiene acceso al hardware.
Sistemas por módulos
La mayoría de los sistemas operativos modernos implementan este enfoque. Lo que caracteriza
este tipo de estructura es que el kernel se compone por módulos y cada uno de estos módulos se
encuentra separado de forma independiente tal que si alguno falla no afecta a los otros ni al
núcleo por ejemplo si el módulo de software que se encarga de controlar el proceso de Telnet en
una unidad se bloquea o es atacado sólo este proceso se verá afectado; el resto de las
operaciones siguen sus funciones habituales. Los módulos se pueden cargar dinámicamente en el
núcleo cuando se necesiten ya sea en tiempo de ejecución o durante el arranque del sistema.

El kernel dispone de los componentes


fundamentales y se conectan
directamente con servicios adicionales.
Otros componentes pueden cargarse
dinámicamente al núcleo; este enfoque
modular utiliza la programación orientada
a objetos. En general esta estructura se
parece bastante a la de capas pero es
mucho más flexible debido a que
cualquier módulo de esta estructura
puede llamar a otro. Es similar a la estructura de microkernel pues el kernel también tiene las
funciones esenciales pero éste es más eficiente pues no necesita un mecanismo de paso de
mensajes para comunicarse sólo interfaces conocidas.

FUNCIONES PRINCIPALES DE LOS SISTEMAS OPERATIVOS


1. Apoyar el PD a través de la explotación de recursos del computador. El sistema operativo (SO)
debe atender de manera eficiente todas las peticiones que lleguen al sistema de cómputo; es decir
que las tareas que demanda el PD sean realizadas –por parte del SO- de forma tal que los
resultados sean rápidos definitivos e íntegros.

2. Interfaz usuario máquina. Función básica que posibilita que el usuario explote los recursos del
computador en términos del lenguaje que utiliza. Existe diferentes paradigmas de interacción; el
de mayor preferencia es aquel basado en el concepto de “icono” o representación abstracta de
conceptos.

3. Manejo de Ficheros. La función del SO es abstraer las propiedades físicas del dispositivo de
almacenamiento proporcionando una unidad lógica de almacenamiento. El SO es responsable de:
creación y eliminación de ficheros creación y eliminación de directorios proporcionar primitivas
para la modificación de ficheros asignar/manejar permisos de acceso a ficheros realización de
copias de seguridad.

4. Manejo de Dispositivos de Entrada/Salida. La función del SO es abstraer las propiedades


físicas del dispositivo de Entrada/Salida así como coordinar y controlar el accesos a los mismos
por parte de múltiples procesos. Tareas específicas: manejo de memoria para acceso directo
buffering y acceso a memoria “cache” proporcionar la interfaz entre el usuario y el dispositivo
proporcionar la interfaz entre el sistema y el dispositivo.

5. Manejo de dispositivos remotos. La función del SO es proporcionar una interfaz de acceso a


dispositivos remotos conectados a través de líneas de comunicación.

6. Intérprete de Comandos. Proporciona la interfaz entre el usuario y el sistema operativo (Shell).


El shell o intérprete de órdenes o intérprete de comandos del SO es el programa que ofrece una
interfaz de usuario para acceder a los servicios del sistema operativo. Dependiendo del tipo de
interfaz que provea los shells pueden ser textuales gráficas u otras.

7. Carga y ejecución de programas. Los sistemas computacionales ofrecen diferentes alternativas


de atención a las tareas que presenta el usuario. Considerando el número usuarios que explotan
simultáneamente los recursos del computador podemos hablar de: sistemas monousuarios y
sistemas multiusuarios (2 o más usuarios); si consideramos las características arquitectónicas del
computador podemos hablar de: sistemas monoprocesadores y sistemas multiprocesadores (2 o
más procesadores); si consideramos el número de tareas que se ejecutan simultáneamente en el
computador podemos hablar de: paralelismo virtual o paralelismo real (este último es posible solo
en sistemas multiprocesadores).

En la actualidad es posible hablar de: ejecución remota o virtual de programas (cloud computing
proceso en la nube o servicio ofrecido por algún proveedor https://www.gob.mx/cms/uploads/attachment/file/228994/InterPARES_8_020617.pdf)
En cada una de estas alternativas de ejecución el programa debe estar cargado en la memoria del
computador anfitrión (modelo de computación Von Newman).

PnP (Plug and Play): es una tecnología para soportar la instalación de dispositivos que pueden
usarse inmediatamente después de conectarlos físicamente sin procesos adicionales. La
capacidad PnP viene integrada en los sistemas operativos modernos; para usarlo el BIOS del
computador así como las tarjetas de expansión deben también tener soporte para PnP. Esta
tecnología es el resultado de proyectos que buscaban cambiar el modelo de computación (v.gr.
Proyecto de la Quinta Generación otros).

Kernel: es el módulo central del sistema operativo. Es la parte que se carga primero y permanece
en memoria principal. Debido a esto es importante que el kernel sea lo más pequeño posible; pero
provea todos los servicios esenciales que requieren las otras partes del sistema operativo y las
aplicaciones. Normalmente el kernel es responsable por la administración de la memoria los
procesos las tareas y los discos. http://cc.etsii.ull.es/ftp/antiguo/SISOA/comp_kernel.pdf;
https://hpc.ac.upc.edu/PDFs/dir13/file000419.pdf

Driver: es un programa de bajo nivel encargado de atender a un dispositivo físico ejecutado como
resultado de invocación desde el sistema operativo

Paquetes de Software: son combinaciones de diferentes programas que forman parte de una
oferta comercial. Por ejemplo Microsoft Windows viene “empaquetado” con muchas herramientas
de software.

Archivo ejecutable (código objeto): Es un archivo cuyo contenido tiene un formato que el
computador puede ejecutar directamente. A diferencia de los archivos o códigos fuente los
ejecutables no pueden ser leídos por las personas. Para transformar el código fuente (programa
con las instrucciones) en código ejecutable se necesita pasarlo a través de un programa
compilador o ensamblador y añadirle rutinas de entrada/salida (tarea de los cargadores
enlazadores).

Código Abierto: Es una certificación estándar generada por la Open Source Initiative (OSI) indica
que el código abierto de un programa de computación está disponible para el público en general
libre de cargo.

Software Propietario: Se refiere a los programas que pertenecen y son controlados por alguien. En
la industria de la computación propietario es lo opuesto de abierto. Un diseño o técnica propietaria
es la que pertenece a una empresa y esto implica que no se han divulgado especificaciones que
podrían permitir que otras compañías duplicaran el producto.

Licencia de software: Permiso que se le otorga a un individuo o grupo para el uso de una pieza de
software. Casi todas las aplicaciones trabajan bajo la modalidad de darle una licencia al usuario
en lugar de venderle el programa. Existe una amplia gama de tipos de licencias de software.
Algunas se basan en el número de máquinas en las que se ejecutará el programa y otras en el
número de usuarios que lo pueden utilizar.
Software de dominio público: Se refiere a cualquier programa que no está sujeto a Derechos de
Autor. Este software es gratuito y se puede usar sin restricciones. Este término no es aplicable a
software con licencia freeware y shareware; estos últimos sí están sujetos a Derechos de Autor.

Freeware: Software protegido por Derechos de Autor pero liberado por el autor para su uso
gratuito. Aunque está disponible sin costo el autor retiene su derecho lo que significa que el
usuario no puede hacer con ese software nada que no esté expresamente permitido por el autor.
Generalmente se permite el uso pero no la venta.

Shareware: Software que se distribuye sobre las bases de un sistema de ética. La mayoría del
shareware se distribuye libre de cargo pero el autor generalmente solicita que se pague una
pequeña tarifa en caso de que al usuario le guste el programa y lo use con regularidad. Al
cancelar esa tarifa el usuario queda registrado con el productor y puede recibir asistencia y
actualizaciones. El shareware está sujeto a Derechos de Autor. Esto significa que no podemos
vender un producto shareware como nuestro a menos que lo sea.

Courseware: Software diseñado para usarse en un programa educativo.

Firmware: Es software (programas o datos) que se han escrito en la memoria ROM. El firmware es
una combinación de hardware y software. Las memorias ROM PROM y EPROM que tienen datos
o programas grabados son firmware

CONCEPTOS RELACIONADOS CON EL USUARIO DE SISTEMAS DE CÓMPUTO


Usuario: elemento (persona máquina) identificable por el sistema.
Sesión: conjunto de acciones desarrolladas por el usuario desde que entra (login) hasta que sale
(logout).
Programa: conjunto de instrucciones destinadas a resolver un problema.
Fichero: (o archivo) conjunto de datos relacionados almacenados en almacenamiento secundario.
Intérprete de órdenes: programa del sistema que recoge y manda ejecutar las órdenes del usuario.

CONCEPTOS RELACIONADOS CON EL USUARIO PROGRAMADOR


Llamadas al sistema: Mecanismo que utilizan los programas de aplicación para solicitar que el
sistema operativo haga algo.
Niveles de ejecución: Distintos modos de ejecución del procesador que determinan que
instrucciones se pueden ejecutar en cada momento. Los programas de usuario se ejecutan en
modo normal mientras que el código del sistema operativo lo hace en modo privilegiado.
Sistema de gestión de procesos: Programa encargado de crear eliminar suspender reanudar
comunicar y sincronizar procesos.
Sistema de gestión de memoria: Programa encargado de la memoria principal: Controla
particiones libres/ocupadas Asigna/libera espacios Gestiona accesos a la memoria principal.
Sistema de gestión de E/S: Programa encargado de los dispositivos de E/S. Permite compartirlos
de manera ordenada minimiza efectos de diferencia de velocidad uniforma el uso de distintos
dispositivos.
Sistema de gestión de ficheros: Programa encargado de los ficheros. Define: Concepto y tipos de
ficheros Gestiona almacenamiento y operaciones sobre archivos.
Núcleo (kernel) del sistema operativo: programa individual que siempre está cargado en memoria
principal y que se está ejecutando permanentemente en el computador contiene un conjunto de
funciones básicas que determinan cierta potencialidad en los sistemas operativos.
Proceso concurrente. Dos procesos son concurrentes cuando se ejecutan de manera que sus
intervalos de ejecución se solapan.
 Tipos de Concurrencia
 Concurrencia aparente: Hay más procesos que procesadores:
 Los procesos se multiplexan en el tiempo. Pseudoparalelismo. Se
aprovecha diferencia de velocidad de recursos del computador o se aplica
técnicas de pipeline.
 Concurrencia real: Cada proceso se ejecuta en un procesador.
 Se produce una ejecución en paralelo asignado trabajo a cada uno de los
procesadores; esto representa un Paralelismo real.

 Modelos de programación concurrente


 Multiprogramación con un único procesador. El sistema operativo se
encarga de repartir el tiempo de procesador entre los procesos
(planificación expulsiva/no expulsiva).
 Multiprocesador. Se combinan paralelismo real y pseudoparalelismo.
Normalmente existe más procesos que CPU’s.
 Ventajas de la ejecución concurrente
o Facilita la programación. Diversas tareas se pueden estructurar en
procesos separados.

Servidor: Proceso encargado de atender peticiones -procesos- que se generan en el sistema.


Acelera la ejecución de cálculos posibilita división de cálculos en procesos ejecutados en paralelo.
Mejora la interactividad de las aplicaciones; se pueden separar las tareas de procesamiento de las
tareas de atención de usuarios. Mejora el aprovechamiento de la CPU se aprovechan las fases de
E/S de una aplicación para procesamiento de otras.

Tipos de procesos concurrentes


Independientes. Procesos sin ninguna relación que se ejecutan concurrentemente; no
necesitan comunicarse no necesitan sincronizarse.

Cooperantes. Procesos con alguna interacción entre ellos que se ejecutan


concurrentemente. Pueden comunicarse entre si requieren un nivel de sincronización.

Interacciones entre procesos


• Acceso a recursos compartidos: Procesos que comparten un recurso Procesos que
compiten por un recurso.
• Comunicación. Procesos que intercambian información.
• Sincronización. Un proceso debe esperar a un evento en otro proceso.

Condiciones de Carrera
El funcionamiento de un proceso y su resultado debe ser independiente de su
velocidad relativa de ejecución con respecto a otros procesos.

Es necesario garantizar que el orden de ejecución no afecte al resultado. Solución:


Conseguir que un conjunto de instrucciones se ejecute de forma atómica.

Sección crítica: Segmento de código que manipula un recurso y debe ser ejecutado de forma
atómica. Se asocia a un recurso un mecanismo de gestión de exclusión mutua. Solamente un
proceso puede estar simultáneamente en la sección crítica de un recurso. Las secciones críticas
no están definidas (aparecen y desaparecen).

 Problemas de la sección crítica


 Interbloqueos. Se produce al admitirse exclusión mutua para más de un recurso.
Resultado: Ninguno puede avanzar Inanición (Un proceso queda indefinidamente
bloqueado en espera de entrar en una sección crítica.)

 Deadlocks (abrazos mortales/interbloqueo con muerte). Más de un proceso consigue


acceso a la región crítica.

Exclusión Mutua. Tarea ejecutada en los sistemas operativos que consiste en la necesidad de que
los procesos se excluyan a fin de que solo un proceso realice tareas en determinado tipo de
recursos. La exclusión mutua es necesaria debido a la cantidad limitada de recursos que dispone
el sistema computacional y a la gran cantidad de procesos que coexisten.
Condiciones para la exclusión mutua. Solamente un proceso puede estar simultáneamente en la
sección crítica de un recurso (garantizar la exclusión mutua). Debe ser posible que un proceso
que solicite acceso a una sección crítica no sea postergado indefinidamente. Cuando ningún
proceso esté en una sección crítica cualquier proceso que solicite su entrada lo hará sin demora.
No se puede hacer suposiciones sobre la velocidad relativa de los procesos ni el número de
procesadores. Un proceso permanece en su sección crítica durante un tiempo finito.

Sección Crítica: Proceso de control o sincronización que debe ejecutarse sin interrupción a fin de
que el PD sea correcto. Podemos decir que es un Mecanismo de Sincronización y control de
procesos.
 Cualquier mecanismo que solucione el problema de la sección crítica debe proporcionar
sincronización entre procesos.
– Cada proceso debe solicitar permiso para entrar en la sección crítica
– Cada proceso debe indicar cuando abandona la sección crítica.

Alternativas de implementación
 Desactivar interrupciones. El proceso no sería interrumpido. Sería válido en sistemas
monoprocesador.
 Instrucciones máquina. Test and set o swap. Implica espera activa. Son posibles inanición
e interbloqueo.
 Otra alternativa: Soporte del sistema operativo. Solución de Peterson. Solo para 2
procesos.

 Semáforos (Dijkstra). Asume que instrucciones P y V son atómicas y no interrumpibles.


Sincronización de procesos mediante un mecanismo de señalización sobre semáforo. Un
semáforo es una variable entera no negativa con tres operaciones asociadas.
o Iniciación semáforo.
o Operación (P): Decrementa el contador del semáforo.
 Si s<1 entonces El proceso se bloquea; en otro caso se decrementa
o Operación (V): Incrementa el valor del semáforo.
 Si s<=0 entonces Desbloquea un proceso y se incrementa s en 1

Problema Lectores-Escritores. Problema que se plantea cuando se tiene un área de


almacenamiento compartida. Múltiples procesos leen información. Múltiples procesos escriben
información simultáneamente.
 Condiciones:
– Cualquier número de lectores pueden leer de la zona de datos concurrentemente.
– Solamente un escritor puede modificar la información en un tiempo.
– Durante una escritura ningún lector puede realizar una consulta.
 Alternativas de Gestión. Los lectores tienen prioridad.
– Si hay algún lector en la sección crítica otros lectores pueden entrar.
 Un escritor solamente puede entrar en la sección crítica si no hay ningún proceso.
Problema: Inanición para escritores.
• Los escritores tienen prioridad.
– Cuando un escritor desea acceder a la sección crítica no se admite la entrada de
nuevos lectores.

Actividad. Caracterice las funciones que ofrece el SO de su computador relativo a las siguientes
tareas:
Levantar/Iniciar el sistema
Defragmentar el disco
Establecer nivel de uso del procesador
Contabilidad del sistema
Elabore reporte de 1 página relativa a su experiencia. Fuente tamaño 11

También podría gustarte