Added algorithm research assignment.

This commit is contained in:
Nicolás A. Ortega Froysa 2021-09-23 17:21:50 +02:00
parent 44667579a6
commit a00ca3206a
3 changed files with 59 additions and 0 deletions

Binary file not shown.

View 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}

View File

@ -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.