Sei sulla pagina 1di 55

Apuntes Sistemas

Operativos
ESCOM
Cuarto Semestre
2CM4
Luis Erik Reyes Romero

Contenido
Sistemas Operativos ............................................................................................................................ 2
Objetivo ........................................................................................................................................... 2
Evaluacin ....................................................................................................................................... 2
1.1 Definicin y objetivos de un sistema operativo. ........................................................................... 5
Objetivo de los sistemas operativos. .............................................................................................. 6
1.2 Evolucin de los Sistemas Operativos ........................................................................................... 7
Tarea 1............................................................................................................................................. 7
Tarea 2............................................................................................................................................. 7
1.3 Trminos Bsicos ........................................................................................................................... 8
1.4 Partes de un Sistema Operativo .................................................................................................... 9
1.5 Estructura de un sistema operativo ............................................................................................ 11
Capa de Kernel o Ncleo ............................................................................................................... 11
1.6 Funcionamiento de un Procesador ............................................................................................. 12
1.7 Arquitectura de una computadora personal............................................................................... 12
Unidad II. Administrador de procesos............................................................................................... 13
Diagrama de Estados ..................................................................................................................... 13
Bloque de Control de Procesos (PCB) ........................................................................................... 15
rbol de procesos.......................................................................................................................... 15
Creacin de procesos. ................................................................................................................... 17
Creacin de procesos por copia exacta ......................................................................................... 17
Anexos Primer Parcial. ...................................................................................................................... 21
Practica 1. ...................................................................................................................................... 21
Comandos Linux: ....................................................................................................................... 21
Practica 2 ....................................................................................................................................... 22
Llamadas al sistema: ................................................................................................................. 22

Sistemas Operativos
Objetivo
Analizar la estructura interna de los sistemas operativos para el anlisis, diseo, desarrollo e
implementacin de sistemas computacionales, a travs de la interpretacin y sntesis de
informacin.
Asesoras
De Lunes a Viernes de 13 a 14 hrs. Depto. De Ing. En Sistemas Computacionales
Bibliografa
o Sistemas Operativos
Deitel H.M
Addison Wesley
o Sistemas Operativos: Diseo e implementacin
Tanenbaum Andrew
Prentice Hall
o UNIX Programacin Avanzada
Marquez Francisco
Alfa Omega
o Advanced Programming the UNIX
Enviranment
Stevens W.
Addison Wesley

Evaluacin

Examen Escrito
Tareas/Exposicin 3
Practicas

1 Parcial
70%
10%
20%

2 Parcial
60%
10%
30%

3 Parcial
50%
10%
40%

Una instruccin es parte del lenguaje por ejemplo un If.


Una funcin de biblioteca printf est en la biblioteca <stdio.h>
C permite mezclar con un lenguaje de bajo nivel por ejemplo ensamblador

Temario Sistemas Operativos


Unidad I Introduccin
1.1 Definicin y objetivos de un sistema operativo.
1.2 Evolucin de los sistemas operativos.
1.3 Trminos bsicos.
1.4 Partes de un sistema operativo.
1.5 Estructura de un sistema operativo.
1.6 Funcionamiento de un procesador.
1.7 Arquitectura de una computadora personal.
Unidad II Administrador de procesos

Comentario [LERR1]: Tiene que ver


con el procesador

2.1 Introduccin.
2.2 Planificacin de procesos.
2.3 Comunicacin entre procesos
2.4 Semforos.
2.5 Monitores.
2.6 Transferencia de mensajes.
2.7 Problemas clsicos de la comunicacin entre procesos.
Unidad II Administrador de memoria
3.1 Administracin de memoria.
3.2 Intercambio.
3.3 Memoria virtual.
3.4 Algoritmos de sustitucin de pginas
3.5 Modelo de conjunto de trabajo
3.6 Segmentacin
Unidad IV Administrador de entrada y salida

Comentario [LERR2]: Tiene que ver


con los tipos de memoria

4.1 Principios del hardware de E/S.


4.2 Principios del software de E/S.
4.3 Bloqueo mutuo.
Unidad V Administrador de archivos
5.1 Archivos
5.2 Directorios
5.3 Implementacin de sistemas de archivos

Unidad VI Seguridad
6.1 Definiciones de seguridad
6.2 Mecanismos de proteccin.

MIERCOLES LABORATORIO
Instalar LINUX
Clasificacin de tipo de procesador
-

RISC
CISC

Comentario [LERR3]: Ms actuales. Se


manipula a nivel hardware. Se logra tener
ms velocidad
Comentario [LERR4]: Se implementa
diferente. El conjunto de instrucciones es
mayor a nivel Software

1.1 Definicion y objetivos de un


sistema operativo.
Conjunto de administradores que permiten controlar todas las actividades de una computadora.
Interfaz entre el usuario y la mquina. Un S.O se programa en el lenguaje C ya que permite
programar con un lenguaje de bajo nivel adems de la rapidez y C es el lenguaje ms rpido en
ejecucin. Un sistema operativo debe ser muy rpido (eficiente) y es por ello que se debe de
optimizar
Los sistemas operativos surgen como una extensin de la evolucin de los sistemas de cmputo,
conforme los sistemas de cmputo aumentaron su complejidad, los sistemas operativos se
hicieron necesarios para la administracin del sistema de cmputo.
Conceptualmente, un sistema Operativo pude definirse en dos formas, una informal y otra formal.
La definicin informal de sistema operativo es la siguiente:
Un sistema Operativo es un programa que permite controlar todos los recursos de una
computadora.
Esta definicin se considera informal debido a que proporciona informacin muy general de lo que
es un sistema operativo, sin profundizar ms all.
La definicin formal de sistema operativo es la siguiente:
Un sistema Operativo es un software de base que permite administrar cada uno de los
componentes de un equipo de cmputo de manera rpida y eficiente.
Esta definicin profundiza en las caractersticas que todo sistema operativo debe tener, las cuales
son:
Es un Software de base.
Cuenta con un grupo de administradores.
Es rpido y eficiente.
Un sistema operativo se considera un software de base porque permite dar funciones de
plataforma de desarrollo a otras aplicaciones que se ejecutarn dentro del propio sistema
operativo.
Cualquier Sistema Operativo Cuenta con un grupo de administradores formado por cinco de ellos,
los cuales son:
1. Administrador de procesos.
2. Administrador de memoria.

Comentario [LERR5]: El hardware

3. Administrador de entrada/salida.
4. Administrador de archivos.
5. Administrador de red.
En un trabajo conjunto, estos cinco administradores proporcionan el control total del sistema de
cmputo.
Finalmente los sistemas operativos son diseados e implementados de tal forma que su ejecucin
sea de manera rpida, proporcionando tiempos de respuesta en el orden de microsegundos. De
igual manera, estos sistemas operativos manejan de manera eficiente cada uno de los
componentes del sistema de cmputo, obteniendo el mximo rendimiento de ellos.
Los Sistemas Operativos como software de administracin de un sistema de cmputo, debe
realizar esta administracin de manera rpida y eficiente, convirtindose esta caracterstica en
uno de los primeros objetivos de todo sistema operativo.

Objetivo de los sistemas operativos.


Cualquier Sistema Operativo cumple al menos dos objetivos
Rapidez y eficiencia
Sencillez
El objetivo de rapidez y eficiencia est relacionado a la manera en que el sistema operativo, debe
responder a las peticiones que los usuarios realicen, considerndose como usuario tanto a la
persona que utiliza el sistema como a las aplicaciones que interactan con el sistema operativo.
El objetivo de rapidez y eficiencia se logra cumplir a travs de dos estrategias de diseo:
1) Construccin robusta de los administradores principales del sistema operativo.
2) Optimizacin del cdigo y servicios de alta prestacin.
Comnmente, los sistemas operativos que cumplen de manera completa con este objetivo,
mantienen una interfaz de operabilidad orientada a usuarios especializados en el uso y control del
sistema operativo. Un ejemplo de sistema operativo que cumple ampliamente con este objetivo,
son los sistemas operativos UNIX.
El segundo objetivo relacionado con la sencillez considerada ante todo la facilidad de uso (por
parte del usuario) del sistema operativo. Bajo este enfoque , el diseo de un sistema operativo
utiliza la siguiente estrategia de diseo:
Simplificar al mximo la interaccin usuario-sistema operativo.
Con esta estrategia, un sistema operativo que cumple con el objetivo de sencillez, normalmente
est orientado a usuarios no especializados y que requieren pocos conocimientos para operar el
sistema operativo. Un ejemplo de sistema operativo que cumple altamente con el objetivo de
sencillez es Windows.
Idealmente, un sistema operativo debera cumplir ambos objetivos, sin embargo en la prctica se
ha demostrado que se cumple solo con uno de ellos de manera casi completa, mientras que el
otro objetivo solo es cumplido de manera parcial. Por lo tanto, es frecuente que se tenga que
elegir entre rapidez y eficiencia o sencillez.

1.2 Evolucion de los Sistemas


Operativos

Tipos de Sistemas

*Sistemas por lotes sencillos


*Sistemas multi-programados
(por lotes multiprogramados)
*Sistemas de tiempo compartido.
*Sistemas de computadora personal
*Sistemas paralelos
*Sistemas distribuidos
*Sistemas de tiempo real

Sistemas Genricos

Sistemas Especializados

Tarea 1. Realizar en equipo la lectura que se le proporcionar relacionada con la evolucin de


los sistemas operativos, y realizar lo siguiente:
Construir un mapa conceptual donde se muestre cada tipo de sistema revisado.
Resaltar los conceptos ms relevantes de cada tipo de sistema, as como tcnicas
utilizadas que dieron paso al siguiente tipo de sistema operativo.
Generacin de computadoras en la cual colocaran a cada tipo de sistema.

Tarea 2 Realizar en equipo un mapa conceptual de la siguiente informacin:

Concepto de sistema operativo


Objetivo de un sistema operativo

Comentario [LERR6]: Equipo de 6 o 7

Sistemas por lotes


sencillos

Lee un flujo de
trabajos individuales

A fin de agilizar el
procesamiento de
programas similares

Falta de de
interaccin entre el
usuario y el trabajo
mientras se ejecuta

Su salida se imprime
en una impresora de
lneas por ejemplo.

No se puede modificar
un programa en
ejecucin para
estudiar su
comportamiento

El tiempo de retorno
puede ser resultado
del volumen de
computo requerido

Lo que dio paso al


siguiente S.O.

1.3 Terminos Basicos


En el estudio de los sistemas operativos se tienen los siguientes trminos bsicos relacionados
con la evolucin de estos sistemas:
Spooling. Tcnica que permite mantener un grupo de trabajos en disco para mejorar el
aprovechamiento de la CPU
Reserva de Trabajos. Conjunto de trabajos almacenados en disco que sern ejecutados en
la CPU.
Planificacin de Trabajos. Tcnica a travs dela cual es posible seleccionar un trabajo para
ser ejecutado en la CPU.
Multiprogramacin. Tcnica mediante la cual es posible mantener ms de un trabajo en
memoria RAM para ser ejecutado en la CPU.
Tiempo compartido. Tcnica que permite conmutar rpidamente el uso de la CPU entre
diversos trabajos dando la apariencia de simultaneidad en la ejecucin.
Concurrencia. Ejecucin de mltiples trabajos en una misma CPU de manera secuencial.
Memoria Virtual. Tcnica que permite extender la memoria fsica de un sistema de
cmputo a travs del uso de memoria lgica.
Sistema de archivos. Sistema lgico de organizacin de la informacin almacenada en un
sistema de cmputo, utilizando archivos y directorios como base de organizacin.

Comentario [LERR7]: Temporalmente

Comentario [LERR8]: Que est en la


reserva.

Comentario [LERR9]: Que se apoya


del administrador de memoria y del DD.

