Added algorithm research assignment.
This commit is contained in:
		
							
								
								
									
										
											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.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user