Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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%
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
Unidad VI Seguridad
6.1 Definiciones de seguridad
6.2 Mecanismos de proteccin.
MIERCOLES LABORATORIO
Instalar LINUX
Clasificacin de tipo de procesador
-
RISC
CISC
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.
Tipos de Sistemas
Sistemas Genricos
Sistemas Especializados
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
Capa de Hardware.
Ncleo o kernel.
Capa de Servicios.
Capa de Aplicacin.
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
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
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
12
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
14
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:
.
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
16
id
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.
17
Padre
(Cdigo
original)
Id_proc !=0
.
Id_proc ==0
Hijo
Hijo del
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
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
Comandos
Descripcin
ls
chmod
vi
uname
clear
Limpia la terminal.
cd
Cambiar de directorio.
cat
grep
pwd
ps
cp
mv
mkdir
Crea directorios.
rmdir
whoami
Windows (MSDOS)
Linux
Copia un archivo
copy
cp
Renombra un archivo
ren
mv
21
Lista archivos
dir
ls
chdir
pwd
echo
echo
find
grep
Borra/Limpia la pantalla
cls
clear
Ver un archivo
type
cat
cd
cd
Crea un directorio
mkdir
mkdir
Elimina un archivo
del
rm
edit
vi
ver
Elimina un directorio
rmdir
rmdir
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
0 SEEK_SET
access
stat
chmod
int access(name,
amode);
int stat (const char*
Path, struct stat*
Buffer);
int chmod(char* name,
int permisos);
al
final
del
RWX
RWX
RWX
23
chown
fcntl
opendir
readdir
struct dirent
*readdir(DIR *dir);
closedir
24
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.
27
Padre
Exec()
Hijo
Hijo
28
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
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
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.
() =
=1
31
Donde
= .
=
= .
3. Determinar el tiempo de espera promedio mediante la siguiente expresin:
=1 ()
() =
Donde
=
=
Duracin (U.T)
10
15
2
7
1
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
0+10+25+27+34
5
96
5
.
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
()== .
()== .
3
10+20+1+3+0
5
34
5
Proceso
1
2
3
4
5
Duracin (U.T)
10
15
2
7
1
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
0+8+0+8+0
5
16
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
Prioridad
5
4
1
3
2
25+10+0+3+2
5
40
5
P1
P2
15 19
P4 P1 P2
P2
23 26 28 32
35
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.
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
P5
69
P6
74
P7
75
P8
115
P9
122
P10
134
P11
144
P12
169
204
0+3+28+68+69+74+75+115+122+134+144+169
12
926
12
Procesos
Algoritmo FCFS
Procesos
Procesos
ALGORITMO POR
PRIORIDAD
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
TURNO
CIRCULAR/PRIORIDAD
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
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
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.
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;
Proceso 2 Lee de X el
resultado de A/B;
.
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.
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:
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
////////////////
Los procesos
P2=18KB
4, 5 esperan
/////////////////
////////////////
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
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
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.
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.
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::
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
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.
NOTA: Una direccin cual en paginacin est dividida en dos secciones: nmero de pgina
y desplazamiento.
#Pginas
Bits ms significativos
Desplazamiento
Bits restantes
Marco
7
4
6
5
Pgina
4
5
6
7
Marco
1
3
2
0
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