Sistemas Paralelos. Sistemas fuertemente acoplados compuestos de varios procesadores


que compartes buses, reloj y memoria, que son utilizados con el propsito de
multiprocesamiento.
Sistemas distribuidos. Sistemas dbilmente acoplados compuestos de varias
computadoras o nodos que manejan de forma independiente los buses, reloj y memoria,
que son utilizados con el propsito de multiprocesamiento.
Tiempo real. Intervalo de tiempo muy pequeo que es definido para obtener respuestas
de un sistema.
Sistemas de tiempo real duro. Sistemas cuyo tiempo real est definido en el orden de
nanosegundos o picosegundos.
Sistemas de tiempo real blando. Sistemas cuyo tiempo real est definido en el orden de
milisegundos o microsegundos.

Comentario [LERR10]: Los ciclos de


reloj en un segundo, esta se ve reflejado en
la multitarea. Y repercute en la velocidad
entre la comunicacin en los buses. La
velocidad la da el bus.
Comentario [LERR11]: Por ejemplo.
Bus de datos, direccin y de control. Estn
dentro del procesador. Datos y direccin
son los que conectan al procesador con la
memoria. Los Buses que se comparten son
los externos
Comentario [LERR12]: La red es un
bus que se comparte. BUS MAESTRO???
Los buses son ms rpido que las redes de
datos. Por lo tanto es ms rpido un
sistema paralelo que un distribuido. La
velocidad de los buses esta en bits por
segundo.
Comentario [LERR13]: Es la
sincronizacin a cierta frecuencia. Es el
reloj. Es til ya que es el que lleva el
control del tiempo de ejecucin de una
instruccin. 1 y 2 ciclos de reloj son las ms
ptimas. Ciclos de reloj entre ms (2 o
ms) grande ms lenta. Acceso a un medio
de almacenamiento consume mucho
tiempo.
Comentario [LERR14]: Idealmente es
respuesta inmediata. Aunque
prcticamente no existe.

1.4 Partes de un Sistema Operativo


El diseo de los sistemas operativos como cualquier otro software, est basado en un modelo de
ingeniera de software. El modelo seguido en el diseo de un sistema operativo es el modelo de
capas.
Las capas que componen a un sistema operativo son:
1)
2)
3)
4)

Capa de Hardware.
Ncleo o kernel.
Capa de Servicios.
Capa de Aplicacin.

Comentario [LERR15]: Elemento


autnomo

Comentario [LERR16]: Se encuentra


la base fuerte de un S.O. por mencionar
alguno los administradores.
Comentario [LERR17]: Todas las
aplicaciones que se pueden ejecutar por el
S.O. El usuario interacta con esta capa

Este modelo a capas permite definir de manera autnoma cada una de las partes que componen a
todo sistema operativo. Grficamente, las capas de un sistema operativo se observan como:

Capa 4
Capa 3

Aplicaciones

Interfaz de comandos

Servicios

Interfaz de llamadas al sistema


Capa 2

Kernel o Ncleo
Interfaz de interrupciones

Capa 1

Hardware

En un modelo a capas es necesario definir la forma en que comunicarn las distintas capas para
ellos se deben definir un conjunto de interfaces, las cuales en un sistema operativo son:
1) Interfaz de comandos
2) Interfaz de llamadas al sistema
3) Interfaz de interrupciones.
En conjunto, tanto las capas como las interfaces, proporcionan las partes necesarias para que un
sistema operativo pueda cumplir con sus funciones.
La capa de aplicacin mantiene todos los programas que harn uso del sistema operativo, los
usuarios del sistema operativo interactan directamente en esta capa.
La capa de servicios proporciona servicios auxiliares al funcionamiento del sistema operativo,
como pueden ser servicios de seguridad o de mantenimiento.
La capa de kernel o ncleo es la principal capa de un sistema operativo y mantiene todos los
administradores que integran al sistema.
La capa de hardware est integrada por toda la parte fsica del sistema de cmputo
(Computadora) sobre la que el sistema operativo administrar cada recurso.
La interfaz de comandos es utilizada para comunicar la capa de aplicacin con la de servicios, a
travs de esta interfaz es posible ejecutar por parte de los usuarios la mayor parte de la
funcionalidad del sistema operativo.
La interfaz de llamadas al sistema es utilizada para comunicar la capa de aplicacin con la de
Kernel, y la capa de servicios con la de kernel. Esta interfaz permite una comunicacin indirecta
con el Kernel del sistema operativo, y es principalmente utilizada mediante algn lenguaje de
programacin de alto o bajo nivel.
La interfaz de interrupciones es utilizada para comunicar la capa de kernel, con la capa de
hardware.
Esta interfaz permite una comunicacin directa entre kernel y hardware en el sistema operativo, y
es utilizada a travs de algn lenguaje de bajo nivel.

10

Comentario [LERR18]: Funciones en


algn lenguaje de programacin
Comentario [LERR19]: Comunicacin
ms directa con el ncleo y hardware. Se
utiliza el lenguaje ensamblador. Aunque el
lenguaje C tambin puede utilizarse.

1.5 Estructura de un sistema operativo


La estructura principal de un sistema operativo est representada por la capa del kernel o ncleo,
dentro de esta capa se encuentran los cinco administradores del sistema operativo, como se
puede apreciar en la siguiente figura.

Capa de Kernel o Ncleo


Administrador de
Memoria

Administrador de E/S

Administrador de
Archivos
Administrador de Procesos

Administrador de Red

Cada uno de los administradores estn estrechamente vinculados para operar entre todos y
permitir que el sistema operativo funcione correctamente. De manera general, cada administrador
se encarga de lo siguiente:
Administrador de procesos. Est encargado de la gestin de cada uno de los trabajos que
se ejecutan en el sistema operativo, cuenta con un conjunto de algoritmos y estructuras
de datos para llevar acabo su funcin. El hardware del sistema de cmputo con el cual
interacta es el microprocesador.
Administrador de memoria. Est encargado de la gestin tanto de la memoria fsica como
virtual, utiliza esquemas de administracin de memoria segn la organizacin de la
memoria que se emplea. El hardware del sistema de cmputo con el cual interacta es la
memoria RAM, ROM, CACHE y particiones de disco para el manejo de memoria virtual.
Administrador de E/S. Est encargado del control de todos los dispositivos de
Entrada/Salida. Maneja tanto aspectos de Software como de Hardware para cada
dispositivo.
Administrador de Archivos. Est encargado de la organizacin lgica de la informacin
del usuario, para ello se apoya de un sistema de archivos propietario del sistema
operativo.
Administrador de Red. Est encargado de la comunicacin va una Red de datos, utiliza un
conjunto de modelos y protocolos de red para realizar la transmisin y recepcin de datos
de manera remota.

11

Comentario [LERR20]: Anota me a


decir que peps con esto.

1.6 Funcionamiento de un Procesador

1.7 Arquitectura de una computadora


personal

Escalar: Una sola instruccin por ciclo de reloj

12

Superescalar: Ms de una instruccin por ciclo de reloj

Unidad II. Administrador de procesos


2.1 Introduccion.
El administrador de procesos es uno de los dos administradores ms importantes de un sistema
operativo. La unidad bsica con la cual interacta este administrador es el proceso.
Un proceso se puede definir de dos formas: Una informal y otra formal.
La definicin informal de proceso es la siguiente:
Un proceso es un programa en ejecucin
Esta definicin nicamente presenta de manera sencilla la idea de proceso pero no menciona las
caractersticas de un proceso.
La definicin formal de proceso es:
Un proceso es la entidad mnima de software ejecutada en un sistema operativo
contenida en una estructura de informacin
De esta definicin se tienen las caractersticas siguientes:
Entidad mnima de software.
Contenida en una estructura de informacin.
Dado que un proceso es una entidad de software, este tendr un ciclo de vida a travs del cual se
ejecutar dentro del sistema operativo. Este ciclo de vida deber ser finito y consiste de las
diversas etapas por las cuales est compuesto su ciclo. Para conceptualizar el ciclo de vida de un
proceso se utiliza el apoyo de un diagrama de estados.
Un proceso contenido es una estructura de informacin, implica la creacin del mismo mediante
algn tipo de estructura de datos implementada en algn lenguaje de programacin. Esta
estructura de datos es llamada Bloque de Control de Proceso (PCB).
El PCB es la parte esencial que un administrador de procesos manipular, siendo con esta la parte
con quien se interactuar constantemente.

Comentario [LERR21]: Es uno de los


dos administradores ms importantes de
un SO

Comentario [LERR22]: Un proceso va


a tener un ciclo de vida de c/proceso que
se ejecute en un sistema operativo. El
diagrama de estados es como un
autmata.
Comentario [LERR23]: Una estructura
de datos donde se va a estar
caracterizando al proceso. Colocar las
partes ms caractersticas de un proceso.
Como por ejemplo llevar el control de
cuantos procesos se estn ejecutando, la
prioridad del proceso, saber en qu
registro el procesador va a meter esta
instruccin entre muchas otras. Esto es
conocido como PCB

Diagrama de Estados
La representacin del ciclo de vida de un proceso utiliza una herramienta grfica llamada diagrama
de estados. Un diagrama de estados se compone de un conjunto de elipses o crculos
representando a los estados, y un conjunto de arcos dirigidos representando los cambios entre los
estados. En un proceso se identifican al menos los siguientes estados:
Inicio: En este estado se coloca inicialmente un proceso despus de realizar una peticin
para ejecutarse.
Listo para ejecutarse: En este estado un proceso quiere todos los recursos necesarios para
comenzar su ejecucin.

13

Comentario [LERR24]: Por ejemplo


cuando se da doble click, o se da enter en
la lnea de comandos.
Comentario [LERR25]: Memoria,
tiempo del manejo(recursos) del
procesador. Que pasa si se termina el
tiempo asignado por el proceso?????

En ejecucin: En este estado el proceso es asignado a la CPU para ser ejecutado.


Terminado: En este estado el proceso concluye su ejecucin liberando los recursos que le
fueron asignados en el estado listo para ejecutarse.
En espera: En este estado el proceso ha realizado una peticin de E/S y permanecer en
este estado hasta concluir la E/S que realiza.
Suspendido: En este estado el proceso deja su ejecucin momentneamente por peticin
del sistema.
Dormido: En este estado el proceso deja su ejecucin momentneamente por peticin
propia del proceso.
Zombie: En este estado el proceso queda bloqueado debido a algn evento inesperado en
su ejecucin, este es un estado indeseable, el cual debe evitarse en la medida de lo
posible.
La estructura de datos que utiliza c/estado es una COLA (menos el estado en ejecucin). Y
contiene bloques de control de procesos.
Grficamente, los estados anteriores se muestran en el siguiente diagrama de estados:
Ejecucin ltima
instruccin
Peticin de
ejecucin

14

Comentario [LERR26]: Toma el


control el procesador.
Comentario [LERR27]: El S.O
recupera esos recursos asignados, y se los
asigna a otro proceso.
Comentario [LERR28]: Impresin de
un dato en pantalla, el enviar a impresin,
peticin de un dato. Aqu se queda el
proceso hasta que concluya la E/S. Cuando
concluye la E/S se va a el estado lista para
ejecutarse.
Comentario [LERR29]: Por medio de
seales.
Comentario [LERR30]: El proceso
tuvo una generacin de un error. Sigue
usando los recursos de la CPU. SI hay
muchos llega a bloquear el S.O y se tendra
que reiniciar el equipo. Con comandos se
pueden eliminar procesos Zombies.
Siempre y cuando no sea un proceso del
sistema operativo.
Comentario [LERR31]: Son los
mnimos, pero cada sistema operativo
puede tener ms estados.

Bloque de Control de Procesos (PCB)


