Added algorithm research assignment.
This commit is contained in:
parent
44667579a6
commit
a00ca3206a
BIN
1/ISO/assignments/algorithms/algorithms.pdf
Normal file
BIN
1/ISO/assignments/algorithms/algorithms.pdf
Normal file
Binary file not shown.
42
1/ISO/assignments/algorithms/algorithms.tex
Normal file
42
1/ISO/assignments/algorithms/algorithms.tex
Normal file
@ -0,0 +1,42 @@
|
||||
\documentclass[12pt]{article}
|
||||
\usepackage[spanish]{babel}
|
||||
|
||||
\title{Algoritmos De Prioridad De Procesos}
|
||||
\author{Nicolás A. Ortega Froysa}
|
||||
|
||||
\begin{document}
|
||||
\maketitle
|
||||
|
||||
\section{Apropiación}
|
||||
La planificación de procesos puede ser de dos tipos distintos:
|
||||
|
||||
\begin{itemize}
|
||||
\item \textbf{Apropiativa:} el planificador (proceso a cargo de planificar
|
||||
los procesos) puede interrumpir un proceso durante su ejecución, y
|
||||
forzarlo al estado de espera.
|
||||
\item \textbf{No Apropiativa:} el planificador \textbf{no} puede interrumpir
|
||||
un proceso durante su ejecución, y tiene que esperar a que el proceso
|
||||
devuelva el control al planificador. Esto puede ser por causa de bloqueo
|
||||
necesario o voluntario.
|
||||
\end{itemize}
|
||||
|
||||
Los sistemas no apropiativos eran más comunes cuando se valía de sistemas
|
||||
operativos monousuario y monoprogramadas. Mas hoy en día apenas se usan ya que
|
||||
un proceso podría monopolizar de la CPU, que empeoraría la experiencia del
|
||||
usuario y el tiempo de respuesta.
|
||||
|
||||
\section{Round-Robin}
|
||||
Este algoritmo es, por definición, \textit{apropiativa}. El planificador asigna
|
||||
a cada proceso un cuanto de tiempo \texttt{q} de igual tamaño y en orden
|
||||
circular. Gestiona todos los procesos sin prioridad. El planificador concede la
|
||||
CPU al proceso durante \texttt{q}; si el proceso no devuelve control de la CPU
|
||||
al planificador dentro de su cuanto de tiempo, el planificador se apropia de la
|
||||
CPU, interrumpiendo al proceso, y asigna la CPU al siguiente proceso.
|
||||
|
||||
\section{Colas Multi-nivel}
|
||||
Se distribuyen las tareas en una cola de varios niveles de prioridad,
|
||||
dependiendo de diferentes factores (e.g.\ tiempo de CPU, acceso E/S, tamaño de
|
||||
memoria, etc.). Un proceso sólo puede apropiarse de la CPU si todas las colas de
|
||||
mayor prioridad están vacías.
|
||||
|
||||
\end{document}
|
@ -81,3 +81,20 @@ Un proceso puede tener los siguientes estados:
|
||||
- Transición
|
||||
- Ejecución/Activo
|
||||
- Bloqueado
|
||||
|
||||
## Gestión de Memoria
|
||||
Cuando un sistema es monoprograma, entonces el único proceso tiene acceso pleno
|
||||
a toda la memoria de la máquina. Mas cuando hay varios programas, tiene que
|
||||
haber un sistema para asignar la memoria a los diferentes procesos.
|
||||
|
||||
El sistema operativo también se tiene que ocupar de no dejar que un proceso
|
||||
acceda a la memoria de otro - y por supuesto no del sistema operativo. Esto se
|
||||
soluciona sobre todo con la memoria virtual, tal que el proceso cree que tiene
|
||||
toda la memoria (incluso más grande que el tamaño físico de la memoria), y la
|
||||
CPU se ocupa de traducir las direcciones. Cuando se intenta usar más memoria de
|
||||
lo que hay en memoria física, se hace uso de un almacenamiento secundario que se
|
||||
llama __swap__.
|
||||
|
||||
Para gestionar la memoria se suele usar una estructura lógica de __páginas__. Si
|
||||
es demasiado pequeña entonces sobrecarga el sistema al tener que gestionar
|
||||
tantas. Mas si es demasiado grande se desaprovecha espacio.
|
||||
|
Loading…
Reference in New Issue
Block a user