Planificacion del Procesador
Guillermo Cruz y Harif Benuel Reyes
gcruz66@hotmail.com
harifreyes@yahoo.com
Resumen. La planificación de procesos es el encargado de elegir, en tiempo de
procesador el procesos que tiene mayor prioridad en el sistema y que esté listo
para ser ejecutado.
Uno de los objetivos de
los sistemas operativos multiprogramados es proporcionar una utilización
eficiente de los recursos de los procesos, permitiendo a los procesos un uso de
ellos que evite situaciones de inanición.
La planificación de
procesos, determina los criterios de elección de los procesos a usar el CPU. El
rendimiento de una planificación de procesos dependerá de los programas y
prioridades de sus procesos, ya que estos programas pueden estar orientados a
cálculos o pueden ser interactivos. Las aplicaciones de tiempo real, tienen
requisitos en el uso del procesador, no se pueden comparar con las aplicaciones
habituales del sistema.
La planificación de
procesos es independiente, del número de procesos, o de una plataforma
multiprocesador, ya que multiprocesador tiene como objetivo el equilibrio de la
carga de los procesadores, para una mejor utilización de recursos, esto
mantiene a cada proceso en un mismo procesador durante su tiempo de ejecución.
Planificación a largo
plazo: es cuando se crea un proceso nuevo, se puede decidir criterios para su
planificación, como la prioridad y quantum.
Planificación a mediano
plazo: cuando sale un proceso de memoria pro problemas de espacio, hace que
esto sea panificable.
Planificación a corto
plazo: cuando un procesos abandona el CPU, toma la decisión de que proceso
planificar de lo estableció en la panificación y su valor de parámetros.
Aspectos a tomar en
cuenta en el rendimiento de la planificación:
• Eficiencia.
• Tiempo de finalización.
• Productividad.
• Tiempo de espera.
• Latencia (Tiempo de respuesta).
• Tasa del CPU.
• Equidad.
Abstract. Process planning is responsible for choosing, in processor time,
the processes that have the highest priority in the system and that are ready
to be executed.
One of the objectives of multiprogrammed
operating systems is to provide an efficient use of process resources, allowing
processes to use them to avoid situations of starvation.
Process planning determines the criteria for
choosing the processes to be used by the CPU. The performance of a process
planning will depend on the schedules and priorities of your processes, as
these programs can be calculation oriented or interactive. Real-time
applications, which have processor usage requirements, can not be compared to
typical system applications.
The process planning is independent, the
number of processes, or a multiprocessor platform, since multiprocessor aims to
balance the load of processors, for a better utilization of resources, this
keeps each process in the same processor during its execution time.
Long-term planning: when you create a new
process, you can decide criteria for your planning, such as priority and
quantum.
Medium-term planning: when a memory process
pro problems of space, makes this breadmaking.
Short-term planning: when a process leaves
the CPU, it makes the decision of which process to plan of it established in
the baking and its value of parameters.
Aspects to be taken into account in the
performance of planning:
• Efficiency.
• End time.
• Productivity.
• Wait time.
• Latency (Response Time).
• CPU rate.
• Equity.
Palabras Claves.
·
Proceso.
·
Hilo.
·
Planificación.
·
Algoritmo.
·
Núcleo (Kernel).
·
Prioridad.
·
Eficiente.
·
Gestión.
·
Multitarea.
Planificación de procesos en Linux (Ubuntu)
La planificación de procesos se lleva a cabo con la función Schedule ( ),
existen tres tipos de procesos estos son:
·
Tiempo
real: son los procesos cuyo tiempo de respuesta tiene que estar limitado para
que no exceda un tiempo máximo.
·
Interactivos:
no utilizan bastante tiempo, aunque hay momentos que requieren bastante tiempo
y la respuesta tiene que ser rápida, ya que el usuario está esperando que su
proceso esté listo.
·
Segundo
plano: estos procesos no tienen interacción con el usuario y el tiempo de
respuesta no es un tiempo crítico.
La planificación en Linux influye en el comportamiento y diseño del
subsistema de memoria, una razón para que tengan un funciona miento correcto y
un óptimo comportamiento, la planificación de Linux reparte el procesador para
todos los procesos de forma ecuánime.
Los objetivos de la planificación de procesos en Linux:
Maximizar la eficiencia del procesador, para incrementar la utilización del
procesador se tiene que incrementar el nivel de multiprogramación.
Permite un menor tiempo de ejecución, además de planificar un tiempo menor
de ejecución en los procesos, los ejecuta según su prioridad, el procesador
debe distinguir los procesos por Enterada y salida y los procesos limitados, en
el sistema operativo Linux respeta las prioridades de los procesos, el kernel
distingue entre trabajos planificados por batch y tareas interactivas.
El tiempo de espera de un proceso es la suma del tiempo de servicio y el
tiempo de espera en la cola de procesos que están ejecutando. El tiempo de
respuesta debe ser menor, Linux trata de que el tiempo de respuesta sea bajo
aunque siempre tiene un retraso.
El planificador de procesos debe ser predecible para los procesos con prioridades.
El rendimiento baja poco a poco al aumentar el número de procesos a cargar.
En Linux se utiliza el Process Scheduler (SCHED) este es el componente del
kernel, su función es de controlar el acceso de procesos al CPU. Cada uno de
los procesos en Linux son divididos en categorías, según su prioridad, estas
categorías en que se dividen los procesos son: interactivos, por lotes y de
tiempo real.
Cuando se invoca la función Schedule() cuando se cambia el estado de un
proceos o un nuevo proceos esta en la cola de los procesos que están
preaparados para ser ejecutados o en cualquier situcaion que los procesos
tengan un cambio.
La planificación de los procesos puede cambiar en el tiempo de ejecución,
como se mencionó en el primer parrado se manejan tres tipos de planificación
para los procesos en tiempo real, estos son: SCHED_NORMAL, SCHED_FIFO,
SCHED_RR.
SCHED NORMAL es lo clásico de Unix, este no aplica en tiempo real. Toma en
cuenta las prioridades y según los procesos que tienen más tiempo en el sistema
su prioridad va disminuyendo, es una planificación de tipo Round Robín cada
proceso tiene un quantum distinto, en esta planificación se intenta potenciar
el tiempo de respuesta de los procesos interactivos.
En tiempo real se debe temer un tiempo de respuesta eficiente, debido a
esto los procesos son más prioritarios del sistema, los procesos deben de tener
un tiempo más efectivo y eficiente para la ejecución de cada proceso. Existen
dos planificaciones: SCHED_FIFO, SCHED_RR.
Los Sistemas operativos de Linux antiguos eran prácticamente sencillos y su
objetivo era seleccionar el proceso que le quedaba mayor cantidad de quantum
por consumir, estando en primer lugar los procesos interactivos.
La planificación actual de procesos es mucho más eficiente en cuanto al
número de procesos y de procesadores. Algunas características son:
·
Los
procesos tienen un rango de prioridad entre 100 como máxima prioridad y 139
como mínima.
·
Existe
un prioridad estática esta determina el quantum del proceso si la prioridad es
menor a 120 entonces su quantum es (140-P*)20, sino es (140-P)*5.
·
Cada
procesos tiene un bono de interactividad de 0 a 10 la cual modifica la
prioridad estática para obtener una prioridad dinámica, esta prioridad la
utiliza el planificador para elegir el proceso a ejecutar.
El tiempo en que el proceso pasa a estado de bloqueado TASK_INTERRUPTIBLE
no cuenta igual que el proceso que pasa por el estado TASK_ININTERRUPTIBLE.
Para evitar que los procesos de menos prioridad tengan una inanición, y
para que los procesos interactivos se activen, se gestiona dos colas de
procesos. La cola de los procesos activos, son aquellos según el quantum no ha
expirado, la cola de los procesos que su quantum han expirado el planificador
no lo elige, hasta que terminen de ejecutarse los procesos activos, los
procesos expirados se activaran son su quantum relleno de nuevo.
SCHED FIFO utiliza el algoritmo FIFO primero en entrar primero en salir,
los procesos entran en una cola y ahí esperan hasta que se ejecutan
secuencialmente, se calcula el tiempo para cada proceso, este tipo de
planificación no fuerza a los procesos a abandonar el procesador, se utiliza en
procesos de tiempo real.
Cuando un proceso pasa a estado de bloqueado, se elige el siguiente proceso
para ejecutarlo. En otros casos se activa un flag llamado TIF_NEED_RESCHED. Se
utiliza esta función scheuduler_tick() cuando el procesos en ejecución ha
agotado su quantum, con try_to_wake:up() cuando un proceso está activo y su
prioridad es más alta que la del procesos que está en ejecución.
La planificación es parte del núcleo o kernel esta decide qué proceso será
ejecutado por el procesador. El planificador de Linux utiliza tres tipos de
planificación, una es para procesos normales y las otras dos planificaciones
son para procesos en tiempo real, cada proceso tiene una prioridad esta prioridad
puede cambiarse atreves de llamadas al sistema.
En el sistema operativo de Linux el objetivo es poder manejar los procesos
en segundo plano, aplicaciones interactivas y en tiempo real, este sistema
operativo está diseñado para hacer más eficiente el rendimiento. Aunque el
rendimiento en procesos con manejo de interrupciones es deficiente producen
tiempo de espera de larga duración y sus técnicas para mejorar el rendimiento
de tiempo.
Nice ( ) en Linux
Esta función cambia la prioridad de los procesos, un valor alto significa
que tiene una prioridad baja y menor tiempo en CPU, solo el súper usuario puede
especificar un incremento negativo o un aumento de prioridad, si el procesos
tiene un valor bajo se le da una prioridad más alta y más tiempo en CPU.
Los valores de prioridad están entre -20 y 19. El valor por defecto para
los procesos suele ser de valor 0. NICE ( ) es útil cuando varios procesos
están demandando más recursos de los que el CPU puede proporcionar. Un proceso
de mayor prioridad tendrá una parte más grande de tiempo de CPU que un proceso
de prioridad inferior.
Planificación de procesos en Android
La planificación de procesos en el Sistema operativo de Android, su
funcionamiento está basado al núcleo 2.6.x
de Linux, en este sistema operativo surgen una serie de problemas con
los procesos y los tiempo de respuesta ya que si se tiene muchas aplicaciones
instaladas en el sistema, este empieza a ralentizar muchos procesos, esto
sucede debido a que cuando se instala una aplicación muchas veces esta queda
funcionando en segundo plano esperando que vuelva a utilizarse o solicitar una
función, en vez de cerrar completamente
la aplicación y volver a abrir cuando se vuelva a necesitar, esto ocasiona que
se sature la memoria debido a la cantidad de procesos que están en espera y
esto hace que sea lento el funcionamiento del sistema operativo.
Algunas aplicaciones deben tener hilos en segundo plano, un ejemplo es
Google Maps, Gmail o prácticamente cualquier aplicación que está activa para
dar un tipo de notificación y esto satura la memoria.
Android utiliza un entorno de ejecución, este maneja el tiempo de vida de
cada proceso en memoria. Android asegura la respuesta de la aplicación,
deteniendo y eliminando a los procesos que hacen lenta la fluidez y libera
recursos para los procesos o aplicaciones
de mayor prioridad.
Dalvik la máquina virtual de Android
Android utiliza una máquina virtual llamada Dalvik, esta ejecuta los
procesos independientes, Dalvik se basa en registros que ha sido optimizada
para asegurar que un dispositivo sea capaz de ejecutar múltiples procesos de
manera eficiente. Android utiliza su propia maquina virtual para asegurar que la multitarea se ejecutan eficientemente.
Todo el hardware de un Sistema Android y los accesos a los servicios del
sistema se gestiona mediante Dalvik como un intermedio. Esta máquina virtual
organiza la ejecución de las aplicaciones.
Prioridad de los Procesos en Android
Cada proceso tiene una prioridad que solicita una cantidad de recursos de
las aplicaciones almacenadas en el sistema. Los procesos que tienen una
prioridad baja se matan en primer lugar, los procesos pueden tener una
dependencia en un proveedor o un servicio, los cuales son suministrados por una
segunda aplicación, la segunda aplicación tendrá una prioridad más alta que la
aplicación que solicita este servicio. Las aplicaciones se mantienen en
funcionamiento y en memoria hasta que el sistema solicita sus recursos para que
puedan ser utilizadas por otras aplicaciones.
Prioridad de los procesos
La planificación de procesos determina a que procesos puede eliminar,
debido a esto Android asigna prioridad a sus procesos
Procesos activos: también llamados en primer plano son los que tienen una
interacción con el usuario. Contiene la actividad ejecutada en la pantalla del
usuario que está en primer plano y con la cual interactúa en tiempo real, este
método es llamado onResume(). Características de los procesos activos:
·
Tienen
un estado activo (Activity), están en primer plano y responden a eventos del
usuario.
·
Tiene
un controlador de eventos llamado ONRECEIVE, son los servicios, actividades o
receptores que ejecuta.
·
ONSTART
son los servicios que se están ejecutando
Procesos visibles: estos procesos no están en primer plano ni responden a
eventos del usuario, los procesos visibles se eliminan en circunstancias
extremas para poder permitir que los procesos activos continúen ejecutándose.
Es un proceso que aloja una actividad que no se está ejecutando en primer plano
es decir su método onPause().
Procesos en segundo plano: son los procesos que no son visibles y están en
ejecución. Son los procesos que se ejecutan cuando un servicio ha sido llamado.
Background Process es un proceso que contiene una actividad que actualmente no
es visible por el usuario y que no tiene una prioridad alta.
Procesos Vacíos: estos mejoran el rendimiento del sistema, Android retiene
aplicaciones en memoria después de que estos han sido cerrados, estos se
mantienen en memoria cache para mejorar el tiempo de respuesta de las
aplicaciones al empezar a ejecutarse. Son los procesos que no tiene o aloja ningún tipo de componente. El sistema
elimina comúnmente este tipo de procesos para tener memoria disponible.
Planificación eficiente de
procesos en Android
Android gestiona las aplicaciones que tiene activas y se ejecutan en
segundo plano, segundo plano quiere decir que el sistema cierra las
aplicaciones cuando se necesita más memoria, para que no sea necesario utilizar
la memoria secundaria. Los usuarios que utilizan un sistema operativo Android
informan de que la planificación de procesos en Android no es muy eficiente, ya
que muchas veces tiene muchos procesos en ejecución y esto ocasiona una
lentitud en el dispositivo.
Planificación de procesos en IOS
Este sistema operativo utiliza la programación cooperativa por subprocesos,
donde un proceso controla múltiples subprocesos cooperativos y también
proporciona programación preventiva para tareas de multiprocesamiento. El
kernel utiliza un algoritmo de planificación preventivo. Todos los procesos de
Procces Manager se ejecutan dentro de una tarea multiprocesamiento que es
llamada “tarea azul”. Utiliza un algoritmo Round Robín, un proceso tiene el
control del procesador a otro proceso llamando explícitamente a una función de
bloque WAITNEXTEVENT. Cada proceso tiene copia del Thread Manager este programa
los subprocesos del proceso de forma cooperativa, un hilo produce el control
del procesador a otro hilo llamando YieldToAnyThreado, YiedToThread.
IOS es un sistema operativo que se deriva de MAC OS X, está basado en
Darwin BSD, un sistema operativo Unix, el núcleo está basado en MACH y se
encarga de todos los aspectos del sistema operativo. Se encarga de:
·
Gestiona
el acceso a red.
·
Gestiona
el sistema de archivos.
·
Gestiona
la memoria virtual.
·
Gestiona
hilos, procesos, comunicación entre procesos y manejo de la memoria.
·
Gestiona
los procesos que interactúan con el hardware.
La planificación de los procesos lo hace mediante colas de prioridades de
los procesos, y la gestión de la memoria por medio de paginación. Cuando 2 o
más procesos tienen la misma prioridad se ejecutan según sea su orden de
llegada. Las prioridades de los procesos son:
·
Critico
·
Alto
·
Medio
·
Bajo
Cuando un proceso que se ejecuta se suspende, el planificador recupera el
control del CPU y utiliza un algoritmo para seleccionar el siguiente proceso.
El sistema operativo IOS provee interfaces basadas en lenguaje C, en las
cuales se puede acceder a características de un nivel bajo del sistema operativo,
por medio de la biblioteca Libsystem, las cuales dan soporte a:
·
Acceso
al sistema de archivos.
·
Asignación
de memoria.
·
Threading
o hilos.
·
Red.
·
Manejo
de E/S.
Procesos permitidos
IOS permite
algunos procesos:
·
Servicios
de locaclizacion. Framework:CoreLocation.
·
Audio.
Framework: Mediaplayer.
·
Accesorios
externos. Framework: ExternalAccessory
·
Voip.
Multitarea en IOS
Esta función solo la tiene la versión IOS 4 y superiores. Las aplicaciones
que son ejecutadas en el sistema, no terminan de ejecutarse, si se ejecutan
otras aplicaciones consecuentemente, es tas aplicaciones pasan a un segundo
plano o background, La transición del primer plano al segundo plano y de forma
inversa es posible mediante el uso de UIKIT.
UIKIT tiene las herramientas básica que se necesitan para que sean
implementados los gráficos, los eventos de las aplicaciones, se basa en la
infraestructura de la que se encentra en el Mac OS X, incluyendo el manejo de
archivos
Estados de ejecución en IOS
StartupITems: se lanza justo al final de los procesos de arranque, pero
antes de que inicie sesión. Este brinda servicios a los usuarios del sistema
Launchd/Acciones: no muere al terminar la carga del sistema, permanece
activo y se encarga de lanzar procesos como modificación de fichero, cargas de
fichero, finalización de aplicaciones, LoginWindows proceso que carga la
pantalla de login.
LoginWindows: coordina la sesión de usuario y el proceso de Logging In,
luego procede a cargar el entorno del usuario.
App Nap: permite darle total o la mayoría de los recursos a la aplicación
que está en primer plano. Las aplicaciones que quedan ocultas bajan de prioridad
pasando a un segundo plano.
Timer Coalescing: junta todos los procesos los alinea y hace que todos a la
vez realicen tareas que requieren, evitando un consumo de energía, reduciendo
un porcentaje el consumo del CPU.
XPC: Mejora los tiempos de lanzamiento, evitando bloqueos y mejorando la
seguridad al permitir que cada proceso se enfoque en una tarea específica.
Planificación
de procesos en Windows
Los sistemas
antiguos de Microsoft Windows y MS-DOS no eran multitarea, Windows 3.1x utiliza
un planificador no preventivo esto significa que no interrumpe programas. Se
basó en el programa para terminar o decirle al sistema operativo que no
necesitaba el procesador para que pudiera pasar al otro proceso. Windows 95
tiene un planificador preventivo rudimentario, para el soporte opto permitir
que las aplicaciones de 16 bits se ejecuten sin interrupción.
Windows NT
planifica Theads por prioridades, un esquema parecido al de UNIX. La prioridad
se divide en 32 niveles, que se dividen en dos clases que son tiempo real y
variable. Los 16 niveles superiores son de prioridad estática, continúen la
clase de tiempo real. Los 16 niveles inferiores es donde se ubican los Threads
de usuario, son de tiempo compartido y el algoritmo utilizado es el FCFS
(primero en entrar, primero en salir). L a planifican está basada en hilos y no
por procesos. La prioridad 0 está reservada para el sistema operativo, los
usuarios pueden seleccionar 5 prioridades para asignarle a una aplicación que
este en ejecución desde el administrador de tareas o atreves de la API de
Windows.
En Windows Vista
para utilizar el registro de contador de ciclos de los procesadores modernos
para realizar un seguimiento de los ciclos del CPU que ha ejecutado un hilo, en
lugar de utilizar interrupción en intervalos de tiempo. Windows Vista también
utiliza planificador por prioridad para la cola de entrada y salida para que
los programas y desfragmentadores de disco no interfiera con las operaciones de
primer plano.
El algoritmo
utilizado en Windows es Round Robín, selecciona todos los procesos de manera
equitativa y en orden, comienza por los primeros procesos hasta llegar al
último. Round Robín es una secuencia por
turno, ejecuta diferentes procesos de manera concurrente, para la utilización
equitativa de los recursos del equipo, el tiempo es limitado para cada proceso,
y luego suspendiendo este proceso para que se ejecute el próximo y así
sucesivamente.
Se agregaran
todos los temas que fuesen necesarios, recordando que serán abordados de modo
claro y ordenado, y se describirá de manera específica sin pretender alargar
los temas más de lo necesario.
Al usar el algoritmo
Round Robín, tiene desventaja en que cambia los procesos en ejecución con
frecuencia, debido a esto se tiene una pérdida de tiempo.
Los hilos que
requieren atención inmediata están en tiempo real, esto incluye funciones como
comunicaciones de tareas en tiempo real. Ya que se utiliza un planificador
preferente a prioridades, los hilos con prioridad de tiempo real tienen
preferencia sobre otros hilos.
En monoprocesador
cuando un hilo con su prioridad mayor que la del que está en ejecución, pasa a
estar listo, el hilo con menor prioridad es expulsado y al procesador se le
asigna al proceso de mayor prioridad. Los que tiene prioridad en tiempo real,
todos tienen un prioridad fija que no cambia nunca.
Planificación Multitareas
Es más compleja cuando
se tiene varios procesadores, el uso de la multiprogramación en cada procesador
es individual. Tiene la característica de multiprocesamiento simétrico ya que
cada procesador tiene su planificación y consulta a la cola de procesos listos.
Planificación en tiempo real
Tiene poca sobrecarga
al sistema, y no se ajustan las prioridades con el tiempo. Algunos procesos
cambian sus condiciones: dirigida por tabla, prioridad. Los procesos que se
dirigen por tabla, se determina su tiempo de ejecución, cuando debe ejecutarse
cada proceso. Los procesos por prioridad, utiliza un planificador por
prioridad, este es usado en sistemas multiprogramados que no son de tiempo
real, en tiempo real la prioridad se ajusta a las restricciones de tiempo de
cada proceso.
Planificador de tiempo real dinámica
Este ajusta sus
prioridades a condición que cambian con frecuencia, suele tener una sobrecarga
significativa, y debe asegurar que no tenga un incumplimiento de tiempos.
Se divide en 2
categorías: Basada en plan y basada en el esfuerzo.
La planificación
basada en un plan determina el tiempo de ejecución, mientras que la
planificación casada en el mejor esfuerzo, el sistema trata de cumplir con
todos los plazos y puede abandonar cualquier procesos que ya este iniciado o en
ejecución aunque este no haya terminado.
Planificación por plazos
Los procesos deben
completar un tiempo específico. Es difícil de implementar ya que este genera
una sobrecarga, debe prever un plan de requerimientos de recursos, y el
servicio proporcionado a los otros procesos de puede degradar.
Algoritmos de planificación utilizados por diferentes Sistemas
Operativos
Planificacion
de procesos en Solaris
El Sistema
Operativo Solaris utiliza una cola de realimentación en múltiples niveles con
prioridades entre 0 y 169. Las prioridades reservadas para los subprocesos
compartidos en el tiempo son de 0 - 59, para los procesos del sistema son de
60-99, para los procesos en tiempo real son de 100 – 159 y para las
interrupciones de baja prioridad son de 160 – 169.
La diferencia con
Linux, cuando un proceso se hace usando su tiempo quantum, se le da una
prioridad nueva y se vuelve a poner en cola. En Solaris 9 se implementaron 2
clases nuevas de programación, la clase de cuota justa y la clase de prioridad
fija. En cuanto a los hilos que tienen una prioridad fija tienen la misma
prioridad que el de la clase de tiempo compartido, pero sus prioridades no se
ajustan dinámicamente.
El manejo de
procesos en Solaris es por prioridad y Round Robín. En algunas versiones se
maneja también un ajuste dinámico de la prioridad de acuerdo al tiempo que los
procesos han esperado y al tiempo que ya han usado el CPU. El sistema provee
facilidades para crear ‘pipes’ entre procesos, contabilizar el uso de CPU por
proceso y una pila común para todos los procesos cuando necesitan estarse
ejecutando en modo privilegiado (cuando hicieron una llamada al sistema).
Solaris permite
que un proceso haga una copia de sí mismo por medio de la llamada ‘fork’, lo
cual es muy útil cuando se realizan trabajos paralelos o concurrentes; también
se proveen facilidades para el envío de mensajes entre procesos.
CONCLUSIONES
Gracias a las
investigaciones se ha resumido la planificación del procesador y los procesos
en diferentes sistemas operativos, el tiempo de respuesta, la prioridad de los
procesos y el algoritmo utilizado por cada uno de los sistemas operativos. Esto
es para conocimientos de cada uno de los lectores de este artículo y saber cómo
funcionan los procesos en los diferentes sistemas operativos, los tipos de
funciones que utilizan, las funciones que utilizan los kernel de los sistemas y
los tipos de prioridad.
AGRADECIMIENTOS
Al personal de la
“Biblioteca Central Juan Antonio Medina Durón” de la Universidad Pedagógica
Nacional Francisco Morazán por estar disponibles siempre para atender a las
consultas y la manera tan paciente de guiarnos en la búsqueda de la
información, haciéndola aún más accesible.
Referencias
1.
Stallings, W. (2005). Sistemas
operativos: Aspectos internos y principios de diseño (5ta edición). Madrid: Pearson Educación, S.A.
2.
Silberschatz, A., Galvin, P.,
Gagne, G. (2006). Fundamentos de sistemas operativos (7ma edición). Madrid:
McGraw-Hill/Interamericana de España, S.A.U.
3.
Tanenbaum, A. (2009). Sistemas
operativos modernos (3ra edición). México: Pearson educación.
4.
J.Bar L.Bauder. 1994.windows
interno 3.1.Alfaomega grupo editor
5.
Gorman, Mel (2007),
Understanding The Linux Virtual Memory Manager, Upper Saddle River NJ, Prentice
Hall.
6.
Bovet, Daniel (2005),
Understanding The Linux Kernel 3rd edition, O’Reilly.
7.
Mckellar, Jessica (2010), Linux
Device Drivers 4th edition, O’Reilly
8.
Stallings, William (2012),
Operating Systems: Internals and Design Principles 7th edition, , Upper Saddle
River NJ, Prentice Hall.
9.
TANENBAUM, Andrew y WOODHULL,
Albert (1999), Sistemas Operativos. Diseño e implementación 2a. edición
(México, Prentice Hall)
10.
STALLINGS, William (2004):
Operating Systems 5th edition (USA, Prentice Hall)
11.
DEITEL, H. M (2000).:
Introducción a los Sistemas Operativos 2a. edición (México Addison Wesley
Iberoamericana)
12.
CARRETO DE MIGUEL, GARCÍA PÉREZ
(2001): Sistemas Operativos. Una visión aplicada (España, Mc. Graw
Hill/Interamericana de España)
13.
FLYNN, Ida y McIver A. (2001): Sistemas
Operativos 3a. edición (México, Thomson Learning)
Comentarios
Publicar un comentario