Todo proceso dentro del sistema operativo debe implementarse mediante una estructura de
datos, esta estructura es llamada Bloque de Control de Proceso (PCB). Un PCB mantiene toda la
informacin relevante del proceso correspondiente, cada sistema operativo tiene un PCB
diferente pero al menos la informacin que debe contener es la siguiente:
Apuntador a PCB: Este elemento contienen un apuntador al siguiente PCB referenciado en
la cola de planificacin donde se encuentre el proceso.
Identificador del proceso: Este elemento contiene un valor entero positivo asignado por el
sistema operativo al proceso una vez creado.
Estado del proceso: Este elemento mantiene el estado en el que se encuentra un proceso
en un momento dado de su ejecucin.
Informacin de planificacin: Este elemento contiene datos relacionados con el tipo de
planificacin utilizada, estos datos pueden incluir:
o Algoritmo Usado
o Prioridad del proceso
o Tiempo de ejecucin.
Contador del programa: Este elemento mantiene un valor de registro PC o IP.
Registros: Este elemento mantienen todos los valores que el proceso contiene en los
registros del procesador.
Informacin de memoria: Este elemento contiene datos relacionados con la
administracin de memoria m como pueden ser:
o Esquema de administracin de memoria
o Tabla de segmentos o paginas
o Apuntadores a tablas
Informacin contable: Este elemento contiene datos relacionados con:
o Tiempo de ejecucin del proceso.
o Tiempo de E/S
o Tiempos de acceso a memoria
.

rbol de procesos
Internamente en el sistema operativo, los procesos son organizados a travs de una estructura de
datos no lineal, la cual es llamada rbol de procesos. Un rbol de procesos est compuesto por un
proceso raz, del cual descienden los restantes procesos. Grficamente un rbol de procesos se
observa como sigue:
.

Comentario [LERR32]: Saber en cual


de todas las colas de planificacin se puede
encontrar un proceso

Comentario [LERR33]: Almacena la


direccin del proceso del siguiente proceso
que se va a ejecutar

Comentario [LERR34]: Dependiendo


del sistema operativo el PCB tendr ms
estados. Pero estos son los bsicos que
deben de estar en un sistema operativo.
Se hace aqu la administracin de procesos.
Se necesitara tantos PCB como procesos se
estn ejecutando

Comentario [LERR35]: Se escoge esta


estructura por la velocidad de bsqueda.
En los arboles la solucin recursiva es la
ms efectiva, que la iterativa.

15

ID=0
Procesos del
sistema

id
id

Procesos del
usuario

id

id
id

id

Proceso raz
(Arrancador del
sistema)

id
id

id
id

id

id
id

id

id
id

ps fea <------- LINUX


En los distintos niveles del rbol de procesos se colocan los procesos existentes en el sistema
operativo. En los primeros niveles se ubican todos los procesos del sistema. Un proceso del
sistema es aquel que forma parte de las capas del kernel o servicios del sistema operativo, y son
de importancia para el adecuado funcionamiento del sistema, motivo por el cual son protegidos
ejecutndose en modo kernel o protegido del microprocesador.
En los niveles subsecuentes del rbol de procesos se ubican todos los procesos del usuario. Un
proceso del usuario es cualquier aplicacin que los usuarios ejecuten en la capa de aplicacin del
sistema operativo. Todos los procesos del usuario se ejecutan en el microprocesador en modo
usuario o no protegido.
Cada proceso en el sistema operativo es identificado mediante un nmero entero positivo, en cual
es conocido como identificador del proceso (ID), este ID es nico para cada proceso existente en el
sistema operativo. Debido a la estructura tipo rbol que se utiliza, los procesos guardan una
relacin entre ellos de padre-hijo. Esta relacin asegura una herencia de ciertas caractersticas del
proceso padre al proceso hijo, permitiendo que el hijo manipule a su manera estas caractersticas
dependiendo de las necesidades del proceso hijo.
Un proceso siempre debe estar en el rbol de procesos. Ya sea programas hechos por el usuario
o cual sea que sea. No existen procesos aislados.
Las aplicaciones que uno crea en C tiene un padre, o se ejecutada en navegador, o incuso cuando
se abre Word el cual es: EL ESCRITORIO

16

id

Comentario [LERR36]: Solo en modo


kernel un proceso tiene permiso de
acceder a cualquier registro del
microprocesador. Llamadas al sistema es
como se puede trabajar en modo kernel.
Comentario [LERR37]: Esta limitado
por el microprocesador, pues el usuario no
puede tener acceso a todos los recursos.
Comentario [LERR38]: El ID va desde
0 65535 y lo asigna el sistema operativo
ms especficamente el administrador de
procesos.

Comentario [LERR39]: La consola es


el padre. Y la consola es el hijo de un
proceso ms arriba.

Creacin de procesos.
Todo proceso para su ejecucin debe asignrsele dos tipos de rfagas:
Rfagas de CPU: Corresponden a diversos tiempos que el proceso pasa ejecutando
instrucciones de cmputo en la CPU.
Rfagas de E/S: Corresponden a diversos tiempos que el proceso pasa ejecutando
instrucciones de Entrada/Salida
Un proceso que mayoritariamente est compuesto por rfagas de CPU se le llama limitado por
CPU.
Un proceso que mayoritariamente est compuesto por rfagas de E/S se le llama limitado por E/S.
Todos los procesos al momento de su creacin y ejecucin de sus primeras instrucciones inician
con una rfaga de CPU.
La creacin de nuevos procesos se puede realizar de dos maneras:
1) Por peticin directa del usuario.
2) Por peticin de una aplicacin.
En la creacin por peticin directa del usuario, el usuario directamente a travs de la interfaz de
comunicacin con el sistema operativo, pide la creacin del proceso dando doble clic con su ratn
dentro de una interfaz grfica o escribiendo el nombre del proceso en una interfaz textual.
En la creacin por peticin de una aplicacin, es un programa quien solicita la creacin de un
nuevo proceso. Esta creacin pude realizarse de dos maneras:
1) Por copia exacta de cdigo.
2) Por sustitucin de cdigo.

Comentario [LERR40]: Siempre.

Creacin de procesos por copia exacta


En este tipo de creacin, el nuevo proceso es una copia idntica a la de su padre (programa
creador), es decir, tiene el mismo cdigo que el proceso padre. Por ejemplo, observe el siguiente
cdigo:
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
int main(){
int id_proc;
id_proc=fork(); /*Llamada al sistema para crear un proceso. Esta
llamada crea un clon exacto del proceso que hizo la llamada. Despus de
fork, los dos procesos (padre e hijo) tienen la misma imagen de memoria,
las mismas cadenas de entorno y los mismos archivos abiertos.*/
if(id_proc==0){
prinf("Soy el proceso Hijo\n");
//
exit(0);
}
else{
printf("Soy el proceso Padre\n");
exit(0);
}
}

17

Comentario [LERR41]: Id pro el hijo


siempre tendr el valor de CERO y el padre
tendr valor diferente de CERO
Comentario [LERR42]: Se encuentra
en <unistd.h> la biblioteca estndar de
llamadas al sistema. Se crea y se ejecuta el
proceso. Y la ejecucin comienza desde la
siguiente lnea donde se llam a fork();
Comentario [LERR43]: Si se quiere
crear un nuevo hijo se tiene que poner
dentro del if, ya que es el cdigo que le
corresponde al cdigo del hijo. Se tiene
que hacer un:
id_proc2=fork(); e igual al hijo se le asigna
un valor de 0. Este valor solo ser dentro
del cdigo (interno) que se crea con el fork.

Posibles salidas del cdigo:


1
2
Soy el proceso hijo
Soy el proceso padre
Soy el proceso padre
Soy el proceso hijo
La CPU elige cual ser la salida dependiendo de la planificacin de procesos.

Padre
(Cdigo
original)

Id_proc !=0
.

Comentario [LERR44]: El mismo


cdigo del padre

Id_proc ==0
Hijo

Hijo del
hijo

Comentario [LERR45]: Tiene el


cdigo tambin el proceso hijo.

Id_proc2==0

NOS SIRVE PARA REALIZAR MANEJO DE CONCURRENCIA (COMO UN HILO). OTRO EJEMPLO
PODRIA SER LA COMUNICACIN EN RED.
CUANDO SE REQUIERE SEGURIDAD SE PREFIERE TRABAJAR CON PROCESOS YA QUE UN
PROCESO ES EL DUEO SE SU PROPIO ESPACIO DE MEMORIA
POCO EFICIENTE YA QUE DUPLICA LA MEMORIA AUN CUANDO SOLO SE UTILIZE UNA PEQUEA
PARTE DEL CODIGO. A DIFERENCIA DE LOS HILOS YA QUE SON PROCESOS LIGEROS.

18

CLIENTES

SERVICIO
PROC

SERVIDOR

ESTA ES OTRA APLICACIN QUE SE LE DA A ESE TIPO DE IMPLEMENTACION DE CODIGO.


#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
int main(){
int x=10;
int id_proc;
id_proc=fork();
if(id_proc==0){
prinf("Soy el proceso Hijo\n");
x+=10; printf(%i,x);
exit(0);
}
else{
printf("Soy el proceso Padre\n");
x*=10; printf(%i,x);
exit(0);
}
}

SALIDAS: 20,100 INDEPENDIENTEMENTE QUIEN SE EJECUTE PRIMERO YA QUE LAS VARIABLES DEL
PADRE NO SE PUEDE METER CON LAS DEL HIJO.
Pero eso no significa que no se puedan comunicar, para ello existen los:
IPC comunicacin entre procesos.
Tuberas

19

Memoria compartida
Sockets (para el administrador de RED. No los vamos a ver en este curso).
EN WINDOWS NO SE PUEDE HACER COPIA EXACTA
Otro ejemplo:
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
int main(){
int x=10;
int id_proc;
id_proc=fork();
if(id_proc==0){
prinf("Soy el proceso Hijo\n");
x+=10; printf(%i,x);
}
else{
printf("Soy el proceso Padre\n");
x*=10; printf(%i,x);
}
printf(x vale = %i\n,x);
printf(Termine\n);
exit(0);
}

Soy . . . .
X vale =20;
Termine
Soy . . . .
X vale=100;
Termine

20

Anexos Primer Parcial.


Practica 1.
Comandos Linux:

Comandos

Descripcin

ls

Lista archivos y directorios.

chmod

Cambia los permisos de un archivo(s) o carpetas(s).

vi

Funciona como editor visual de pantalla o editor de textos en consola.

uname

Despliega informacin del sistema.

clear

Limpia la terminal.

cd

Cambiar de directorio.

cat

Muestra el contenido de archivos y concatena archivos.

grep

Busca patrones de cadenas dentro de archivos.

pwd

Muestra el nombre de archivo completo del directorio de trabajo actual.

ps

Muestra los procesos del sistema o del usuario o ambos.

cp

Copia archivos de un lugar a otro.

mv

Mueve archivos y directorios.

mkdir

Crea directorios.

rmdir

Borra o elimina archivos.

whoami

Muestra el usuario actual.

Propsito del Comando

Windows (MSDOS)

Linux

Copia un archivo

copy

cp

Renombra un archivo

ren

mv

21

Lista archivos

dir

ls

Muestra su ubicacin en el sistema de archivos

chdir

pwd

Muestra el texto en pantalla

echo

echo

Busca una cadena de texto en un archivo

find

grep

Borra/Limpia la pantalla

cls

clear

Ver un archivo

type

cat

Cambia de directorio con una ruta especifica

cd

cd

Crea un directorio

mkdir

mkdir

Elimina un archivo

del

rm

Edita archivos con un editor de texto simple

edit

vi

Muestra la versin actual del sistema

ver

Elimina un directorio

rmdir

rmdir

Muestra de forma grfica la estructura de carpetas de una


unidad o ruta

Tree

Compilacin
*Para la compilacin en Windows es necesario instalar
una paquetera

gcc

gcc

Practica 2
Llamadas al sistema:

