diff --git a/1/ISO/assignments/algorithms/algorithms.pdf b/1/ISO/assignments/algorithms/algorithms.pdf new file mode 100644 index 0000000..72e1b19 Binary files /dev/null and b/1/ISO/assignments/algorithms/algorithms.pdf differ diff --git a/1/ISO/assignments/algorithms/algorithms.tex b/1/ISO/assignments/algorithms/algorithms.tex new file mode 100644 index 0000000..bdf5d41 --- /dev/null +++ b/1/ISO/assignments/algorithms/algorithms.tex @@ -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} diff --git a/1/ISO/notes/unit-01.md b/1/ISO/notes/unit-01.md index c766f24..a83bec4 100644 --- a/1/ISO/notes/unit-01.md +++ b/1/ISO/notes/unit-01.md @@ -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.