Hilos, Mps, Microkernel Flashcards
multiprocesamiento simétrico (SMP)
Debido a que los núcleos de un procesador multinúcleo son exactamente iguales, a esto se le denomina así.
A estos “procesadores con más de un procesador” se les conoció como:
“procesador multinúcleo”
Son capaces de ejecutar diversos procesos de forma simultánea y, además, comparten una misma memoria para el cumplimiento de sus funciones
Sistemas Multiprocesamiento
Los hilos de ejecuciónson son conocidos como:
procesos ligeros (LWP, Lightweight processes).
Un SMP es un computador con las siguientes características
-Tiene dos o más procesadores similares de capacidades comparables.
-Los procesadores comparten la memoria principal y la E/S
- Todos los procesadores comparten los dispositivos de E/S, pero pueden hacerlo bien a través de los mismos canales, o bien a través de otros caminos de acceso al mismo dispositivo.
- Todos los procesadores pueden desempeñar las mismas funciones
- El sistema está controlado por un sistema operativo que posibilita la interacción entre los procesadores y sus programas.
Ventajas potenciales de un SMP respecto a una arquitectura monoprocesador:
-Prestaciones: proporcionará mejores prestaciones que uno con un sólo procesador del mismo tipo.
- Disponibilidad
- Crecimiento incremental
- Escalado
Un hilo (thread o proceso de peso liviano) es:
una unidad básica de utilización de CPU, consiste de: contador de programa, conjunto de registros, espacio de pila
Hilos a nivel e usuario:
son implementados en alguna librería. Estos hilos se gestionan
sin soporte del SO, el cual solo reconoce un hilo de ejecución.
Hilos a nivel de kernel:
el SO es quien crea, planifica y gestiona los hilos. Se
reconocen tantos hilos como se hayan creado.
Manipulación de datos que requiere la garantía de que se ejecutará como una sola unidad de ejecución, o fallará completamente, sin resultados o estados parciales observables por otros procesos o el entorno
Operación atómica
El área de código que requiere ser protegida de accesos simultáneos donde se realiza la modificación de datos compartidos.
Sección (o región) crítica
Categoría de errores de programación que involucra a dos procesos que fallan al comunicarse su estado mutuo, llevando a resultados inconsistentes
Condición de carrera (Race condition)
Recurso compartido
Un recurso al que se puede tener acceso desde más de un proceso
Uso de Bandera
mediante una variable de bandera se indica si hay un proceso en la región crítica,
Es un mecanismo que asegura que cierta región del código será ejecutada como si fuera atómica.
Mantiene en espera a cualquier hilo o proceso que quiera entrar a la sección crítica protegida por el ___________, reteniéndolo antes de entrar a ésta hasta que el proceso que la está ejecutando salga de ella.
mutex o candado (lock).
Es una construcción de programación que actúa como una señal o un contador para controlar el acceso a un recurso compartido. Es una variable de tipo entero que indica cuántas unidades del recurso están disponibles
Semáforo
Cuando hay concurrencia, además de asegurar la atomicidad de ciertas operaciones, es necesario evitar dos problemas que son consecuencia natural de la existencia de la asignación de recursos de forma exclusiva:
Bloqueo mutúo e inanición
Paso de mensajes
Permite a los procesos intercambiar mensajes, el sistema operativo debe proporcionar al menos dos llamadas al sistema similares a:
send( message ) y receive( &message )
Comando de linux que produce una instantánea de todos los procesos en ejecución.
El comando ps
Su tarea consiste en llevar un registro de las partes de memoria que se estén utilizando y las que no, con el fin de asignar espacio en memoria a los procesos cuando éstos la necesiten y liberándola cuando terminen, así como administrar el intercambio entre la memoria principal y el disco.
Administrador de memoria
Funciones de administrador de memoria
Control de que partes de la memoria están utilizadas o libres.
Asignar memoria a procesos y liberarla cuando terminan.
Administrar intercambio entre memoria y disco (Memoria Virtual)
Tipo de asignación de memoria en a que un programa se divide en varios bloques o “segmentos” que pueden almacenarse en direcciones que no tienen que ser necesariamente adyacentes, por lo que es más compleja pero más eficiente
“asignación no contigua”
Asignación de memoria en la que cada programa ocupa un bloque contiguo y sencillo de localizaciones de almacenamiento
“asignación contigua”
algoritmo de reemplazo de páginas de Linux
se basa en el algoritmo del reloj, que, en caso de ser el sencillo, se asocia un bit de uso y un bit de modificación a cada página de la memoria principal. Utiliza una variable edad que, cada vez que se accede a la página, se incrementa la variable y recorre periódicamente la reserva de páginas globales y disminuye la variable de edad de cada página cuando rota por todas las páginas de la memoria principal.
Pagiación por demanda
Significa que, para comenzar a ejecutar un proceso, el sistema operativo carga solamente la porción necesaria para comenzar la ejecución , y que a lo largo de la ejecución, el paginador sólo carga a memoria las páginas cuando van a ser utilizadas.
La memoria se divide en varias particiones de tamaño fijo, del mismo tamaño o de tamaño diferente. Cada partición puede contener exactamente un proceso
Particiones fijas
Desventajas de particionamiento fijo en memoria
Un programa podría ser demasiado grande para caber en una partición. En este caso, el programador debe diseñar el programa con el uso de overlays.
La utilización de la memoria principal es extremadamente ineficiente. fragmentación interna.
Consiste en particiones de memoria de tamaño variable, es decir, a cada proceso se le asigna la cantidad de memoria que necesita.
Particionamiento dinámico
Desventajas de particionamiento dinámico de memoria
Fragmentación externa
Segmentación
Divide la memoria en segmentos, cada uno de los cuales tiene una longitud variable, que está definida intrínsecamente por el tamaño de ese segmento del programa.
Algunas ventajas de segmentación
Ayuda a incrementar la modularidad de nuestro programa,incluso facilita el proceso de carga.
El programador puede conocer las unidades lógicas de su programa, dándoles un tratamiento particular.
Es posible compilar módulos separados como segmentos
Paginación
Consiste en dividir la memoria en un conjunto de marcos de igual tamaño, cada proceso se divide en una serie de páginas del tamaño de los marcos fijo
En la paginación, si todos los marcos están ocupados, ¿qué debe de hacer el sistema?
el sistema deberá encontrar una página que pueda liberar y llevarla al espacio de intercambio en el disco.
¿qué se hace ante un fallo de página?
hay que localizar la página solicitada en el disco, cargarla en memoria y reiniciar la instrucción.
Paginación por demanda
Se trae una página a la memoria principal sólo cuando se hace referencia a una posición en dicha página.
Paginación previa
Se cargan otras páginas distintas a las demandadas debido a un fallo de página. Esta política no es efectiva si la mayoría de las páginas extra que se traen no se referencian.
POLÍTICAS DE UBICACIÓN
Tiene que ver con determinar dónde va ha residir una parte de un proceso en la memoria principal. Es un aspecto importante del diseño en un sistema puro de segmentación.
POLÍTICAS DE REEMPLAZO
Trata de la selección de la página a reemplazar en la memoria principal cuando se debe cargar una nueva página.
Política De Vaciado
se preocupa de determinar el momento en que hay que escribir en la memoria secundaria una página modificada.
concurrencia
a dos o más eventos cuyo orden es no determinista, esto es, eventos acerca de los cuales no se puede predecir el orden relativo en que ocurrirán.
Producto de la entrada y salida de procesos en la memoria, se van generando porciones cada vez más pequeñas de la memoria sin utilizar, lo que se conoce como
Fragmentación externa
Microkernel
estilo arquitectónico, permite crear aplicaciones extensibles, mediante la cual es posible agregar nueva funcionalidad mediante la adición de pequeños plugins que extienden la funcionalidad inicial del sistema.
Los ejemplos más claros de esta arquitectura Microkernel son
los IDE’s de desarrollo como Eclipse, Netbeans, Visual Studio, Visual Studio Code