Llamadas
al sistema
open

close
read

Prototipo

Funcionamiento

int open (char* nombre, Abre un archivo para leer, escribir o ambas
int modo, int permisos ); cosas. Retorna un descriptor vlido si el
fichero se ha podido abrir, y el valor -1 en
caso de error.
int close ( int fichero );
Cierra un archivo abierto. Retorna un 0 si
todo ha ido bien y -1 si hubo problemas.
int read ( int fichero,
Lee datos de un archivo colocndolos en
void* buffer, unsigned
un buffer.
bytes );

22

write

creat

lseek

int write( int fichero,


void* buffer, unsigned
bytes );
int creat(char* nombre,
int mode);
long lseek (int fichero,
long desp, int origen );

Escribe datos de un buffer a un archivo

Forma obsoleta de crear un nuevo archivo.


Devuelve un descriptor si el fichero se ha
creado y abierto, y -1 en caso contrario.
Mueve el apuntador de archivos. El
parmetro desp junto con origen sirven
para determinar el punto del fichero donde
va a acabar el puntero. desp es un entero
largo que expresa cuntos bytes hay que
moverse a partir del punto indicado en
origen, parmetro que podr adoptar
estos valores:

0 SEEK_SET

inicio del fichero

1 SEEK_CUR relativo a la posicin


actual
2 SEEK_END relativo
fichero

access
stat

chmod

int access(name,
amode);
int stat (const char*
Path, struct stat*
Buffer);
int chmod(char* name,
int permisos);

al

final

del

Devuelve un entero largo que es la


posicin absoluta donde se ha posicionado
el puntero; o un -1 si hubo error.
Obsrvese que la funcin lseek puede
utilizarse tambin para leer la posicin
actual del puntero.
Verifica la accesibilidad de un archivo.
Obtiene la informacin de estado de un
archivo. Devuelve -1 en caso de error, 0 en
caso contrario.
Cambia los bits de proteccin de un
archivo, es decir lo pone como lectura,
escritura y/o ejecucin.

RWX

RWX

RWX

usuario grupo otros


Devuelve 0 si todo sali bien.

23

chown
fcntl
opendir

int chown(name, owner,


group);
int fcntl(int fd, int cmd,
... );
DIR *opendir(const char
*nombre);

readdir

struct dirent
*readdir(DIR *dir);

closedir

int closedir(DIR *dir);

Cambia el propietario y el grupo de un


archivo.
Bloqueo de archivos y otras operaciones.
Abre un directorio. El nico parmetro que
recibe es el nombre del directorio que se
quiere abrir. Devuelve un puntero al flujo
de directorio (DIR) o NULL en caso de
error. Este puntero se colocar en la
primera entrada del directorio.
Sirve para leer las entradas del directorio
abierto con opendir. Recibe como
parmetro el puntero al flujo de directorio
(DIR) que se obtuvo con opendir y
devuelve un puntero a una estructura
dirent o NULL en caso de error o fin del
directorio. Esta estructura dirent representa
la siguiente entrada de directorio al que
apunte dir.
Cierra el flujo de directorio que se obtuvo
con opendir. Recibe como parmetro el
puntero al flujo de directorio (DIR) y
devuelve 0 en caso de xito y -1 en caso
de error.

24

TAREA. RESOLVER LOS SIGUIENTES EJERCICIOS EN EQUIPO.


1) Codificar el programa que genere los siguientes rboles de procesos.

25

2) Construya el rbol de procesos generado por los siguientes cdigos y muestre la salida del
programa.
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
int main(){
int id_proc, x=0, y=0,z=0;
if((id_proc=fork())==0){
x+=100;
if((id_proc=fork())==0){
y=x*10;
z+=10;
if((id_proc=fork())==0){
z=y/x;
printf("Valores: %i, %i, %i",z,y,x);
}
z*=x;
y+=z;
printf("Valores: %i, %i, %i",z,y,x);
exit(0);
}
exit(0);
}
if((id_proc=fork())==0){
x=z+y;
printf("Valores: %i",x);
}
exit(0);
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
int id_proc;
char cad[20],*cad2="rbol de procesos";
strcpy(cad,"Ejemplo de Fork");
if((id_proc=fork())==0){
strcat(cad,"Dentro de algo");
if((id_proc=fork())==0){
strcat(cad,"Un nivel ms abajo");
printf("Mensaje: %s\n",strcat(cad2,cad));
}
strcat(cad2,cad);
exit(0);
}
if((id_proc=fork())==0){
if((id_proc=fork())==0){

26

printf("Mensaje: %s\n",strcat(cad,cad2));
if((id_proc=fork())==0){
printf("Mensaje: %s\n",strcat(cad,cad2));
exit(0);
}
exit(0);
}
exit(0);
}
}
Linux ---Familia execv(NOMBRE EJECUTABLE)

Windows---CreateProcess()
Para crear un nuevo proceso en el ejemplo anterior se utiliza la llamada al sistema fork(), esta
llamada est definida para los sistemas operativos UNIX y LINUX. Una vez que se invoca a fork()
automticamente se crea una copia exacta del proceso padre en el nuevo proceso.
La creacin de procesos por copia exacta no est disponible en todos los sistemas operativos, los
nicos sistemas que la implementan son UNIX y LINUX, sistemas como WINDOWS no la utilizan.

Creacin de procesos por sustitucin de cdigo


La creacin de nuevos procesos por sustitucin de cdigo es la forma ms usual de creacin de
procesos soportada por los sistemas de operativos. La creacin se realiza mediante la invocacin
de una llamada al sistema dentro del proceso padre, una vez invocada inicia la ejecucin del nuevo
proceso creado cuyo cdigo puede ser totalmente diferente al del proceso padre. La caracterstica
principal de esta creacin de procesos es que una vez que el nuevo proceso inicia su ejecucin,
destruye al proceso padre sin posibilidad de seguir ejecutando al proceso padre.
Sin embargo, los sistemas operativos ofrecen alternativas indirectas para evitar la destruccin del
padre, permitiendo que tanto el proceso hijo creado como el proceso padre se ejecuten
concurrentemente.
Una segunda caracterstica que tiene la creacin por sustitucin de cdigo es el manejo de la
memoria de los procesos. Una vez que es destruido el proceso padre, el nuevo proceso creado
usualmente es colocado en la regin de memoria que ocupaba el proceso padre, con lo cual es
reutilizado este espacio de memoria.
Para evitar la destruccin del proceso padre, los sistemas operativos UNIX, LINUX y WINDOWS
utilizan las siguientes alternativas.
UNIX y LINUX
Permiten la combinacin tanto de la creacin de procesos por copia exacta de cdigo
como la creacin por sustitucin de cdigo.
WINDOWS
Utiliza un hilo de ejecucin donde coloca al proceso creado por sustitucin de cdigo.
Un hilo es un proceso ligero, el cual comparte algunos recursos de su proceso creador, el recurso
principal que comparte un proceso con su hilo es la memoria. Esta forma de compartir la memoria

27

Comentario [OA46]: El proceso se


asocia a un nuevo hilo de ejecucin. El hilo
es que ejecuta las tareas del proceso.
Esta truqueado.
Segn ms es para mayor concurrencia.
Gran intercambio de memoria que no se
deben tocar, no es seguro, pero es
eficiente..

ahorra recursos al sistema operativo en el manejo de los recursos, de ah el nombre de procesos


ligeros.

Padre
Exec()

Hijo
Hijo

Comentario [OA47]: Se ejecuta con la


llamada al sistema:
LINUX Familia exec(), execv()
Windows CreateProcess

El cdigo del padre y del hijo


son diferentes.

Comienza su ejecucin desde el main()

En el execv() se pasa como argumento el nombre del ejecutable.


Diferencia entre system, exec, execv o createProcess. En system no perdemos al padre.
El system es a nivel de aplicacin y las llamadas al sistema estn en capa intermedia.
Todo lo que se coloque despus de una llamada al execv() no se ejecutara, porq se mata al padre,
es decir no hay punto de regreso.

Diferencias entre un createprocess() y un execv() y un system()?


-Con el execv se pierde al padre, el hijo lo destruye y en sytem() no ocurre eso sigue la ejecucin
del padre. El system se trabaja en la capa de aplicacin. Y los otros se hace en un nivel ms bajo
con las llamadas a funciones

28

Comentario [LERR48]: Todo lo que se


ponga despus del execv ya no se ejecuta
pues el proceso padre se destruye.

2.2 Planificacion de procesos


Entre las actividades importantes que un administrador de procesos debe realizar es la
planificacin de procesos. La planificacin es la seleccin de un elemento para asignar algn
recurso. La planificacin de procesos consiste en la seleccin de algn o algunos procesos para
asignarle(s) un recurso del sistema de cmputo que hayan solicitado.
En los sistemas operativos se pueden utilizar para la planificacin tres tipos de planificadores, los
cuales son:
1) Planificador de largo plazo
2) Planificador de mediano plazo
3) Planificador de corto plazo
El planificador de largo plazo se encarga de seleccionar procesos que se encuentran en la reserva
de trabajos en disco y colocarlos en la memoria RAM. Este planificador se caracteriza por:
Velocidad de planificacin lenta comparada con los otros planificadores.
Utilizacin en sistemas operativos que proporcionan soporte para el procesamiento por
lotes
El planificador de mediano plazo realiza la misma actividad que el planificador de largo plazo, la
diferencia consiste en que el planificador de mediano plazo interacta con la memoria virtual para
seleccionar los procesos a colocar en memoria RAM. Este planificador se caracteriza por:
Velocidad de planificacin mayor comparada contra el planificador de largo plazo.
Utilizacin en sistemas operativos que dan soporte a la multiprogramacin y tiempo
compartido.
Estos dos planificadores proporcionan el grado de multiprogramacin de un sistema operativo. El
grado de multiprogramacin se entiende como la cantidad de procesos colocados en la memoria
RAM en un instante dado.
El planificador de corto plazo se encarga de seleccionar un proceso de la memoria RAM y asignarle
la CPU. Este planificador se auxilia de un componente conocido como despachador.
El despachador tiene como objetivo realizar el cambio de contesto entre procesos. El cambio de
contexto consiste en sacar de la CPU un proceso en ejecucin previo respaldo del contexto del
proceso a sacar, una vez desocupada la CPU se coloca el nuevo proceso que continuar o iniciar
su ejecucin en la CPU. El despachador es uno de los componentes principales de la planificacin
de procesos.

En un sistema de multiprogramacin, al
cambiar de un programa a otro (lo que se
conoce comnmente como CAMBIO DE
CONTEXTO o context switch)

29

Comentario [LERR49]: Cuando


queremos colocar un proceso en memoria,
montar una memoria etc.
Comentario [LERR50]: Al menos un
SO tiene dos. Los viejitos largo y corto. En
los actuales se utilizan el de mediano plazo
y corto plazo
Comentario [LERR51]: Dan el grado
de multiprogramacin de un S.O

Comentario [LERR52]: Al trabaja con


el disco es que trabaja ms lento. Lo
encontramos en los SO con soporte de
procesamiento por lote
Comentario [LERR53]: Ms moderno.
Ms rpido. S.O actuales.

Comentario [LERR54]: Para que


empiece su ejecucin
Comentario [LERR55]: Cuando se
encarga de respaldar la informacin, y se
encarga de cargar la nueva informacin.
Lo que se respalda son el id, recursos que
se estn utilizando, renglones de memoria
que utiliza. El PCB contiene toda la
informacin de un proceso entonces en
otras palabras lo que se respalda es el PCB
correspondiente.
Para evitar que la CPU este de ociosa.

NOTAS:

