You are on page 1of 5

planicicacion de procesos

Podemos definir a la planificación como un conjunto de políticas y mecanismos


incorporados al sistema operativo, a través de un módulo denominado planificador, que
debe decidir cuál de los procesos en condiciones de ser ejecutado conviene ser
despachado primero y qué orden de ejecución debe seguirse.

Modelo de Sincronización por Mensajes

Los mensajes proporcionan una solución al problema de la concurrencia de procesos que


integra la sincronización y la comunicación entre ellos y resulta adecuado tanto para
sistemas centralizados como distribuidos. Esto hace que se incluyan en prácticamente
todos los sistemas operativos modernos y que en muchos de ellos se utilicen como base
para todas las comunicaciones del sistema, tanto dentro del computador como en la
comunicación entre computadores.

La comunicación mediante mensajes necesita siempre de un proceso emisor y de uno


receptor así como de información que intercambiarse. Por ello, las operaciones básicas
para comunicación mediante mensajes que proporciona todo sistema operativo son:

Enviar(mensaje ) y recibir (mensaje). Las acciones de transmisión de información y de


sincronización se ven como actividades inseparables.

Interbloqueo

Definición:

El interbloqueo se puede definir como el bloqueo permanente de un conjunto de procesos


que compiten por los recursos del sistema o bien se comunican unos con otros. Un
proceso esta interbloqueado si está esperando por un evento determinado que nunca va
a ocurrir. No existe una solución eficiente para el caso general. Todos los interbloqueos
suponen necesidades contradictorias de recursos por parte de dos o más procesos.

El bloqueo es permanente hasta que el sistema realice una operación extraordinaria,


como puede ser matar a uno o más procesos u obligar a uno o más procesos a retrazar
su ejecución. El ínterbloqueo puede involucrar a recursos tanto consumibles como
reutilizables. Un recursos consumible es aquel que se destruye al ser adquirido por un
proceso; por ejemplo los mensajes, la información de los buffers de e/s. Un recurso
reutilizable es aquel que no se destruyo o se desgasto con el uso como ser un canal de
e/s o zona de memoria.

Modelo de Sincronización por Semáforos


Dijkstra dio en 1968 una solución al problema de la exclusión mutua con la introducción
del concepto de semáforo binario. Está técnica permite resolver la mayoría de los
problemas de sincronización entre procesos y forma parte del diseño de muchos sistemas
operativos y de lenguajes de programación concurrentes.

Un semáforo binario es un indicador (S) de condición que registra si un recurso está


disponible o no. Un semáforo binario sólo puede tomar dos valores: 0 y 1. Si, para un
semáforo binario, S = 1 entonces el recurso está disponible y la tarea lo puede utilizar; si
S = 0 el recurso no está disponible y el proceso debe esperar.

Los semáforos se implementan con una cola de tareas o de condición a la cual se añaden
los procesos que están en espera del recurso.

Sólo se permiten tres operaciones sobre un semáforo

- Inicializar

- Espera (wait)

- Señal (signal)

Concepto de exclusión mutua.

Consiste en que un solo proceso excluye temporalmente a todos los demás para usar un
recurso compartido de forma que garantice la integridad del sistema.

La técnica que se emplea por lo común para conseguir la exclusión mutua es inhabilitar
las interrupciones durante el conjunto de instrucciones más pequeño que impedirá la
corrupción de la estructura compartida (la sección crítica). Esto impide que el código de
la interrupción se ejecute en mitad de la sección crítica.

Monitores

Es un tipo de procedimientos, variables y estructuras de datos que se agrupan en un tipo


de modulo especial. Tienen una propiedad importante: solo un proceso puede estar
activo en un monitor en un instante de tiempo.
Los monitores proveen un nuevo tipo de variables de condición con dos operaciones que
operan sobre el (solo se usan dentro del procedimiento de el monitor).

Wait -> wait(a) : produce que el proceso que ejecuta la instrucción sea interrumpido y
removido de la cola de ready hasta que otro proceso lo habilite ejecutando la instrucción
signal( )con la misma variable de condición.

Signal -> signal(a) : Habilita la ejecución de algún proceso en espera por la ejecución de
la instrucción wait con la misma variable de condición.

gestion de memoria

En un sistema monoprogramado, la memoria principal se divide en dos partes: una parte


