Professional Documents
Culture Documents
Tema 3
Tema 3
1
1. ELEMENTOS Y ESTRUCTURA DEL SISTEMA OPERATIVO
Para que esta protección sea posible, el sistema informático debe ser capaz de
ejecutar instrucciones en dos niveles diferentes:
2
Esto hace que el usuario piense en el navegador web o en el editor de
textos como partes del sistema operativo. Sin embargo, esta creencia es
errónea, ya que el navegador web, el procesador de textos e incluso la
propia interfaz gráfica que estamos utilizando forman parte del concepto
de software de aplicación. El verdadero sistema operativo se encuentra oculto
bajo estas y otras herramientas, haciendo de intermediario entre ellas y
el hardware del ordenador.
Los elementos que constituyen la mayoría de los sistemas operativos son los
siguientes:
• Gestor de procesos.
• Gestor de memoria virtual.
• Gestor de almacenamiento secundario.
• Gestor de entrada y salida.
• Sistema de archivos.
• Sistemas de protección.
• Sistema de comunicaciones.
• Programas de sistema.
• Gestor de recursos.
3
Estructura de un sistema operativo
Ahora que ya sabemos que el sistema operativo se divide en distintos elementos,
podemos plantearnos el modo en el que dichos elementos se organizan dentro
del sistema operativo para llevar a cabo su cometido. También será importante
para el diseño del sistema establecer qué componentes del mismo se ejecutan
en modo núcleo y cuáles en modo usuario.
• Monolítico.
• Micronúcleo.
• Núcleo híbrido.
Para añadir flexibilidad a esta estructura, los sistemas operativos modernos que
la utilizan (como es el caso de GNU/Linux) pueden cargar módulos ejecutables
de forma dinámica, permitiéndole actuar, en cierto modo, como un micronúcleo.
4
Sistemas operativos con estructura de micronúcleo
En este tipo de sistemas, el núcleo sólo contiene la implementación de servicios
básicos como el soporte de acceso a memoria de bajo nivel, la administración
de tareas y la comunicación entre procesos (también conocida como IPC, del
inglés, Inter-Process Communication).
5
2. FUNCIONES DEL SISTEMA OPERATIVO. RECURSOS
La estructura de un sistema operativo se divide en diferentes módulos que suelen
estar especializados en funciones concretas. Aunque antes hemos nombrado los
módulos más comunes, en este apartado nos vamos a centrar únicamente en
las funciones que realizan. En algunos casos existe una relación directa entre un
determinado módulo y una función concreta del sistema operativo. Sin embargo,
en otros casos, son varios los módulos que cooperan de algún modo para llevar
a cabo una función específica.
• Gestión de procesos.
• Gestión de memoria.
• Gestión de archivos.
En este tema (parte del tema) vamos a estudiar los dos primeros puntos.
6
3. GESTION DE PROCESOS
La idea fundamental que tenemos de un sistema informático consiste en un
dispositivo que es capaz de ejecutar ordenes agrupadas en forma de programas.
• Etc.
7
Dada su importancia, normalmente, los sistemas operativos se diseñan en torno
al modo en el que manejan los procesos, tratando de resolver de la mejor forma
posible las siguientes situaciones:
8
Podemos definir un ciclo de instrucción como el tiempo que emplea el
procesador en ejecutar una instrucción en lenguaje máquina y, de un modo
simplificado, podríamos dividirlo en dos pasos:
9
Por otro lado, cuando en un sistema informático disponemos de varios
procesadores (o incluso un único procesador con varios núcleos), pueden
ejecutarse varios procesos al mismo tiempo. A esta técnica la
llamamos multiproceso o multiprocesamiento. Cuando todos los procesadores
(o núcleos) actúan en igualdad de condiciones, hablamos de multiproceso
simétrico o SMP (del inglés Symmetric Multi-Processing). Cuando el sistema
dispone de procesadores con funciones especializadas, hablamos
de multiproceso asimétrico o AMP (del inglés, Asymmetric Multi-Processing).
10
¿Cómo se intercalan los procesos?
Ya hemos dicho más arriba que el procesador ejecutará el código perteneciente
a un módulo del sistema operativo, llamado Distribuidor, cada vez que un
proceso haya consumido su tiempo o haya solicitado algún servicio por el que
deba esperar. Así se evita que un proceso se apropie del procesador de forma
indefinida.
11
• En ejecución: En este estado se encontrará el proceso que ocupa la
atención del procesador en ese momento. Si el ordenador dispone de
varios procesadores, o varios núcleos, podrá existir un proceso en
ejecución por cada uno de los núcleos presentes.
• Bloqueado: En este estado estarán los procesos que han solicitado algún
servicio del sistema operativo y están esperando una respuesta.
12
Cuando se ejecuta el módulo del kernel que se encarga de parar la ejecución de
un proceso y realizar los cambios necesarios para que se ejecute un proceso
diferente, decimos que se ha producido un cambio de contexto.
13
Un cambio de contexto lleva a cabo las siguientes acciones:
14
Además, un proceso puede verse interrumpido abruptamente por diversos
motivos. Entre ellos, podemos encontrar los siguientes:
Planificación de procesos
15
Como cabe esperar, el módulo del sistema operativo que se encarga de esta
tarea se denomina Planificador (en inglés, Scheduler).
Ejemplo:
16
Primero el más corto, o SJF (del inglés, Shortest Job First)
17
Primero el de menor tiempo restante, o SRTN (del
inglés, Shortest Remaining Time Nex)
Aunque es un algoritmo muy eficaz para los procesos cortos, resulta difícil
predecir los intervalos de asignación del procesador e, incluso, puede haber
procesos largos que sufran de inanición, es decir, que no lleguen a ejecutarse
mientras existan procesos cortos esperando turno.
18
Por turnos, o Round Robin
Por lo tanto, la cola de procesos actúa como una estructura circular con
organización FIFO.
19
Planificación de Colas Múltiples, o MQS (Multilevel Queue
Scheduling)
Se emplea tanto en procesos interactivos como en procesos por lotes (en los
que no interviene el usuario) y es apropiativo. Consiste en fragmentar la cola de
procesos en estado Preparado en varias colas más pequeñas, de modo que
cada una puede estar administrada por un algoritmo de planificación diferente.
De este modo, cada proceso será asignado a una determinada cola en función
de sus características pudiendo tratar de manera diferente, por ejemplo, a los
procesos interactivos y a los procesos por lotes.
20
Procesos y servicios
En los sistemas operativos existe un tipo de proceso con características
particulares a los que suele llamarse Servicios. Este tipo de procesos suele
ejecutarse en segundo plano, es decir, sin que el usuario tenga constancia
directa de su presencia y, normalmente, esperan un tipo de suceso para ofrecer
una determinada prestación al usuario.
21
22
4. GESTION DE MEMORIA PRINCIPAL
Podemos entender la memoria principal como un inmenso casillero, que
almacena programas y datos. Cada una de las casillas está numerada (con una
dirección).
Los sistemas operativos modernos son, casi siempre, multiprogramados. Es
decir, ejecutan varios procesos de forma concurrente. Esto significa que la
memoria debe dividirse para darles cabida.
Cuanto más eficaz sea ese reparto, más procesos podrán ejecutarse a la vez,
lo que redundará en un mayor rendimiento (no debemos olvidar que el
procesador es el elemento más rápido del sistema y que el objetivo principal
consiste en que siempre tenga instrucciones listas para ser ejecutadas).
Además, la gestión de memoria deberá cumplir con las siguientes
necesidades:
• Protección: Debe evitarse que un proceso haga referencia a posiciones
de memoria de un proceso diferente.
23
Para que esto sea posible las referencias que hagan los programas a
direcciones de memoria deben ser lógicas y serán el hardware y el sistema
operativo quienes colaboren para realizar la traducción.
• Compartición: Debe existir la posibilidad de que varios procesos
compartan información a través de una zona de memoria compartida. Por
ejemplo, es más eficiente que varios procesos accedan al mismo código
de una biblioteca de funciones compartida (lo que
en Windows conocemos como DLL), que mantener varias copias de ésta.
Igual puede ocurrir con datos que manejen diferentes procesos.
Como dijimos al hablar de procesos, para que un programa pueda ejecutarse,
sus instrucciones y sus datos tendrán que estar presentes en la memoria
principal del sistema, lo que conocemos como memoria RAM. Como hemos visto
más arriba, planificando el uso del procesador, mejoraremos el rendimiento
general del sistema, pero esto implicará la necesidad de compartir la memoria
principal entre varios procesos de forma simultánea. Por lo tanto, una buena
administración de la memoria, repercutirá de forma inmediata en el
comportamiento de todo el sistema informático.
Como ya dijimos, para ejecutar una instrucción, habría que leerla desde la
memoria a un registro del procesador y decodificarla (averiguar qué significa). A
continuación, es posible que el sistema deba volver a la memoria para obtener
24
los datos implicados en la operación. Finalmente, es común que los resultados
obtenidos también haya que guardarlos en la memoria. Por todo ello, si la gestión
de la memoria no es adecuada, el rendimiento general del sistema se verá
inmediatamente disminuido.
25
Gestión de memoria con particiones fijas
Otra opción es disponer de una cola única y elegir las tareas que se
adapten a las particiones que quedan libres, aunque esto discrimina a las tareas
con menos requisitos, porque tienden a desperdiciar espacio.
26
En este tipo de esquema surge el concepto de intercambio (en
inglés, swapping), que consiste, básicamente en mover a memoria secundaria
(normalmente disco), los procesos que se encuentran bloqueados en espera de
un suceso. De esta forma, se puede dar cabida a nuevos procesos.
27
Gestión de memoria con particiones variables
28
En cualquier caso, el problema de esta idea es que, si hay múltiples
asignaciones y liberaciones de memoria, ésta tenderá a tener una
gran fragmentación externa.
Sin embargo, el problema se resuelve aplicando, cuando sea necesario,
un procedimiento de compactación de memoria, que consiste en desplazar los
bloques asignados hacia un extremo y uniendo a su vez todos los bloques libres
en uno más grande. Lógicamente, el tiempo que debe emplearse para realizar
esta tarea es su gran inconveniente.
29
Según lo que acabamos de decir, cada vez que un proceso (o una parte
de este), se descargue a memoria secundaria (o cada vez que se compacte la
memoria), al volver a ejecutarse, podrán haber cambiado las direcciones
físicas donde se encontraba. Este mecanismo recibe el nombre de Reubicación.
Ejemplo:
30
La estrategia utilizada cuando se carga un nuevo bloque en memoria es
la del mejor ajuste en primer lugar. Si falla, se crea un hueco mayor desplazando
los bloques en memoria hacia la dirección 0. Esta acción siempre empieza con
el bloque actualmente en la dirección de memoria más baja, y prosigue
únicamente hasta encontrar un hueco suficiente para el nuevo bloque. A partir
de ese momento, hay que cargar tres bloques de 500, 1200 y 200 (en ese orden).
Describir el contenido de la memoria una vez satisfechas las peticiones.
31
Después de la compactación han quedado libres 1400 palabras contiguas en un
único hueco, la suma de los tamaños de los bloques 5 y 6 son de 1400 por tanto
no habrá problema para la ubicación.
Paginación
32
Cabe esperar que, por término medio, la mitad del último marco de
página quede desocupado.
Como podrás suponer, este esquema necesita un método que traduzca
las direcciones virtuales a direcciones físicas, teniendo en cuenta la ubicación
real de cada marco de página. Este método se basa en la creación de una tabla
de páginas, para cada proceso, en el momento de cargarlo en memoria. En ella
se establecerá el paralelismo entre cada página y su marco de
página correspondiente.
33
Por lo tanto, las direcciones virtuales constarán de un número de página y un
desplazamiento dentro de ella. El número de página actuará como índice en
la tabla de páginas.
Además, es frecuente que el sistema operativo mantenga una lista de marcos de
página disponibles.
34
Dado que este método implica constantes traducciones de direcciones
virtuales a direcciones físicas, para evitar que el sistema sufra una importante
penalización de rendimiento, habrá que recurrir a un hardware específico para la
traducción.
Por otra parte, el sistema operativo dispondrá de un mapa de la memoria,
con una entrada por cada marco de página, donde se indique cuáles están libres
y cuáles ocupados.
https://www.youtube.com/watch?v=VaYk1m12OOM&ab_channel=ElprofeGarc
%C3%ADa
35
Segmentación
Por otra parte, al encontrarse cada bloque lógico del programa en un segmento
distinto, podría compartirse código entre diferentes programas de un modo
sencillo.
36
Ejemplo:
SEGMENTOS BASE LIMITE
0 219 600
1 2300 14
2 90 100
3 1327 580
4 1952 96
PROCESO S D
A 0 430
B 1 10
C 2 500
D 3 400
E 4 112
A
• Segmento 0
• Base 219
• Limite 600
• Desplazamiento 430
Desplazamiento<limite 430<600
B
• Segmento 1
• Base 2300
• Limite 14
• Desplazamiento 10
Desplazamiento<limite 10<14
37
C
38