Cmo sabe la CPU cual fue la ltima instruccin que se ejecut el proceso?
Cuando se hace el cambio de contexto en el PC o IP se guarda cual es la siguiente instruccin que
se va a ejecutar entonces cuando se realiza el cambio de contexto de nuevo para seguir
ejecutando del proceso va al PCB y busca el PC o IP y sabe cul ser la siguiente instruccin. El
nico que tiene el permiso que puede manipular del PC o IP es la CPU por que la manipulacin
se hace en modo kernel. El despachador puede quitar un proceso en ejecucin si existe otro
proceso con mayor prioridad que desea ejecutarse.
Proceso inactivo del sistema es el proceso en Windows que ocupa la CPU en un porcentaje
mayor a 90%. Constantemente est pasando por la CPU haciendo revisin, y no interrumpe
otras aplicaciones que se estn ejecutando ya que pasa rpidamente.
El despachador concretamente realiza las siguientes actividades
Conmuta de modo usuario a modo kernel al sistema operativo.
Respalda el contexto del proceso que actualmente se encuentra en la CPU
Inicia el contexto del proceso que se colocar en la CPU.
Inicia el registro PC o IP con la instruccin correspondiente a ejecutar por el proceso.
Conmuta de modo kernel a modo usuario al sistema operativo.
Permite la ejecucin del nuevo proceso.
El despachador tiene dos caractersticas importantes en su diseo:
1) Tamao reducido en lneas de cdigo, normalmente en el orden de 10 KB a 100KB.
2) Alta velocidad de ejecucin, normalmente entre tiempo del orden de microsegundos o
picosegundos.

Cola de planificacin
En la planificacin de proceso se utiliza un componente auxiliar para agrupar a los diversos
procesos en ejecucin, este componente es llamado cola de planificacin. Una cola de
planificacin mantiene procesos que desean utilizar algn recurso del sistema de cmputo,
existiendo colas para usar dispositivos de E/S, memoria, CPU entre otros.
Sobre estas colas de planificacin es posible asociar algoritmos que permitan planificar a los
procesos, a estos algoritmos se los conoce como algoritmos de planificacin.
Un algoritmo de planificacin permite seleccionar, bajo algn criterio, un proceso de la cola de
planificacin y asignarle el recurso solicitado asociado a la cola. Existe un grupo de algoritmos de
planificacin bsicos que llegan a utilizar los sistemas operativos, estos son:
Algoritmo Primero en Llegar Primero en Servirse (FCFS)
Algoritmo Primero el Trabajo ms corto (SJF)
Algoritmo por prioridad
Algoritmo por turno circular (Round Robin)
Cada uno de estos algoritmos utilizan un elemento grfico que apoya en la organizacin de los
procesos para el anlisis de los algoritmos, este elemento grfico es denominado diagrama de
Gantt.

30

Comentario [LERR56]: El primero que


existi y es el ms bsico. Ya actualmente
no se utiliza
Comentario [LERR57]: El problema es
que la forma en que se determina la
duracin es complicada por lo cual el
algoritmo se considera terico que en la
prctica no se implemente, pero sirve
como base para saber cmo se organizara
segn su tiempo. El SO se tardara ms
tiempo en planificar cual es el ms corto
que en planificar los procesos. A nivel
terico realizara mejores tiempo pero en
la prctica no.
Comentario [LERR58]: Mantener una
organizacin como el FCFS, pero se le
agrega un tiempo de cuanto de tiempo.
MAS ADELANTE LOS VAMOS A VER A
FONDO.

Un diagrama de Gantt permite organizar a los procesos en una secuencia continua de tiempo, a
partir de este diagrama es posible obtener los tiempos de inters de cada proceso.
Entre los criterios ms comunes para el anlisis de los algoritmos de planificacin, se tienen los
siguientes:
Aprovechamiento de la CPU: Se define como el porcentaje que la CPU es utilizada, se
debe encontrar entre un 70% a 90%
Rendimiento: Se define como un nmero de procesos ejecutados por unidad de tiempo.
Tiempo de espera: Se define como el tiempo que un proceso pasa en la cola de listos
para ejecutarse.
Tiempo de respuesta: Se define como el tiempo que un proceso tarda en generar la
primera respuesta de su ejecucin.
Tiempo de retorno: Se define como el tiempo total que un proceso tarda en ejecutarse
desde su inicio hasta su terminacin. Se calcula mediante la siguiente expresin:
= + + / +
Dnde:
= Tiempo de espera del proceso
= Duracin del proceso
/ =Tiempo transcurrido en operaciones de E/S
=Tiempo transcurrido en accesos a memoria

Para realizar la planificacin de proceso, esta se clasifica en dos tipos, de acuerdo a la forma en
que se otorga el recurso al proceso que lo solicita. Las formas de planificacin que se tienen son:
Planificacin NO expropiativa. En esta forma de planificacin el proceso que se encuentra
usando el recurso, por ejemplo la CPU, no podr ser interrumpido bajo ninguna
circunstancia por otro proceso.
Planificacin expropiativa. En esta forma de planificacin, el proceso que se encuentra
utilizando un recurso, podr ser interrumpido por otro proceso que bajo algn criterio
tenga preferencia de uso del recurso solicitado.
Los algoritmos de planificacin usan algunos aspectos de los revisados anteriormente para realizar
su funcin.

Algoritmo Primero en Llegar Primero en Servirse (FCFS)


Este algoritmo se basa en el orden de llegada para realizar la planificacin de los procesos, es
decir, el primer proceso en llegar a la cola de planificacin ser el primer proceso en ser asignado
al recurso solicitado. El algoritmo consiste en:
1. Construir el diagrama de Gantt de acuerdo al orden de llegada de los procesos.
2. Determinar el tiempo de espera de cada proceso mediante la siguiente expresin:

() =
=1

31

Comentario [LERR59]: Mientras ms


procesos se ejecuten ms rendimiento se
va a tener.

Comentario [LERR60]: Es el tiempo


que nos va a importar analizar para saber si
es un algoritmo optimo, ya que sobre este
si se tiene control
Comentario [LERR61]: No se puede
controlar no se sabe cunto tardar la E/S

Donde
= .
=
= .
3. Determinar el tiempo de espera promedio mediante la siguiente expresin:
=1 ()
() =

Donde
=
=

Ejemplo. Considere el siguiente grupo de procesos


Proceso
1
2
3
4
5

Duracin (U.T)
10
15
2
7
1

Tiempo Llegada (U.T)


0
0
0
0
0

Calcule el tiempo de espera de cada proceso y el tiempo de espera promedio del grupo
mediante el algoritmo FCFS.
Solucin:
1. Diagrama de Gantt.
P1
P2
P3
P4
0
10
25
27

P5
34

35

2. Tiempo de espera de cada proceso.


()==
()== .
()== .
()==.
()== .

3. Tiempo de espera promedio del


grupo.
=1 ()
() =

0+10+25+27+34
5

96
5

Comentario [LERR62]: De inmediato


se le da control o acceso al recurso de la
CPU

.
Comentario [LERR63]: Va a tener que
esperar 10 unidades de tiempo para que el
recurso se le sea asignado al proceso2

32

P1
0-2
2
X ESP
/ EJE

P1
5-8
3
X ESP
/ EJE

P1
9

P2
10

P3
25

P4
27

P5
34

35

En realidad P1 No espero 9 unidades de tiempo ya que antes se estuvo ejecutando. Entonces a


ese 9 se le resta los tiempos de ejecucin de las veces que aparece P1 antes es decir 9-(2+3) Ese
ser el tiempo de espera del proceso. PREGUNTAR AL PROFE?
()== .
Las caractersticas principales de este algoritmo son:
nicamente permite planificacin de tipo no expropiativa.
Normalmente es el algoritmo que peor tiempo de espera promedio genera entre todos los
algoritmos de planificacin.
Este algoritmo no es utilizado en los sistemas operativos para la planificacin de la CPU.

Algoritmo Primero el trabajo ms Corto (SJP)


Este algoritmo considera como base de planificacin la duracin de la siguiente rfaga de
ejecucin de un proceso, es decir selecciona primero al proceso cuya duracin sea la ms corta
para asignarle el recurso solicitado. El algoritmo es el siguiente:
1. Construir el diagrama de Gantt de acuerdo a la duracin de los procesos, colocando
primero a los procesos ms cortos en duracin.
2. Determinar el tiempo de espera promedio de cada proceso utilizando la expresin
revisada en el algoritmo FCFS.
3. Determinar el tiempo de espera promedio del grupo de procesos usando la expresin
revisada en el algoritmo FCFS.
Ejemplo. Considere el mismo grupo de procesos del algoritmo FCFS. Calcule el tiempo de espera
de cada proceso as como el tiempo de espera promedio del grupo de procesos usando el
algoritmo SJF.
Solucin:
1. Diagrama de Gantt.
P5
P3
P4
P1
P2
0
1
3
10
20
35
2. Tiempo de espera de cada proceso.
()==
()== .
()== .

Comentario [LERR64]: No tiene que


esperar nada para que se le asigne el
recurso ya que es proceso ms pequeo

()== .
()== .
3

Tiempo de espera promedio del grupo.


=1 ()
() =

10+20+1+3+0
5

34
5

Las caractersticas principales del algoritmo SJF son:


Permite planificacin tanto expropiativa como no expropiativa.
Genera el tiempo de espera promedio ms corto entre todos los algoritmos de
planificacin
nicamente se revisa a nivel terico debido a que ningn sistema operativo actual lo
implementa.
El algoritmo SJF permite la planificacin de tipo expropiativo, el siguiente ejemplo muestra como
se lleva a cabo esta planificacin:
Ejemplo. Considere el siguiente grupo de procesos:

Proceso
1
2
3
4
5

Duracin (U.T)
10
15
2
7
1

Tiempo Llegada (U.T)


0
5
10
20
23

Calcular el tiempo de espera de cada proceso y el tiempo de espera promedio del grupo de
procesos usando el algoritmo SJF con planificacin expropiativa.
Solucin:
1. Diagrama de Gantt.
P1
P3
P2
P5
P2
0
10
12
23
24

()== .
P4
28

35

2. Tiempo de espera de cada proceso.


()==
()== .
()== .
()== .

3. Tiempo de espera promedio del


grupo.
=1 ()
() =

0+8+0+8+0
5

16
5

Algoritmo por Prioridad


Este algoritmo se basa para planificar en la prioridad asociada a cada proceso, es decir el primer
proceso a ser planificado ser el que tenga la prioridad ms alta. La asignacin de la prioridad
depende de cada sistema operativo. El algoritmo consiste en lo siguiente:
1. Construir el diagrama de Gantt de acuerdo a la prioridad de los procesos, colocando
primero a aquellos procesos con la prioridad ms alta.
2. Determinar el tiempo de espera de cada proceso mediante la expresin usada en el
algoritmo FCFS.
3. Determinar el tiempo de espera promedio del grupo de procesos a travs de la
expresin utilizada en el algoritmo FCFS.
Ejemplo: Considere el siguiente grupo de procesos:
Proceso
1
2
3
4
5

Solucin:
1. Diagrama de Gantt.
P3
P5
P4
P2
0
2
3
10

Duracin (U.T)
10
15
2
7
1

P1
25

35

2. Tiempo de espera de cada proceso.


()==
()== .
()== .
()== .
()== .

Prioridad
5
4
1
3
2

Tiempo Llegada (U.T)


0
0
0
0
0

3. Tiempo de espera promedio del


grupo.
=1 ()
() =

25+10+0+3+2
5

40
5

Las caractersticas principales del algoritmo por prioridad son:


Permite planificacin tanto expropiativa como no expropiativa [?]
Genera tiempo de espera promedio lo suficientemente bajo como para considerarlo
eficiente.
Es uno de los algoritmos comnmente utilizados en la planificacin de la CPU.

Comentario [LERR65]: Fijarnos en


esta. Cuando es de tipo expropiativo. Y ver
el tiempo de llegada. Cuando tienen la
mismo prioridad seguimos con el que llego
primero
Ver ejemplo cuaderno Dragon Ball hasta a
tras

