Cuestionario 2 1.- ¿Qué es un proceso? ¿Cuáles son los estados de un proceso? ● Abstracción de un programa en ejecución. ● Unidad de programa que actúa como una computadora de propósito particular. ● Asociado a cada proceso existe: – su espacio de direcciones (una lista de sectores de memoria que el proceso puede leer y escribir). ● programa ejecutable (segmento de código) ● datos (segmento de datos y heap) ● stack – el conjunto de valores que poseen los registros del procesador (posibilitan la ejecución del proceso). 2.- ¿Cuál es la función del planificador de procesos? Java tiene un Planificador (Scheduler), una lista de procesos, que muestra por pantalla todos los hilos que se están ejecutando en todos los programas y decide cuáles deben ejecutarse y cuáles deben encontrarse preparados para su ejecución. Hay dos características de los hilos que el planificador tiene en cuenta en este proceso de decisión. 3.- ¿Qué es un time slice? Una forma bastante justa y extendida de hacerlo es mediante la asignación de rodajas de tiempo a cada uno de los procesos, de tal forma que cuando un proceso cumple su tiempo de permanencia en el procesador, éste es desalojado y pasado al estado listo. En este estado esperará una nueva oportunidad para pasar a Ejecución. 4.- ¿a que se denomina cambio de contexto? El cambio de contexto es un concepto distinto al cambio de un proceso. Puede ocurrir un cambio de contexto sin cambiar el estado del proceso que está actualmente en estado de ejecución. En tal caso, salvar el contexto y restaurarlo posteriormente involucra un pequeño coste extra. Sin embargo, si el proceso que estaba ejecutándose tiene que pasar a otro estado (listo o bloqueado), el sistema operativo tiene que llevar a cabo cambios substanciales en su entorno( contexto ). 5.- ¿Cuáles son los elementos de un proceso? Creado, listo, ejecución, bloqueado, listo. 6.- ¿Cuáles son los atributos para la administración de procesos? ID del proceso Estado del proceso (listo, ejecución, bloqueado, terminado). Ubicación en memoria. 7.- ¿Cuál seria la disposición en memoria de un proceso? En un Sistema Operativo tradicional, la memoria suele estar dividida en dos partes: un espacio de usuario donde suele encontrarse la mayoría de la información relativa a los procesos de usuario y un espacio del núcleo donde reside el código y las estructuras de datos propios del SO. 8.- ¿Qué elementos existen en el espacio del usuario y que elementos existen en el espacio del núcleo ó kernel? En el espacio de usuario se encuentra información propia del proceso tales como el código del proceso, el contador de programa, sus variables, su pila y su puntero de pila. Sin embargo, el SO necesita tener información del estado de los procesos para poder realizar apropiadamente los cambios de contexto. Esta información, que suele conocerse con el nombre de bloque de control del proceso (PCB), suele residir en el espacio del núcleo. 9.- ¿Qué es un hilo y cuales son sus características? Es como una secuencia de control dentro de un proceso que ejecuta sus instrucciones de forma independiente. 10.- ¿Cuál es la diferencia principal entre un hilo y un proceso? Que los procesos son entidades pesadas mientras que los hilos son entidades ligeras, ya que los procesos consumen muchos recursos de procesador en cada llamada mientras que los hilos comparten la información del proceso. 11.- ¿Cuáles son los dos niveles de hilos que existen? Aquellos que nosotros usaremos para programar y que pueden crearse desde lenguajes de programación como Java y aquellos otros hilos del propio SO que sirven para dar soporte a nuestros hilos de usuario y que son los hilos del sistema. 12.- ¿Qué son los hilos posix? Los hilos permiten la ejecución concurrente de varias secuencias de instrucciones asociadas a diferentes funciones dentro de un mismo proceso compartiendo un mismo espacio de direcciones y las mismas estructuras de datos del núcleo. Cuando se quiera escribir código multi-hilo portable, código que funcione bajo Solaris, FreeBSD, Linux y otros, los hilos POSIX son el camino a seguir. 13.- ¿Cuáles son las formas de implementación de Linux? El nivel de usuario y el nivel núcleo ó kernel. 14.- ¿Cuáles son las técnicas para hacer la planificación de hilos? Hay principalmente tres técnicas distintas para hacer la planificación de hilos sobre los recursos del núcleo (indirectamente sobre las distintas CPU’s). Muchos hilos en un procesador lógico (muchos-a-uno). Un hilo por procesador lógico (uno a uno). Muchos hilos en muchos procesadores lógicos (muchos a muchos). 15.- ¿Qué es un hilo en java y cuales son sus formas de crearlo? Java proporciona un API para el uso de hilos. Este API es bastante simple (aproximadamente una veintena de métodos) comparado con otras librerías de hilos como Posix que alcanza el medio centenar de métodos. Como prácticamente todo en Java, los hilos se representan mediante una clase, la clase Thread. Esta clase se encuentra en el paquete java.lang.Thread. Los métodos de esta clase junto con algunos métodos de la clase Object son los que permiten un manejo prácticamente completo de hilos en Java. Existen 2 formas de trabajar con hilos en cuanto a su creación se refiere: - Heredando de la clase Thread - Implementando la interfaz Runnable 16.- ¿Cuáles son los estados de un hilo que se manejan en java? Nuevo, listo, ejecución, bloqueado, dormido, esperando sinchronized, esperar por wait, terminado. 17.- ¿Como pasa al estado de nuevo un hilo? A través del operador new. 18.- ¿Cuáles son los niveles de prioridad de un hilo? Las prioridades de cada hilo en Java están en el rango de 1 (MIN_PRIORITY) a 10 (MAX_PRIORITY). La prioridad de un hilo es inicialmente la misma que la del hilo que lo creó. Por defecto todo hilo tiene la prioridad 5 (NORM_PRIORITY). El planificador siempre pondrá en ejecución aquel hilo con mayor prioridad (teniendo en cuenta lo dicho en el punto anterior) Los hilos de prioridad inferior se ejecutarán cuando estén bloqueados los de prioridad superior. 19.- ¿Qué es un hilo demonio? Los hilos de ejecución demonio también se llaman servicios, porque se ejecutan, normalmente, con prioridad baja y proporcionan un servicio básico a un programa o programas cuando la actividad de la máquina es reducida.