2. Introducción
• El tiempo compartido es un caso especial de la multiprogramación
(operaciones simultáneas de muchas tareas dentro de la
computadora) en el cuál los usuarios acceden a la computadora a
través de terminales, por lo general, dispositivos compuestos por un
teclado y un monitor.
15/11/2015 Mtl. Lourdes Cahuich 2
3. • En un sistema de tiempo compartido puede haber docenas e incluso
cientos de usuarios, compartiendo una computadora al mismo
tiempo.
• La computadora en realidad no ejecuta los procesos de todos los
usuarios a la vez, pero hace el trabajo tan rápido que puede
proporcionar el servicio a cada usuario, varias veces por segundo, de
manera que los usuarios tienen la impresión de que sus programas
son atendidos de manera simultánea.
15/11/2015 Mtl. Lourdes Cahuich 3
4. • Debido a que los primeros mainframes y minicomputadores eran
extremadamente costosos, era rara vez posible permitir a un solo
usuario el acceso exclusivo a la máquina para uso interactivo. Pero
dado que los computadores que debían realizar tareas de forma
interactiva a menudo perdían mucho tiempo mientras esperaban la
acción de entrada del usuario, fue sugerido que múltiples usuarios
podrían compartir una máquina al asignar el tiempo ocioso de un
usuario para servir a otros usuarios.
15/11/2015 Mtl. Lourdes Cahuich 4
5. • Con el auge de la microcomputación a principios de los años 1980, el
tiempo compartido se desvaneció porque los microprocesadores
individuales eran suficientemente baratos para que una sola persona
pudiera tener todo el tiempo de CPU dedicado solamente a sus
necesidades, incluso cuando estaba ocioso.
15/11/2015 Mtl. Lourdes Cahuich 5
6. Cómo el S.O. implementa el tiempo
compartido
• El sistema operativo usa el tiempo real para generar interrupciones a
intervalos regulares. En cada interrupción se atiende a otro proceso.
• El núcleo verifica cuándo se le debe dar a un proceso la oportunidad
de ser atendido.
• El núcleo requiere un cambio de contexto para cambiar de procesos.
15/11/2015 Mtl. Lourdes Cahuich 6
7. Cambio de contexto
• El proceso que esta corriendo se cambia de estatus de “ejecutando” a
“listo para ejecutar”
• Los pasos en el cambio de contexto son:
• El procesador limpia la línea de instrucciones a ejecutarse
• Se nota su proceso de ejecución
• Se salvan los contenidos de los registros
• El núcleo carga una nueva tabla de páginas
• El cambio de contexto se hacen varias veces para asegurarse que
todos los procesos tienen oportunidad de ejecutarse
15/11/2015 Mtl. Lourdes Cahuich 7
11. 15/11/2015 Mtl. Lourdes Cahuich 11
=== TaskControlBlock ===
Un task control block, es una estructura utilizada para manejar y administrar las tareas que se quieren ejecutar en un sistema
operativo. Esta estructura debe poseer todos los atributos y campos necesarios para asegurar que el sistema operativo pueda
cargar la tarea adecuada y ejecutarla. El TCB (task control block), debe contener el identificador y la pila de la tarea
correspondiente y dependiendo de la implementación, si es una lista doblemente enlazada en la que se encuentran los TCB de
las tareas a ejecutar, el apuntador a la tarea siguiente y la tarea previa para que el despachador tenga la información necesaria
para poder cargar la siguiente tarea a ejecutarse.
Un ejemplo en lenguaje C de un TCB se muestra a continuación:
typedef struct _TCB {
char *StackPtr; //Apuntador al stack
struct _TCB *Next; //Apuntador al siguiente TCB (tarea siguiete)
struct _TCB *Prev; //Apuntador al TCB anterior (tarea anterior)
char Stack[STACK_DEPTH]; //Tamaño del stack de la tarea
int Task; //Identificador de la tarea
char estado; //Estado de la tarea (corriendo, bloqueado, en espera, etc.)
} TCB;