Algoritmo por Turno Circular (Round Robin)


Este algoritmo se basa para realizar la planificacin en el orden de llegada de los procesos, similar
al algoritmo FCFS. Sin embargo introduce un tiempo durante el cual se permite la ejecucin de un
proceso, a este tiempo lmite se le conoce como cuanto de tiempo. El algoritmo consiste en lo
siguiente:
1. Construir el diagrama de Gantt de acuerdo al orden de llegada de los procesos y al
cuanto de tiempo definido.
2. Determinar el tiempo de espera de cada proceso a travs de la expresin usada en el
algoritmo FCFS.
3. Determinar el tiempo de espera promedio del grupo de procesos mediante la expresin
utilizada en el algoritmo FCFS.
Ejemplo: Considere el grupo de procesos utilizados en el ejemplo del algoritmo FCFS, calcula el
tiempo de espera de cada proceso y el tiempo de espera promedio del grupo a travs del
algoritmo Round Robin considerando un cuanto de 4 U.T
Solucin:
1. Diagrama de Gantt.
P1
P2
P3 P4 P5
0
4
8
10 14

P1
P2
15 19

P4 P1 P2
P2
23 26 28 32

35

Comentario [LERR67]: 4 U.T


Comentario [LERR68]: 4 U.T

2. Tiempo de espera de cada proceso.


()==
()== .
()== .
()== .
()== .

Comentario [LERR66]: El tiempo que


tiene permitido cada proceso. Cuando no
acaba en ese tiempo despus se pone otra
vez al final para que ocupe otras cuatro
unidades de tiempo. Si termina antes del
tiempo del cuanto hasta ah termine no
ocupa los otros cuantos ya que el sistema
estara de ocioso.

Comentario [LERR69]: No espera


esos cuatro cuantos ya que previamente ya
lo estaba ocupando, por lo tanto el utlimo
tiempo registrado del proceso 2 es el 28 no
el 32

3. Tiempo de espera promedio del


grupo.
=1 ()
() =

18+20+8+19+14
5

79
5

Este algoritmo se considera con tiempos aceptable y es el que se ocupa en los S.O junto con el
de prioridad.

Las caractersticas principales del algoritmo por turno circular con:


a) Permite exclusivamente planificacin de tipo expropiativo
b) Genera tiempo de espera promedio aceptable para los procesos planificados de forma
equitativa
c) Es uno de los algoritmos frecuentemente usado en la planificacin de la CPU por todos los
sistemas operativos actuales

Tarea. Resolver en equipo los siguientes ejercicios:


1) Considere el siguiente grupo de procesos:
Proceso

Duracin (U.T)

Prioridad

T. Llegada SJF y
Prioridad (U.T)

1
2
3
4
5
6
7
8
9
10

30
3
18
8
23
12
1
5
2
2

6
3
5
2
7
5
1
4
1
3

0
10
15
20
65
78
80
85
93
99

T. Llegada FCFS y
Turno Circular
(U.T)
0
0
0
0
0
0
0
0
0
0

Calcular el tiempo de espera de cada proceso y el tiempo de espera promedio del grupo
utilizando:
a) Algoritmo FCFS
b) Algoritmo SJF tanto expropiativo como no expropiativo
c) Algoritmo por prioridad tanto expropiativo como no expropiativo (La prioridad ms
alta es 1)
d) Algoritmo por turno circular con un cuanto de 5 U.T.
2) Considere el siguiente grupo de procesos
Proceso
Duracin (U.T)
Prioridad

1
2
3
4
5
6
7
8
9
10
11
12

3
25
40
1
5
1
30
17
12
10
25
35

7
3
2
7
6
7
4
6
5
5
1
3

T. Llegada SJF y
Prioridad (U.T)
0
15
25
70
74
95
100
115
118
125
140
150

T. Llegada FCFS y
Turno Circular
(U.T)
0
0
0
0
0
0
0
0
0
0
0
0

Calcule el tiempo de espera de cada proceso y el tiempo de espera promedio del grupo usando:
a) Algoritmo FCFS

b) Algoritmo SJF tanto expropiativo como no expropiativo


c) Algoritmo por prioridad tanto expropiativo como no expropiativo (La prioridad ms
alta es 7)
d) Algoritmo por turno circular con un cuanto de tiempo de 7 U.T
Solucin:
FCFS
1. Diagrama de Gantt.
P1
P2
P3
P4
0
3
28
68

P5
69

P6
74

P7
75

P8
115

P9
122

P10
134

P11
144

P12
169

204

2. Tiempo de espera de cada proceso.


()== .
()== .
()== .
() == = .
()== .
()== .
()== .
()== .
()== .
()== .
()== .
()== .
3. Tiempo de espera promedio del grupo.
=1 ()
() =

0+3+28+68+69+74+75+115+122+134+144+169
12

926
12

Colas de mltiples niveles


Los sistemas operativos utilizan una estructura para implementar algunos de los algoritmos de
planificacin revisados previamente, esta estructura es conocida como la cola de mltiples
noveles. Una cola de mltiples niveles consiste en la divisin de la cola a planificar en subcolas,
cada subcola es posible planificarla a travs de un algoritmo de planificacin.
Existen dos tipos de colas de mltiples niveles:

1) Colas de mltiples niveles no retroalimentadas.


2) Colas de mltiples niveles retroalimentadas.

Comentario [LERR70]: Poco flexible

Las colas de mltiples niveles no retroalimentadas se caracterizan porque no permiten que un


proceso pueda cambiar de subcola una vez que ha sido asignado, es decir el proceso desde su
inicio hasta su conclusin deber permanecer en la misma subcola que le fue asignada.
Grficamente, una cola no retroalimentada se observa como sigue:

Procesos

Algoritmo FCFS

Procesos

Algoritmo por Prioridad

Procesos

Algoritmo por Turno Circular

ALGORITMO POR
PRIORIDAD

COLA DE LISTOS PARA EJECUTARSE

La Planificacin entre las diversas subcolas requiere de un algoritmo global, el cual puede ser
tambin alguno de los algoritmos revisados. El hecho de que este tipo de cola no retroalimentada
no permita que un proceo pueda cambiar de subcola, la hace poco flexible para la planificacin, lo
cual es su desventaja principal.
Las colas de mltiples niveles retroalimentadas se caracterizan por permitir que un proceso pueda
cambiar de subcola, es decir un proceso ha sido asignado a una subcola podr cambiar a otra de
acuerdo a algn criterio establecido por el sistema operativo, de esta forma un proceso pueda
pasar de una subcola de menor importancia a una de mayor o viceversa.
Grficamente, una cola retroalimentada se observa como:

Algoritmo FCFS

Algoritmo por Prioridad

ALGORITMO POR
TURNO
CIRCULAR/PRIORIDAD

Algoritmo por Turno Circular


COLA DE LISTOS PARA EJECUTARSE
Este tipo de cola de mltiples niveles retroalimentada, es la que se encuentra implementada en la
mayora de los sistemas operativos comerciales. Cada sistema operativo establece el nmero de
subcolas a implementar, siendo comnmente un numero entre dos y cinco subcolas.

2.3 Comunicacin entre Procesos


Los procesos de acuerdo a la comunicacin que realizan se pueden clasificar de dos formas:
Procesos Independientes
Procesos Cooperativos

Comentario [LERR71]: No requieren


interactuar con otros procesos desde su
ejecucin hasta el final nunca se
comunican

LOS PROCESOS DE TIPO INDEPENDIENTE son aquellos que no requieren ninguna interaccin con
otros procesos para realizar su ejecucin, por lo tanto no requieren comunicarse con otros
procesos para compartir informacin.
LOS PROCESOS COOPERATIVOS son aquellos que requieren interactuar con otros procesos para
cumplir con su ejecucin, este tipo de procesos requerir utilizar algn mecanismo de
comunicacin para intercambiar informacin entre ellos.
Los mecanismos de comunicacin que los sistemas operativos ofrecen son:
Tuberas.
Memoria compartida
Sockets

Comentario [LERR72]: Requieren de


otros procesos (intercambiar informacin)
para poder terminar su ejecucin.

Tuberas
Las tuberas se asimilan en su funcionamiento a las tuberas de agua, es decir de un extremo de la
tubera se vierte agua y del otro extremo saldr el agua. De forma similar, las tuberas de un
extremo de un proceso escribir la informacin a transmitir y del otro extremo otro proceso leer
de la tubera la informacin escrita. Las tuberas se caracterizan por lo siguiente:
Son implementadas por el sistema operativo internamente como bferes asignados a
archivos.
nicamente permiten comunicacin unidireccional.
Existen tuberas con nombre y sin nombre.

Las tuberas utilizan una tcnica conocida como paso de mensajes para transmitir la informacin,
el formato de un mensaje puede o no estar estandarizado, normalmente las tuberas utilizan
formatos para sus mensajes no estandarizados.
Cada sistema operativo implementa las tuberas mediante llamadas al sistema, por ejemplo los
sistemas operativos UNIX y LINUX implementan la llamada pipe(), mientras que el sistema
operativo Windows implementa la llamada CreatePipe().

Memoria Compartida
La memoria compartida consiste de un bloque de memoria que el sistema operativo reserva para
que los procesos puedan escribir o leer informacin en ella. Los procesos debern solicitar acceso
a la memoria compartida y posteriormente, anexar la memoria compartida a su espacio de
direcciones de manera tal que pueda acceder a su contenido para escribir o leer informacin de la
memoria compartida, un proceso debe conocerla direccin donde inicia la memoria compartida,
as como definir el tipo de informacin que almacenar en ella. El tamao de la memoria
compartida a crear debe darse en BYTES.

Sockets
Los sockets asemejan en su funcionamiento a las tuberas, la diferencia se encuentra en que
permiten comunicar procesos que se encuentran en computadoras diferentes. Adicionalmente, los

Comentario [LERR73]: Se utiliza ms


esta. PREGUNTAR AL PROFE POR QUE SE
USA EL DE SIN NOMBRE Y NO EL DE CON
NOMBRE.

Comentario [LERR74]: Para tuberas


sin nombre

sockets utilizan formatos de mensajes estandarizados por un protocolo, y cuenta con un esquema
de direccionamiento basado en una red de comunicacin de datos para ubicar a los procesos a
comunicar.

Sincronizacin de los procesos

Secuencia correcta de
ejecucin

Los mecanismos de comunicacin anteriores son conocidos como IPC (Comunicacin Inter
Procesos), y todos los sistemas operativos lo implementan.
La comunicacin entre procesos cooperativos, frecuentemente requerirn una sincronizacin
entre estos procesos para llevar a cabo de manera correcta la ejecucin de cada proceso. La
sincronizacin de la comunicacin es importante debido a que sin esta, podran presentarse
problemas de consistencia en la informacin a ser compartida entre los procesos. Por ejemplo,
observe en siguiente problema generado por falta de sincronizacin:

Proceso 1 Escribe en
X el valor de A*B;

Proceso 2 Lee de X el
resultado de A*B;
Proceso 3 Escribe en
X el balor de A/B;
Proceso 2 Lee de X el
resultado de A/B

Secuencia incorrecta de
ejecucin

Proceso 1 Escribe en
X el valor de A*B;
Proceso 3 Escribe en
X el valor de A/B;
Proceo 2 Lee de X el
resultado de A*B;

Comentario [LERR75]: Sincronizamos


cuando se utiliza recursos compartidos. Ya
que antes de ser manipulado un recurso se
debe de guardar su valor anterior si no se
pierde como en el ejemplo de arriba

Proceso 2 Lee de X el
resultado de A/B;

Comentario [LERR76]: Solo un


proceso este manipulando la variable X.
Comentario [LERR77]: Tiene variabel
atmica Var=0 libre la seccin critica. Var=1
Esta ocupado.La var atmica es como se
manipula