para el sistema operativo (monitor residente, núcleo) y otra parte para el programa que
se ejecuta en ese instant

Particiones fijas

Consiste en dividir la memoria libre en varias partes de igual tamaño o de diferentes


tamaños. En el caso de la partición fija de partes iguales, se plantean dos dificultades:

Un programa puede ser demasiado grande para caber en la partición. En este caso, el
programador debe diseñar el programa mediante superposiciones, para que sólo una
parte del programa esté en memoria principal. Cuando se necesita un módulo que no
está presente, el programa de usuario debe cargar dicho módulo en la partición del
programa, superponiéndose a los programas y datos que se encuentren en ella.

El uso de memoria principal es extremadamente ineficiente. Cualquier programa, sin


importar lo pequeño que sea, ocupará una partición completa. Supongamos un programa
que ocupa 120 Kb y se carga en una partición de 512 Kb, se malgasta el espacio interno
de la partición y ésto se denomina fragmentación interna.

Particiones variables

Como la memoria dinámica en el RT de un lenguaje.

Ventaja: podemos aprovechar más la memoria.

Desventaja: fragmentación y complejidad.

) los CDC usaban hw para defragmentar.


Ejemplos:

Applets en Java: protección con los tipos.

Tareas en PalmOS.

Memoria Virtual -1

El método diseñado por Fotheringham en 1961 se conoce como Memoria Virtual, la idea
es que el tamaño combinado de la pila, programa y datos puede exceder la memoria
física disponible para ello. El S.O. mantiene en memoria aquellas partes del programa
que se deben permanecer en memoria y el resto lo deja en disco, las partes entre el
disco y la memoria se intercambian de modo que se vayan necesitando.

Memoria virtual wikipedia

Cómo la memoria virtual se mapea a la memoria física.

La memoria virtual es una técnica de administración de la memoria real que permite al


sistema operativo brindarle al software de usuario y a sí mismo un espacio de direcciones
mayor que la memoria real o física.

La mayoría de los ordenadores tienen cuatro tipos de memoria: registros en la CPU, la


memoria caché (tanto dentro como fuera del CPU), la memoria física (generalmente en
forma de RAM, donde la CPU puede escribir y leer directa y razonablemente rápido) y el
disco duro que es mucho más lento, pero también más grande y barato.

Paginación de memoria

En sistemas operativos de computadoras, los sistemas de paginación de memoria dividen


los programas en pequeñas partes o páginas. Del mismo modo, la memoria es dividida
en trozos del mismo tamaño que las páginas llamados marcos de página. De esta forma,
la cantidad de memoria desperdiciada por un proceso es el final de su última página, lo
que minimiza la fragmentación interna y evita la externa.

En un momento cualquiera, la memoria se encuentra ocupada con páginas de diferentes


procesos, mientras que algunos marcos están disponibles para su uso. El sistema
operativo mantiene una lista de estos últimos marcos, y una tabla por cada proceso,
donde consta en qué marco se encuentra cada página del proceso. De esta forma, las
páginas de un proceso pueden no estar contiguamente ubicadas en memoria, y pueden
intercalarse con las páginas de otros procesos.

Segmentación

Es un esquema de manejo de memoria mediante el cual la estructura del programa


refleja su división lógica; llevándose a cabo una agrupación lógica de la información en
bloques de tamaño variable denominados segmentos. Cada uno de ellos tienen
información lógica del programa: subrutina, arreglo, etc. Luego, cada espacio de
direcciones de programa consiste de una colección de segmentos, que generalmente
reflejan la división lógica del programa.

La segmentación permite alcanzar los siguientes objetivos:

Modularidad de programas: cada rutina del programa puede ser un bloque sujeto a
cambios y recopilaciones, sin afectar por ello al resto del programa.

Estructuras de datos de largo variable: ejm. Stack, donde cada estructura tiene su propio
tamaño y este puede variar.

Protección: se puede proteger los módulos del segmento contra accesos no autorizados.

Comparición: dos o más procesos pueden ser un mismo segmento, bajo reglas de
protección; aunque no sean propietarios de los mismos.

Enlace dinámico entre segmentos: puede evitarse realizar todo el proceso de enlace
antes de comenzar a ejecutar un programa. Los enlaces se establecerán solo cuando sea
necesario.

You might also like