1) Aunque un núcleo solo puede realizar una tarea a la vez, podemos usar los hilos para hacer creer al usuario ( y al ordenador ) que sí se puede hacer más de una tarea al mismo tiempo. En lugar de realizar una tarea al completo, se divide en porciones ( cada hilo se encarga de un aspecto concreto del programa ), de modo que se van alternando entre porciones de distintas tareas para que parezca que ambas se están ejecutando simultáneamente. Con multiprocesamiento podemos ejecutar diferentes procesos a la vez. Si tenemos un solo proceso podemos desdoblarlo en múltiples hilos. Para aumentar su eficiencia, un programa en ejecución debe crear tantos hilos como el doble del número de procesadores de los que disponga el sistema. 2) El ciclo de vida de un proceso es fácil, depende de la creación, la ejecución de instrucciones y la terminación. Un proceso puede finalizar de una de las cuatro siguientes maneras: Salida normal. Salida por error. Error fatal. Eliminado por otro proceso. 3) Un thread normalmente comparte su memoria con otros threads (en la cual, tal como sucede con los procesos, cada thread tendrá asignado su espacio de memoria). Esto se da cuando realizamos una ejecución multi hilos Un grupo de threads es un conjunto de “hilos de ejecución” que están corriendo todos dentro del mismo proceso. Dado que comparten todos la misma porción de memoria, pueden acceder a las mismas variables globales, la misma memoria de heap, los mismos descriptores de archivos, etc. 4) La comunicación entre procesos (comúnmente IPC, del inglés Inter-Process Communication) es una función básica de los sistemas operativos. Los procesos pueden comunicarse entre sí a través de compartir espacios de memoria, ya sean variables compartidas o buffers, o a través de las herramientas provistas por las rutinas de IPC. La IPC provee un mecanismo que permite a los procesos comunicarse y sincronizarse entre sí, normalmente a través de un sistema de bajo nivel de paso de mensajes que ofrece la red subyacente. La comunicación se establece siguiendo una serie de reglas (protocolos de comunicación) 5) En el caso de los procesos, existe una relación padre-hijo cuando un proceso crea otro, el primero se denomina padre, y el segundo, hijo. Los hijos de un proceso, así como los hijos de los hijos, etc., se llaman descendientes. El proceso padre mantiene un control sobre toda su descendencia, de forma que puede matar a cualquier proceso perteneciente a ésta. Cuando se crea un proceso hijo, este hereda los recursos del padre Por último, se puede escoger si un proceso hijo determinado se ejecuta de forma síncrona o asíncrona. En el primer caso, el proceso padre se detiene hasta que el proceso hijo ha terminado; en el segundo, ambos procesos siguen ejecutándose de forma independiente. 6) A un proceso bloqueado le falta algún recurso para poder seguir ejecutándose, además de la CPU, por lo que entra en estado de bloqueo hasta recibir este recurso. Por recurso se pueden entender un dispositivo, un dato, etc. El proceso necesita que ocurra algún evento que le permita poder proseguir su ejecución, por lo que un proceso bloqueado no puede entrar en estado de ejecución hasta que reciba el recurso previamente mencionado. 7) En sistemas operativos de computadoras, los sistemas de paginación de memoria dividen los programas en pequeñas partes o páginas. Del mismo modo, la memoria es dividida en trozos del mismo tamaño que las páginas llamados marcos de página. De esta forma, la cantidad de memoria desperdiciada por un proceso es el final de su última página, lo que minimiza la fragmentación interna y evita la externa. La fragmentación externa y, por tanto, la necesidad de compactación puede evitarse por completo empleando la paginación. Ésta consiste en que cada proceso está dividido en varios bloques de tamaño fijo llamados páginas, dejando de requerir que la asignación sea de un área contigua de memoria. La memoria se presentará a cada proceso como si fuera de su uso exclusivo. La memoria física se divide en una serie de marcos (frames), todos ellos del mismo tamaño, y el espacio para cada proceso se divide en una serie de páginas (pages), del mismo tamaño que los marcos 8) La memoria virtual es una técnica que permite ejecutar procesos que podrían no estar totalmente en la memoria. La principal ventaja tangible de este esquema es que los programas pueden ser mas grandes que la memoria física. Además, dicho esquema hace una abstracción de la memoria considerándola como una matriz uniforme y extremadamente grande de almacenamiento, con lo que separa la memoria lógica que el usuario ve, de la memoria física. Esta técnica evita a laos programadores tener que preocuparse por limitaciones de la memoria. 9)