.
En el ejemplo, la variable X es compartida entre los procesos, esta variable es ejemplo de un
recurso compartido el cual deber tener un acceso sincronizado para garantizar la consistencia de
la informacin a manipular por los procesos.
Las instrucciones que ejecuta un proceso para manipular un recurso compartido es conocido como
regin o seccin crtica. Una regin crtica debe garantizar una caracterstica conocida como
exclusin mutua. La exclusin mutua consiste en permitir que solamente un proceso a la pueda
estar ejecutando su regin crtica.
Para la sincronizacin en la comunicacin de procesos, los sistemas operativos implementan un
conjunto de mecanismos de sincronizacin, los cuales son los siguientes:
Semforos
Monitores
Mutex
Cada uno de estos mecanismos implementan una particular forma de sincronizar la comunicacin,
estos mecanismos son aplicados a la solucin de problemas de comunicacin. En los sistemas
operativos existe un grupo de problemas de comunicacin clsicos donde es requerida la
sincronizacin siendo estos:
Problemas Productor/Consumidor
Problema Lectores/Escritores
Problema Cena de Filsofos
En la solucin de cada uno de estos problemas es posible utilizar alguno de los mecanismos de
sincronizacin antes mencionados.

Comentario [LERR78]: Se enfoca a


objetos. Se encuentre en POO. Generar a
travs de un objetos los mtodos de una
regin critica para garantizar la exclusin
mutua
Comentario [LERR79]: Es una
bandera que se inicia cuando un proceso
ingresa a la seccin crtica y se libera
cuando termina
Comentario [LERR80]: Se asume que
el recurso compartido es un buffer y el
productor los genera hasta poder saturalos
y en este momento el productor deber
esperarse o se perdern. Y el consumidor
va a leer los elementos que se ponen en el
buffer. El consumidor se bloque mientras
no haya algo en el buffer. Se monitorea
mediante los mecanismos de arriba.
Clsico en la comunicacin en RED
Comentario [LERR81]: Acceso a
archivos. Puede haber n lectores, pero solo
un solo escritor. Escritura mayor prioridad
sobre la lectura.
Clsico en Base de Datos
Comentario [LERR82]: Nmero impar
de filsofos sentados en una meza circular
con la cena, cada uno con tenedor
compartido y un cuchillo propio y lo van a .
Comer . . . . . Filosofar
Que ninguno miera de hambre
Cuando procesos necesitan de recursos
compartidos, impresoras, recurso en RED.
Abrazo mortal.- Se queda bloqueado el
proceso porque nunca se libera el recuso al
que quiere acceder.

UNIDAD III ADMINISTRADOR DE


MEMORIA
3.1 INTRODUCCIN
El administrador de memoria es el segundo administrador importante de un sistema operativo. El
administrador de memoria se encarga de controlar tanto la memoria fsica como la virtual de un
sistema de cmputo.
Inicialmente, el administrador de memoria en los sistemas operativos monoprogramados era muy
simple, su funcin principal consista en cargar en memoria el proceso a ejecutar, verificando que
el tamao del proceso no fuera mayor al tamao de la memoria disponible.
Posteriormente, en los sistemas operativos multiprogramados, el administrador de memoria es
ms complejo en sus funciones. Una de las principales funciones que debe de realizar es la divisin
de la memoria en mltiples partes para mantener mltiples procesos en ella. Para realizar esta
divisin, se utilizan dos posibles tcnicas:

Particiones fijas.
Particiones variables

Particiones Fijas
La tcnica de particiones fijas consiste en dividir la memoria en particiones de un tamao fijo, las
cuales sern asignadas a los procesos segn su tamao. El nmero de particiones que se le
asignar a cada proceso se calcula mediante la siguiente expresin.
=

Las particiones fijas tienen como principal punto a observar el tamao que se asigne a la particin,
ya que dependiendo de esta tamao, el administrador de memoria manejar eficientemente o no
eficientemente la memoria disponible del sistema. Otro aspecto a considerar es que una vez
asignado el tamao de la particin este no podr cambiar.
Un problema crtico asociado a las particiones fijas es la fragmentacin interna. La fragmentacin
interna consiste en el espacio de memoria fsica (RAM) desperdiciado dentro de una particin fija.
Este espacio se considera desperdiciado porque no podr ser utilizado por ningn motivo otro
proceso.
Considere el siguiente ejemplo que muestra la fragmentacin interna:

Comentario [LERR83]: Espacio de


memoria desperdiciada. Otro proceso no
podr tener acceso a ella. En el ejemplo de
abajo se ilustra los problemas que estos
ocacionan

Suponga que el siguiente grupo de procesos desea iniciar su ejecucin en una memoria de 32 kB
con un tamao de particin fija de 4 kB
Proceso
Tamao (KB)
1
5
2
18
3
2
4
6
5
10

Se asignan los
Procesos 1,2,3

32 KB

Solucin:
P1
P1
P2
P2
P2
P2
P2
P3

P1=5KB
////////////////

Fagmentacin interna (3KB)

Los procesos
P2=18KB
4, 5 esperan

/////////////////
////////////////

Fagmentacin interna (2KB)


P3=2KB
Fagmentacin interna (2KB)

PEDIR AL CULERO DE ANOTA

Despus de la asignacin de los tres primeros procesos, se observa una fragmentacin interna
toral de 7 KB los cuales son desperdiciados debido a que ningn otro proceso podr ser asignado
dentro de los espacios de memoria libre, aun cuando para el ejemplo se tenga memoria libre
suficiente para colocar al proceso 4. El problema crtico que se presenta, es la espera de los
procesos 4 y 5 la cual puede ser muy larga dependiendo de cunto tiempo tarden en liberar la
memoria los otros procesos.
Sin embargo, las particiones fijas son la tcnica de divisin de memoria ms utilizada en los
sistemas operativos actuales.

Particiones Variables
La tcnica de particiones variables consiste en dividir la memoria de acuerdo al tamao y
estructura del proceso a colocar en dicha memoria.
Las particiones variables sufren del mismo, problema de fragmentacin que las particiones fijas, a
esta fragmentacin se le conoce como fragmentacin externa.
La fragmentacin externa consiste en el espacio de memoria desperdiciado por la entrada y salida
de procesos de la memoria. Este problema puede llegar a ser mucho ms crtico que la
fragmentacin interna, debido a los distintos tamaos de particiones que se pueden producir.
Considere el siguiente ejemplo:
Suponga el siguiente grupo de procesos que desea iniciar su ejecucin en una memoria de 32 KB
con particiones variables.

Proceso
1
2
3
4
5

Tamao (KB)
5
13
6
18
19

DIBUJITOS PEDIR AL CULERO DE ANOTA.


Las particiones variables debido a la fragmentacin externa que pueden provocar son la tcnica
menos utilizada en los sistemas operativos actuales.

Comentario [LERR84]: En cualquier


punto de la asignacin de un proceso se
puede tener fragmentacin externa, lo que
lo hace ms grave a comparacin de las
particiones fijas que la fragmentacin
interna se da en la ltima particin.
TENCIA DE REUBICACION
(COMPACTACIN) DE PROCESOS, LA IDEA
ES MOVER EL PROCESO .. . . . EL
PROBLEMA ES QUE CONSUME MUCHO
TIEMPO . . . . . EXISTE PERO NO SE LLEGA A
UTILIZAR

Comentario [LERR85]: Se puede


entender como una memoria temporal

3.2 Intercambio
El intercambio es una tcnica que un administrador de memoria utiliza para extender la capacidad
de almacenamiento de la memoria fsica (RAM). Esta extensin consiste en utilizar una regin de
disco, especficamente preparada, para almacenar de forma temporal procesos que hayan sido
desalojados de la RAM.
La regin de disco que se usa como regin de intercambio est controlada directamente por el
administrador de memoria, el cual es el encargado de colocar procesos en esta regin as como de
recuperar procesos de la regin para colocarlos de nuevo en memoria RAM.
Existen dos tipos de manejo de la regin de intercambio en disco, estos tipos son:
Por particin de disco. En este tipo, la regin de intercambio se asigna como una particin
fsica del disco duro, la cual se crea en conjunto con la instalacin del sistema operativo.
Por archivos del sistema. En este tipo, la regin de intercambio se crea como un archivo
de sistema, el cual se inicializa una vez que el sistema operativo ha sido instalado.
La regin de intercambio es utilizado cuando el sistema operativo detecta que la memoria RAM
ha sobre pasado un umbral de saturacin. Una vez que se detecta esta situacin, el administrador
de memoria comienza a desalojar procesos de la RAM y los coloca en la regin de intercambio.
Con esta accin se libera espacio en RAM permitiendo que nuevos procesos puedan colocarse en
memoria, con esto se posibilita la ejecucin de ms procesos de los que podran ejecutarse en la
RAM.
Internamente, la regin de intercambio mantiene una organizacin estructural particular, la cual
debe empatar con el tipo de elementos que se manejen en el esquema de organizacin de la
memoria. Existen dos mtodos a travs de los cuales se organiza la regin de intercambio.
Listas enlazadas
Mapas de bits
Nos sirve para que cuando se satura el umbral saca de mantener un mayor nmero de procesos en
ejecucin. Se intenta mantener poco uso de la regin de intercambio por que se tardara mucho
tiempo accediendo a disco, por eso los SO tratan de evitar el uso de esta. La regin debe ser
mnimo del doble de la memoria RAM para que no se sature esta tan rpido mximo 4 veces ms.
Si se coloca mas veces realmente se desperdiciara mucho

Comentario [LERR86]: La regin de


intercambio en Linux es la particin que se
crea SWAP. Aqu el acceso que se tiene a
esta regin es bastante rpido. Desventaja.
Fija el valor de la particin no se puede
cambiar de dimensin ms que utilizando
alguna herramienta NO ES FLEXIBLE
Comentario [LERR87]: Windows. Si
hay flexibilidad para cambiar la dimensin .
Desventaja.- El acceso es demasiado lento
ES WINDOWS

Comentario [LERR88]: Paginacin o


segmentacin.

Listas enlazadas
Las listas enlazadas son un mtodo que permite organizar internamente la estructura de la regin
de intercambio. Para mantener esta estructura, las listas enlazadas mantienen a cada uno de los
elementos de un proceso como parte de la lista.
Como primer elemento de una lista enlazada, se define un elemento cabecera que contiene
informacin relacionada con el proceso al cual pertenecen los elementos contenidos en la lista, o
en caso de que la lista este vaca el elemento cabecera contendr los elementos disponibles para
utilizarse por algn proceso que sea intercambiado.
La ventaja que presentan las listas enlazadas es su sencillez de implementacin, debido a que son
generadas dinmicamente de acuerdo al ingreso de procesos intercambiados.

Comentario [LERR89]: A cual proceso


pertenece, el ID. En la cabecera.
La lista guarda direcciones (contenido de
esas direccione, sea las instrucciones) tal
cuales saca de la memoria RAM y mete a
disco (Que contienen instrucciones). No se
puede ejecutar el proceso desde disco, se
tiene que regresar nuevamente a la RAM
colocndola en regiones de memoria de la
RAM que estn libres

La desventaja que presenta este mtodo es la velocidad de acceso a cada elemento de los
procesos, el cual puede llegar a ser poco eficiente cuando se tiene un gran tamao asignado a la
regin de intercambio.

Mapa de Bits
El mapa de bits es un mtodo que consiste en organizar la regin de intercambio mediante una
tabla, la cual contiene como entrada tanto el identificador del elemento de la regin de
intercambio como un conjunto de bits. Este conjunto de bits es utilizado para controlar cada
elemento de la regin de intercambio, como parte del control que realizan estos bits se encuentra
la identificacin de cada elemento asociado a un proceso y la identificacin de un elemento de la
regin de intercambio como libre u ocupado. El nmero de bits mantenidos para el mapa es
variable pero normalmente se encuentra en el intervalo de 8 a 16 bits.
La ventaja que tiene el mapa de bits es que permite una mayor velocidad de acceso a cada
elemento de la regin de intercambio en comparacin con las listas enlazadas.
La desventaja que presenta el mapa de bits es la limitante en el nmero de bits que pueden
asociarse a cada una de las entradas de la tabla.
En los sistemas operativos actuales es el mtodo de mapa de bits el ms utilizado para organizar la
regin de intercambio y acceder rpidamente a dicha regin.

Comentario [LERR90]: Lo han


extendido hasta 24 bits

3.3 Memoria Virtual


La memoria virtual es una tcnica complementaria a la regin de intercambio para extender la
capacidad de memoria fsica (RAM). Este tipo de memoria consiste en separar la memoria de los
procesos a ejecutar en dos espacios de direccionamiento, los cuales son:
Espacio de direcciones virtual o lgico: Este espacio consiste en el conjunto de direcciones
de memoria generadas al momento de crear el programa a ejecutar (Cuando se hace la
compilacin del programa).
Espacio de direcciones fsicas: Este espacio consiste en el conjunto de direcciones
generadas, para cada una de las direcciones virtuales o lgicas de un programa.

Comentario [LERR91]: Las


direcciones virtuales o lgicas tienen una
memoria fsica.

Fuente

C
Cpp
java

Compilador

Codigo
objeto
.obj

Ejecutable

.exe
.class

Enlazador
El compilador normalmente tiene analizadores.
Sintctico. Revisa el conjunto de palabras reservadas
Semntico. Revisa que se construyan sentencias vlidas.
Despus de pasar por esas etapas se crea un lenguaje intermedio (.obj) el cual tiene cierto nivel de
cdigo mquina, e interfaces abiertas a complementar.

Instruccion 1
.
.
.
Instruccion n
::Cdigo Fuente::

DIreccion 1
.
.
.
Direccin n
::Espacio de
direcciones lgicas::

Comentario [LERR92]: Es de lo que va


hacer uso el enlazador para terminar de
pasarlo a lenguaje mquina. Por que esas
partes de cdigo no son parte del lenguaje
si no parte de bibliotecas o clases y el
enlazador anexa referencias a bibliotecas o
clases.

Cdigo Corresp.
.
.
.
::Cdigo
Maquina::

Se necesita un direccionamiento para saber una direccin segn el tipo de dato, el tipo de
instruccin, el compilador tambin hace eso el grupo de direcciones que le corresponde segn
c/instruccin Esas son las direcciones lgicas. Y las fsicas cuando se mapean en la RAM y estas no
necesario es continua a diferencia del lgico, que no sean continan tiene un gran impacto
positivo ya que si sale por intercambio cuando regrese a la RAM para seguir ejecutndose se
puede poner en cualquier otro espacio no necesariamente en el que estaba El & en C hace
referencia a la direccin fsica en RAM donde se encuentra actualmente.
El administrador de memoria para relacionar el espacio de direcciones virtuales con el espacio de
direcciones fsicas, utiliza un elemento de hardware llamado Unidad de Manejo de Memoria
(MMU). La MMU se encarga de auxiliar en la traduccin de direcciones virtuales a direcciones
fsica, interactan con un algoritmo que implementa el administrador de memoria.
La MMU se ubica entre la CPU y la memoria fsica (RAM), recibiendo como entrada las direcciones
virtuales generadas por la CPU y enviado como salida las direcciones fsicas de memoria RAM.
Esquemticamente la ubicacin de la MMU es la siguiente:

Direcciones Virtuales

CPU

MMU
(Traduccin)

RAM

Direcciones fsicas correspondientes


Correspondencia entre la pgina con el marco. Tantas pginas tantos marcos.
Los sistemas operativos en la implementacin de su administrador de memoria, normalmente
deben de seleccionar algn esquema de organizacin de memoria. Existen dos esquemas de
organizacin de memoria, los cuales son:
Paginacin
Segmentacin

Comentario [LERR93]: Elemento de


hardware muy importante que en todos los
procesadores aparece. Servir de apoyo
para realizar la traduccin entre
direcciones virtuales a direcciones fsicas.

Paginacin
La paginacin es el esquema de organizacin de memoria virtual ms utilizado por los sistemas
operativos actuales. La paginacin presenta las caractersticas siguientes:
La divisin de la memoria tanto virtual como lgica se realiza bajo el enfoque de
particiones fijas.
Implementa un grupo de elementos para llevar a cabo la implementacin del esquema
basado en sus particiones fijas.
Implementa un algoritmo para la traduccin de las direcciones virtuales o lgicas a sus
correspondientes direcciones fsicas.
La paginacin asume la tcnica de particiones fijas para organizar la manera en que ser dividida
tanto la memoria virtual como la memoria fsica, esto con la finalidad de manejar eficientemente
el espacio de memoria desperdiciado (Fragmentacin interna) cuando son asignados procesos a
memoria.
La paginacin implementa tres elementos principales para el manejo de sus particiones fijas, estos
elementos son:
Pgina: Una pgina es una particin fija ubicada en el espacio de direcciones virtuales de
un proceso su tamao est definido en el intervalo de 2KB hasta 64KB dependiendo del
sistema operativo. A cada proceso se le asignarn tantas pginas requiera de acuerdo a su
tamao.
Marco: Un marco es una particin fija ubicado en el espacio de direcciones fsicas para un
proceso. Su tamao es idntico al tamao de la pgina que se haya definido. Una pgina
ser mapeada a un marco correspondiente, por lo que un proceso tendr tantos marcos
como pginas le hayan sido asignadas.
Tabla de pginas: Una tabla de pginas consiste en el agrupamiento de las pginas
asignadas a un proceso, asocindolas con su marco correspondiente. Una tabla de pginas
tendr tantas entradas como pginas tenga un proceso. A cada proceso que se ejecute en
memoria se le asignar una tabla de pginas.
La paginacin para llevar a cabo la traduccin de direcciones virtuales a direcciones fsicas, se
auxilia de un algoritmo conocido como algoritmo de traduccin de direcciones, el cual consiste en
lo siguiente:
Representar tanto el tamao de la pgina como el tamao de la RAM disponible en bytes y
en potencia de dos.
Calcular el nmero de bits ms significativos que se utilizarn en una direccin virtual para
el nmero de pgina mediante la expresin:
#bits/pg.=m-n , Donde:
m= exponente del tamao de la RAM.
n= exponente del tamao de la pgina.
Representar la direccin virtual a traducir en binario (Si es que est dada en otro sistema
numrico), y separar los bits necesarios para el nmero de pgina, los restantes bits de la
direccin sern de desplazamiento.

Comentario [LERR94]: Casi todos los


SO actuales.

Comentario [LERR95]: Paralelos o


tiempo real. Si es mayor a 64 hay mucho
desperdicio por la fragmentacin interna.

NOTA: Una direccin cual en paginacin est dividida en dos secciones: nmero de pgina
y desplazamiento.

#Pginas
Bits ms significativos

Desplazamiento
Bits restantes

Convertir el nmero de pgina obtenido en el paso 3 a decimal y consultar la tabla de


pginas del proceso para obtener el marco que le corresponde a esa pgina.
Obtener la direccin fsica base mediante la siguiente expresin:
Dir.Fisica.Base= nmero de marco*Tamao de pgina
Convertir el desplazamiento obtenido en el paso 3 a decimal.
Obtener la direccin fsica traducida mediante la siguiente expresin:
Dir.Fsica=Dir.Fsica.Base+Desplazamiento

Ejemplo. Considere un tamao de RAM (Memoria Fsica) de 32 bytes y un tamao de pagina de 4


bytes, con una tabla de pginas para un proceso dado como la siguiente:
Pgina
0
1
2
3

Marco
7
4
6
5

Pgina
4
5
6
7

Marco
1
3
2
0

Traduzca las siguientes direcciones virtuales a sus correspondientes direcciones fsicas:


a) (18)10
b) (05)10
Solucin:
a)
1. Tamao de RAM=32 Bytes= 2^5 bytes 5->m
a. Tamao de pgina= 4 bytes= 2^2 bytes 2->n
2. # Bits/Pg= m-n= 5-2 = 3 Bits
3. (18)10= (10010)2 Donde los tres primeros son el num de pagina (Calculado en el punto 2)
y los siguientes dos el desplazamiento.
4. (100)2=(4)10 =>Marco=1
5. Dir. Fsica Base=1*4=4
6. (10)2=(2)10
7. Dir. Fsica=4+2=6
Nos indica en memoria RAM (fsica) donde se ubica contenida la instruccin que tiene almacenada
la direccin virtual numero 18.
b)

Comentario [LERR96]: Vemos en la


tabla que la pgina 4 le corresponde al
marco 1.
Comentario [LERR97]: Nos indica
donde inicia la direccin fsica pero
necesitamos considerar el desplazamiento
para obtener la direccin fsica que el
corresponde a la direccin virtual 18.

3.- (05)10=(00101)2 Donde los tres primeros son el nm. De pgina y los siguientes dos el
desplazamiento.
4.- (001)2=(1)10 => Marco=4
5.- Dir. Fsica Base=4*4=16
6.- (01)2 = (1)10
7.- Dir. Fsica=16+1=17
Ejercicio: Considere un tamao de RAM de 4 KB y un tamao de pgina de 256 bytes con un
proceso cuya tabla de pginas es la siguiente:
Pgina
0
1
2
3
4
5
6
7

Marco
11
14
12
8
13
9
15
10

Pgina
8
9
10
11
12
13
14
15

Marco
2
7
6
4
5
0
2
1

Traduzca las siguientes direcciones virtuales a sus correspondientes direcciones fsicas:


a) (4001)10
b) (123)10
c) (1485)10
d) (2946)10
e) (817)10
Solucin:
a)
1 KB =1024 Bytes Entonces 1024*4 =4 KB =4096
1. Tamao de RAM=4 KB= 212 bytes 12->m
a. Tamao de pgina= 256 bytes= 28 bytes 8->n
2. # Bits/Pg= m-n= 12-8 = 4 Bits
3. (4001)10= (111110100001)2 Donde los 4 primeros son el nm. de pgina (Calculado en el
punto 2) y los siguientes el desplazamiento.
4. (1111)2=(15)10 =>Marco=1
5. Dir. Fsica Base=1*256=256 (Numero del marco *Tamao de la pgina)
6. (10100001)2=(161)10
7. Dir. Fsica=256+161=417
b)
1 KB =1024 Bytes Entonces 1024*4 =4 KB =4096
1. Tamao de RAM=4 KB= 212 bytes 12->m
a. Tamao de pgina= 256 bytes= 28 bytes 8->n

Comentario [LERR98]: Vemos en la


tabla que la pgina 15 le corresponde al
marco 1.
Comentario [LERR99]: Nos indica
donde inicia la direccin fsica pero
necesitamos considerar el desplazamiento
para obtener la direccin fsica que el
corresponde a la direccin virtual 4001.

2. # Bits/Pg= m-n= 12-8 = 4 Bits


3. (4001)10= (111110100001)2 Donde los 4 primeros son el nm. de pgina (Calculado en el
punto 2) y los siguientes el desplazamiento.
4. (1111)2=(15)10 =>Marco=1
5. Dir. Fsica Base=1*256=256 (Numero del marco *Tamao de la pgina)
6. (10100001)2=(161)10
7. Dir. Fsica=256+161=417

Comentario [LERR100]: Vemos en la


tabla que la pgina 15 le corresponde al
marco 1.
Comentario [LERR101]: Nos indica
donde inicia la direccin fsica pero
necesitamos considerar el desplazamiento
para obtener la direccin fsica que el
corresponde a la direccin virtual 4001.

Potrebbero piacerti anche