Procesos e hilos. Pablo San Segundo (C-206)
|
|
|
- Claudia Andrea Ávila de la Fuente
- hace 8 años
- Vistas:
Transcripción
1 Procesos e hilos Pablo San Segundo (C-206) [email protected]
2 KERNEL DEL SISTEMA OPERATIVO Al arrancar el PC siempre se carga en memoria una copia del Kernel desde disco El Kernel del sistema operativo es un programa, típicamente programado en C
3 Qué es un Proceso? Un programa en ejecución La unidad de procesamiento gestionada por el S.O.
4 Presencia en memoria y tabla BCP Registros de la CPU Contexto Entorno Identificadores de usuario y grupo Identificador de proceso Variables de entorno Usuario Sistema Control (tablas) Estado: Bloqueado, ejecución, listo Prioridad: cola de prioridades E/S: Desc. recursos,,mensajería etc. Presencia en memoria Bloque de Control de Proceso typedef struct bcp { struct bcp *siguiente; struct bcp *anterior; struct bcp *hebra int retardo; palabra marco; palabra pila; palabra marcador; int pri; int estado; struct bcp *todosenl; int mascara; k_ptrmens retenmens procnombre nombre; } bcp;
5 ESTADOS BÁSICOS DE UN PROCESO EN EJECUCIÓN Un proceso por procesador BLOQUEADO En espera de completar E/S LISTO Preparado para pasar al estado de ejecución
6 ENTORNO DEL PROCESO Definición Tabla NOMBRE-VALOR que se pasa al proceso en su creación Ubicación Imagen en Memoria: típicamente en la pila Valor Por defecto Mandatos Shell (API S.O.) SHELL echo $PATH echo $HOME SHELL PATH=/usr/bin:/home/pss/bin TERM=tty100 HOME=/home/pss PDW=/home/pss/ingsw PATH=$PATH:XXX
7 CARACTERÍSTICAS DE PROCESOS Jerarquías (familias) Procesos hijo, padre, hermano, abuelo etc.. Vida Creación Ejecución Muerte Tipo de ejecución Batch (lotes) Interactivo INI INI SES SHELL INI SES SHELL PROC 1 PROC 2
8 USUARIO Definición Persona autorizada a utilizar el sistema Autenticación User login (internamente es un número para el S.O.: i.e uid) Contraseña (password) Super-usuario (sudo, su) Derechos de administrador Grupo de usuarios Colectivo de usuarios con los mismos permisos Todo usuario ha de pertenecer a un grupo
9 FIN DE INTRODUCCIÓN
10 Clasificación de los Sistemas Operativos
11 Fundamento del multiproceso Definición Ejecución concurrente real de varios procesos con un solo procesador Bases Alternancia de los procesos en la CPU durante la fase de E/S Almacenamiento en memoria de varios procesos simultáneamente
12 Ejemplo Ejecución de proceso nulo
13 VENTAJAS DE LA MULTITAREA Funcionamiento del SO en modo interactivo de forma eficiente Aprovecha tiempos de espera de procesos durante E/S Aumenta el uso de la CPU Nuevo paradigma de programación Principio de modularidad : Un programa-varios procesos
14 GRADO DE MULTIPROGRAMACIÓN Definición Número de procesos activos en un instante de tiempo Recurso Memoria principal Sistema SIN memoria virtual
15 GRADO DE MULTIPROGRAMACIÓN Sistema CON memoria virtual
16 GRADO DE MULTIPROGRAMACIÓN Sistema CON memoria virtual RENDIMIENTO DEL PROCESADOR HIPER-PAGINACIÓN
17 FIN DE S.O. MULTITAREA
18 INFORMACIÓN DEL PROCESO EN S.O. i.e. RIED CODIGO PILA DATOS Se gestionan fuera del BCP. Por qué?
19 ESTADO DEL PROCESO : CONTEXTO Registros generales Motorola 68000: A0-A7, D0-D7 Contador de programa (PC) Siguiente instrucción a ejecutar Puntero de Pila ( Call Stack pointer ) Referencia la pila en memoria asociado a todo proceso Motorola (USP y SSP) Puntero de marco ( Frame pointer ) Registro de Estado Modo de ejecución, máscaras de interrupciones, información acerca de la última operación realizada en la ALU, etc Motorola (SR) Registros especiales Ejemplo: RIED: Registro que Identifica el Espacio de Direcciones que ocupa en memoria el proceso en ejecución
20 PROCESO EN MEMORIA Pertenece al BCP Segmentación fija Hoy en día la segmentación es variable Preasignación inicial de zona de swapping
21 TABLAS DEL SISTEMA OPERATIVO Tabla de procesos (BCP) Información exclusiva de cada proceso que no se puede COMPARTIR y cuyo tamaño no varía durante la ejecución de cada proceso (IMPLEMENTACIÓN) Tabla de Memoria (alias paginado) Información para la gestión de memoria Tabla de Entrada / Salida Información relativa a periféricos y a las operaciones E/S Tabla de Ficheros Información sobre los ficheros utilizados por los procesos
22 Ejemplo Tabla de Ficheros Doble direccionamiento Puntero de posición COMPARTEN LECTURA Y ESCRITURA EN FICHERO TABLA DE FICHEROS
23 EJEMPLO: INFORMACIÓN EN EL BCP TREEPS (LINUX)
24 FIN DE PRESENCIA EN MEMORIA DE UN PROCESO
25 NACIMIENTO DE UN PROCESO Linker Transmisión de ficheros al Motorola A imagen en memoria e.g. kernel.lib/dll
26 FORMACIÓN DE UN PROCESO SE ACTUALIZA LA PRIMERA VEZ Y EN CADA CAMBIO DE CONTEXTO Tablas S.O. COPIA DE LAS BIBLIOTECAS DEL SISTEMA EN LA IMAGEN DE MEMORIA (kernel.lib) EL EJECUTABLE NO CONTIENE A LAS BIBLIOTECAS DEL SISTEMA
27 FIN DE FORMACIÓN DE UN PROCESO
28 SERVICIOS DE GESTIÓN DE PROCESOS Identificación de procesos Entorno de un proceso Creación de procesos Cambio de imagen de un proceso Espera a la terminación de un proceso Finalización de la ejecución de un proceso Información adicional
29 SERVICIO POSIX: fork Definición pid_t fork (void) : Crea un proceso hijo clonando al padre. Copia no exacta (i.e. señales)
30 SERVICIO POSIX: fork Librerías #include <sys/types.h> Retorno Identificador de proceso padre 0 hijo -1 si error Descripción Crea un proceso hijo que ejecuta el mismo programa que el padre Se heredan los descriptores (i.e. archivos) Se desactivan las alarmas pendientes Depende de la distribución
31 SERVICIO POSIX: exec Definición Cambia el programa del proceso Los descriptores abiertos se mantienen
32 EJEMPLO: Servicio fork #include <sys/types.h> #include <iostream> int main() { pid_t pid; pid=fork(); if (pid= = -1) cout<< Error <<endl; else if (pid == 0) { cout<< Proceso hijo <<endl; } else{ cout<< Proceso padre <<endl; } return 0; }
33 SERVICIO POSIX: exec Declaraciones int execl (const char* path, const char* arg, ) int execlp(const char* file, const char* arg, ) int execvp(const char* file, const char* arg[]) Retorno -1 si error o NO RETORNA Descripción El mismo proceso ejecuta otro programa Los descriptores abiertos permanecen abiertos Las señales toman la acción por defecto Ultimo parámetro NULL #include <unistd.h>
34 EJEMPLO: Servicio execl #include <sys/types.h> #include <unistd.h> #include <iostream> int main() { pid_t pid; if ((pid = fork()) = = -1) cout<< Error <<endl; else if (pid == 0) { if(execl ("/bin/ls, ls", -l, NULL)){ cout<< Error al lanzar la tarea <<endl; } } int status; wait(&satus); return 0; }
35 EJEMPLO: Servicio execv #include <sys/types.h> #include <unistd.h> #include <iostream> int main() { pid_t pid; char * arg[3]; arg[0]= gedit ; arg[1]= test.cpp ;arg[2]=null; if ((pid = fork()) = = -1) cout<< Error <<endl; else if (pid == 0) { if(execvp (arg[0], arg)){ cout<< Error al lanzar la tarea <<endl; } } int status; wait(&satus); return 0; }
36 SERVICIO POSIX: int exit (int status) Definición Termina un proceso, devolviendo el parámetro status al proceso padre Declaración void exit (int status) EXIT_SUCCESS, EXIT_FAILURE Argumento Código de retorno al proceso padre Descripción Finaliza la ejecución del proceso Cierra todos los descriptores Se liberan todos los recursos #include <stdlib.h>
37 SERVICIO POSIX: wait #include <sys/wait.h> Definición Espera la terminación de un proceso hijo CUALQUIERA Declaración pid_t wait (int* status) pid_t waitpid (int pid, int* status, int options) Retorno WUNTRACED WNOHANG Identificador del proceso hijo, -1 si error Descripción Permite a un proceso padre esperar hasta que termine un proceso hijo Devuelve el estado del proceso hijo al terminar Macros para analizar el estado: WIFEXITED, WEXITSTATUS WIFSIGNALED, WTERMSIG, etc
38 EJEMPLO : Servicio wait con MACROS int main() { int status; pid_t pid; pid= fork(); if(pid==0){ execlp( gedit, main.cpp, NULL); exit(exit_success); } wait(&status) ; if(wifexited(status)){ if(wexitsatus(status)==exit_success){ cout<< OK <<endl; }else if(wexitsatus(status)==exit_failure)){ cout<< ERROR <<endl; } } cout<<"proceso padre terminado"<<endl; exit(exit_success); } Capturar el error
39 EJEMPLO : Servicio wait multiproceso int main() { int status; pid_t pid; for(int i=0; i<10; i++){ pid= fork(); if(pid==0){ cout<<"hilo: "<<i<<endl; exit(exit_success); } } //Espera a todos los hijos while ( wait(&status)!=-1 ){;} cout<<"proceso padre terminado"<<endl; exit(exit_success); }
40 EJEMPLO: waitpid int main(void) { int status; pid_t pid; pid= fork(); if(pid==0){ sleep(5); cout<<"proceso hijo terminado"<<endl; exit (EXIT_SUCCESS); } pid_t endid= waitpid(pid,&status, WNOHANG); //no bloqueante if(endid==pid){ cout<<"status del hijo diposnible"<<endl; } else{ cout<<"padre termina sin conocer el status del hjo"<<endl; } exit (EXIT_SUCCESS); }
41 Caso de uso típico de exec /fork /wait Padre e hijo comparten recursos
42 EVOLUCIÓN DE PROCESOS: ZOMBIES El hijo muere antes de la ejecución de un servicio wait( ) del padre Hijo: Proceso ZOMBIE BCP de B sigue existiendo
43 EJEMPLO: Zombies int main(void) { pid_t pid; pid= fork(); switch(pid){ case -1: cout<<"error al creado proceso duplicado"<<endl; exit(exit_failure); break; case 0: sleep(1); cout<<"proceso hijo terminado"<<endl; exit(exit_success); break; } cout<< hijo terminará sin wait del padre: ZOMBIE!"<<endl; sleep(30); int status; wait(&status); exit(exit_sucess); }
44 EJEMPLO: JERARQUÍAS DE PROCESOS #include <sys/types.h> #include <sys/wait.h> int main (int argc, char** argv ) { int i, valor; pid_t pid_1, pid_2; i=atoi(argv[1]); pid_1=fork(); while(i>0){ pid_2=fork(); if(pid_2!=0) { wait(&valor) break; } i=i-1; } return 0; } Ejecución desde Terminal <Nombre Ejecutable> 3 JERARQUÍA DE PROCESOS? A) Figura B) Sin Bloque
45 Ejercicio: Procesos distribuidos (I) Impleméntese un proceso que lance la tarea de leer un grafo en formato DIMACS de un fichero de texto y devuelva su grado en pantalla. El proceso principal debe esperar a la terminación de dicha tarea e indicar si se ha resuelto correctamente.
46 FIN DE SERVICIOS POSIX PARA PROCESOS
47 ESTADOS DE UN PROCESO Planificador Corto Plazo SWAPPING
48 PLANIFICACIÓN DE PROCESOS Planificador (Planner): Programa del S.O. que determina que proceso tiene que ejecutarse. Activador (Dispatcher) : Programa del SO que carga el programa seleccionado por el planificador en memoria Formas de planificar del S.O: Largo plazo: Decidir que procesos batch entran a ejecutarse Medio plazo: Añadir procesos a RAM Finalización del estado de suspendido. Sistemas con swapping. CORTO PLAZO: DECIDIR QUÉ PROCESO TOMA EL CONTROL DE LA CPU
49 NOCIONES BÁSICAS DEL CORTO PLAZO Tipos de planificación Sin expulsión: El proceso conserva la CPU mientras lo desee Con expulsión: El S.O. quita la CPU al proceso cada cierto tiempo. Colas de procesos Por prioridad (niveles) Por tipo Lotes Interactivo
50 OBJETIVOS DE LA PLANIFICACIÓN Reparto de la CPU equitativo Eficiencia (optimizar uso CPU) Mejorar el tiempo de respuesta Modo interactivo Modo lotes Cumplir plazos de ejecución en sistemas de tiempo real INCOMPATIBILIDAD DE OBJETIVOS! Windows NT Server Windows 7 Home Edition
51 COLAS DE PROCESOS EJEMPLO BATCH
52 Implementación de colas de procesos Implementación con punteros a otros BCP Acceso eficiente COLAS DE PRIORIDAD
53 ALGORITMOS DE PLANIFICACIÓN CÍCLICA (Round Robin) Asignación de CPU rotatoria Se asigna un tiempo máximo a todos los procesos (time slot ) Los procesos se organizan en una cola circular Un proceso que excede su slot se expulsa y se coloca al final de la cola SISTEMAS DE TIEMPO REPARTO COMPARTIDO por UID en vez de por TIEMPO de PROCESAMIENTO
54 ALGORITMOS DE PLANIFICACIÓN (II) FIFO ( first in-first out ) Los procesos se organizan según una cola clásica. Entran por el final y esperan su turno. Política de planificación SIN EXPULSIÓN El proceso en ejecución sólo será expulsado cuando él mismo realiza una llamada bloqueante al sistema (i.e. E/S) Problema: INANICIÓN Se suele combinar con política de prioridades (i.e. POSIX) PROCESAMIENTO POR LOTES
55 ALGORITMOS DE PLANIFICACIÓN (III) Prioridades Fijas: Problema de inanición (p. ej. RTOS) Variables (aumentan con envejecimiento) El trabajo más corto primero Aplicación en sistemas Batch Menor tiempo de respuesta Penaliza las tareas largas Dificultad en conocer a priori las tareas de mayor duración. Aleatorio
56 ALGORITMOS DE PLANIFICACIÓN RT (IV) Definición Sistemas de Tiempo Real (RTOS) Sistemas donde los procesos deben ejecutarse en instantes predeterminados Tipos de RTS Requisitos blandos / duros Ejecución a plazo fijo / periódico EJEMPLOS QNX RTLinux VxWorks Windows CE Prioridad 2h:30m:10s Reloj de tiempo / 2h:30m:15s 2h:30m:10s 2h:30m:20s REQUISITOS DUROS: En ningún caso de puede rebasar La CAPACIDAD el tiempo de DE reloj PROCESAMIENTO asociado al proceso NO es especialmente alta PREPROCESAMIENTO PREDECIBLE: Sin caches, sin paginación, sin predicción de saltos
57 PLANIFICACIÓN EN POSIX Prioridad Absoluta (RT) (0)-normal (>0)-RT Dinámica POSIX 19 a -20 (mayor número menor prioridad) El planificador siempre elige aquellos procesos con mayor prioridad Políticas de planificación FIFO (procesamiento por lotes) Cíclica (modo interactivo) Otra
58 Ejercicio: Procesos distribuidos (I) Algunos servicios POSIX para prioridad dinámica int setpriotiy (PRIO_PROCESS, int pid, int niceval) RETURN VALUE: -1 ERROR, 0 OK int getpriority (PRIO_PROCESS, int pid) Escriba un programa en C para POSIX que lance dos tareas P1 y P2 que compartanescrituraenunficherodetexto log.txt. Modifique la prioridad de P1 y P2 y compruebe como afecta a la salida. #include <sys/wait.h>
59 Solución int main(void) { pid_t pid, pid2; ofstream f("log.txt", ios::app); pid=fork(); if(pid==0){ //fichero compartido sleep(1); cout<<"proc 1: "<<getpriority(prio_process,pid)<<endl; // escribir en fichero exit(exit_success); } pid2=fork(); if(pid2==0){ sleep(1); cout<<"proc 2: "<<getpriority(prio_process,pid)<<endl; // escribir en fichero exit(exit_success); } setpriority(prio_process,pid,19); setpriority(prio_process,pid2,0); int status; while(wait(&status)!=-1) continue; f.close(); execlp("gedit", "gedit", "log.txt", NULL); exit (EXIT_SUCCESS); } //opcional
60 PLANIFICACIÓN WINDOWS NT
61 FIN DE POLÍTICAS DE PLANIFICACIÓN
62 THREAD (Proceso ligero) Definición Un thread es un proceso que comparte un espacio en memoria con otros threads. Estructura de un proceso en WIN NT Si termina el hilo principal mueren el resto de hilos! COMPARTEN MEMORIA
63 Paralelización con procesos ligeros
64 PROGRAMACIÓN CON THREADS Un thread es equiparable a una función que se ejecuta en PARALELO con otras funciones (threads) Programación con hilos Elevada dificultad Al escribir código es fundamental tener en cuenta un PARALELISMO REAL (aun cuando se tenga un solo procesador) Imaginar LLAMADAS DISTINTAS AL MISMO CÓDIGO Comunicación entre hilos Variables compartidas en memoria Descriptores de recursos compartidos, Elementos de sincronización compartidos etc. Aumenta la velocidad de ejecución de tareas con E/S
65 APLICACIÓN: DISEÑO DE SERVIDORES Tres arquitecturas de servidor
66 GESTIÓN DE PROCESOS LIGEROS JOINING es uno de los mecanismos de sincronización de hilos
67 SERVICIOS POSIX PARA PROCESOS LIGEROS (I) int pthread_create (pthread_t*, const pthread_attr_t*, void* (*func)(void*), void* arg ) Crea un proceso ligero que ejecuta func con argumentos arg y atributos attr Atributos (modificables mediante servicios) Tamaño de la pila Prioridad, Política de planificación etc. RETURN VALUE: 0-OK o ERRNUM void pthread_exit (void* value) Finaliza la ejecución e indica el estado de terminación pthread_t pthread_self (void) COMPARATIVA CON EXIT PARA PROCESOS? Devuelve el identificador del thread que realiza la llamada
68 SERVICIOS POSIX PARA PROCESOS LIGEROS (II) int pthread_join (pthread_t tid, void ** value_ptr) Suspende la ejecución de un thread JOINABLE hasta que termina el thread (a no ser que haya terminado) Devuelve el estado de terminación del thread en value_ptr según devuelto por pthread_exit o PTHREAD_CANCELED. RETURN VALUE: 0-OK int pthread_detach (pthread_t pid) Convierte un hilo en DETACHED en tiempo de ejecución RETURN VALUE: 0-OK #include <pthread.h> Linkar con pthread
69 Ejemplos: Hilos-Creación void* sumar_thread (void*) { int a=5; int b=8; cout<< la suma del hilo es: <<a+b<<endl; phtread_exit(null); } int main(void) { pthread_t thid; pthread_create(&thid, NULL, sumar_thread, NULL); if(pthread_join(thid,null)){ //0-OK cout<< Hilo joinable no terminado adecuadamente <<endl; } exit(exit_success); }
70 Ejemplos: Hilos-Paso de parámetros void* sumar_thread (void*param) { ssumandos* p=(ssumandos*) param; cout<< la suma del hilo es: <<p a +p b<<endl; phtread_exit(null); } struct ssumandos {int a; int b;} ; int main(void) { ssumandos sum; sum.a=10; sum.b=20; pthread_t thid; pthread_create(&thid, NULL, sumar_thread, &sum); pthread_join(thid,null); exit(exit_success); }
71 Ejemplos: Hilos-Comunicación (I) void* sumar_thread (void*param) { ssumandos* p=(ssumandos*) param; p a=8; p b=10; // modifica variable en bloque invocante phtread_exit(null); } struct ssumandos {int a; int b;} ; int main(void) { ssumandos sum; sum.a=10; sum.b=20; pthread_t thid; pthread_create(&thid, NULL, sumar_thread, &sum); pthread_join(thid,null); cout<< Los valores nuevo son: <<sum.a< : <<sum.b<<endl; exit(exit_success); }
72 Ejemplos: Hilos-Comunicación (II) void* sumar_thread (void*param) { ssumandos* p=(ssumandos*) param; ssumandos* pret=new ssumandos; pret->a=p a*2; pret->b=p b*2; //mod. de valores phtread_exit(pret); } struct ssumandos {int a; int b;} ; int main(void) { ssumandos sum; sum.a=10; sum.b=20; pthread_t thid; pthread_create(&thid, NULL, sumar_thread, &sum); void* ret_thread; pthread_join (thid, &ret_thread); ssumandos ret; ret.a=((ssumandos*) ret_thread) a; ret.b=((ssumandos*) ret_thread) b; cout<< Los valores devueltos son: <<ret.a< : <<ret.b<<endl; exit(exit_success); }
73 Ejemplos: Hilos-Comunicación (III) void* sumar_thread (void*param) { ssumandos* p=(ssumandos*) param; suma=p a + p b; phtread_exit(null); } struct ssumandos {int a; int b;} ; int suma=0; //variable compartida en memoria int main(void) { ssumandos sum; sum.a=10; sum.b=20; pthread_t thid; pthread_create(&thid, NULL, sumar_thread, &sum); pthread_join(null); cout<< La suma es: <<suma<<endl; exit(exit_success); }
74 Ejemplos: Hilos-DETACHED void* sumar_thread (void*param) { sleep(10); cout<< hilo terminado <<endl; phtread_exit(null); } int main(void) { pthread_t thid; pthread_create(&thid, NULL, sumar_thread, NULL); pthread_detach (thid); pthread_join(null); cout<< hilo principal terminado <<endl; exit(exit_success); }
75 SERVICIOS POSIX PARA PROCESOS LIGEROS (III) int pthread_attr_init (pthread_attr_t* attr) Inicializa la estructura de atributos de un thread a sus valores por defecto previstos por el S.O. RETURN VALUE: 0-OK Por defecto int pthread_attr_setdetachstate (pthread_attr_t* attr, int detachstate) Establece la forma de terminar de un proceso ligero Si detachstate = PTHREAD_CREATE_DETACHED el proceso ligero libera sus recursos cuando finalice su ejecución Si detachstate = PTHREAD_CREATE_JOINABLE no se liberan los recursos. Hay que utilizar pthread_join( ) En el caso general los hilos deberían ser generados como joinable (recomendado en el standard de POSIX) RETURN VALUE: 0-OK
76 SERVICIOS POSIX PARA PROCESOS LIGEROS (IV) int pthread_attr_setschedpolicy(pthread_attr_t* attr, int schedpol) Establece la política de planificación de un proceso ligero Tiene que tener la proiedad de PTHREAD_EXPLICIT_SCHED Si schedpol = SCHED_FIFO: política FIFO Si schedpol = SCHED_RR : política ROUND ROBIN int pthread_attr_setinheritsched (pthread_attr_t* attr, int inheritsched) Por defecto Establece la política de planificación en relación con el padre Si inheritsched = PTHREAD_EXPLICIT_SCHED se permite que tenga una política de planificación diferente a la del padre Si inheritsched = PTHREAD_INHERIT_SCHED se hereda la política de planificación del padre Por defecto
77 EJEMPLO JERARQUÍA DE THREADS (I) LIBRERÍA THREAD ATRIBUTOS
78 EJEMPLO THREADS (II) PASO DE PARÁMETROS? ATRIBUTO DETACHED ESPERA A TERMINACIÓN DE HIJOS
79 FIN DE SERVICIOS POSIX PARA HILOS
Programación Concurrente
Master en Computación Programación Concurrente Bloque II: Programación concurrente en POSIX Tema 1. Introducción al estándar POSIX Tema 2. Sistema Operativo MaRTE OS Tema 4. Gestión del Tiempo Tema 5.
Bloque I: Principios de sistemas operativos
Bloque I: Principios de sistemas operativos Tema 1. Principios básicos de los sistemas operativos Tema 2. Concurrencia Tema 3. Ficheros Tema 4. Sincronización y programación dirigida por eventos Tema 5.
MC Hilda Castillo Zacatelco PROCESOS
MC Hilda Castillo Zacatelco [email protected] PROCESOS Definición y atributos Un proceso es la instancia de un programa en ejecución. Desde el punto de vista del SO, un proceso es la entidad más pequeña
Sistemas operativos: una visión aplicada. Capítulo 3 Procesos
Sistemas operativos: una visión aplicada Capítulo 3 Procesos Contenido Procesos Multitarea Información del proceso Formación de un proceso Estados del proceso Procesos ligeros Planificación Señales y excepciones
Clases 04 y 05: Repaso de programación de sistemas basados en UNIX
Clases 04 y 05: Repaso de programación de sistemas basados en UNIX Prof. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco [email protected] Estructuras de datos (Prof.
Fundamentos de los Sistemas Operativos. Tema 2. Procesos José Miguel Santos Alexis Quesada Francisco Santana
Fundamentos de los Sistemas Operativos Tema 2. Procesos 1998-2015 José Miguel Santos Alexis Quesada Francisco Santana Contenidos del Tema 2 Qué es un proceso Estructuras de datos para gestionar procesos
Concurrencia en UNIX / LINUX. Introducción: Procesos e Hilos POSIX
Concurrencia en UNIX / LINUX Introducción: Procesos e Hilos POSIX El estándar POSIX POSIX: Interfaz de sistemas operativos portables. Basado en UNIX A pesar de que UNIX es ya de por sí estándar, había
Biblioteca de sistema
* Para la realización del presente examen se aconseja un tiempo de 2 horas. Teoría 1. Explique en detalle cómo se pasa una llamada al sistema operativo. El sistema operativo se activa cuando debe responder
Hilos Secciones Stallings:
Capítulo 4 Hilos Secciones Stallings: 4.1 4.3 Contenido Procesos e hilos. Hilos a nivel de núcleo y a nivel de usuario. Multiprocesador simétrico (SMP). Micronúcleos. 1 Proceso Unidad de propiedad de los
Procesos y Threads Procesos y Threads. Concurrencia Concurrencia Ventajas Ventajas. Rendimiento Rendimiento (paralelismo) (paralelismo)
Procesos y Threads Procesos y Threads Procesos Procesos Threads Threads Concurrencia Concurrencia Ventajas Ventajas Modelos Modelos Información Información adicional () adicional () Preparado Preparado
Sistemas Operativos Primer Recuperatorio Parcial 1
1.- El siguiente código intenta representar la solución a la siguiente problemática: Un proceso crea un conjunto de procesos hijos al mismo nivel y le asigna a cada uno una tarea determinada, cada proceso
Bloque I: Principios de sistemas operativos
Bloque I: Principios de sistemas operativos Tema 1. Principios básicos de los sistemas operativos Tema 2. Concurrencia Tema 3. Ficheros Tema 4. Sincronización y programación dirigida por eventos Tema 5.
SISTEMAS OPERATIVOS: PROCESOS. Planificación de procesos
SISTEMAS OPERATIVOS: PROCESOS Planificación de procesos ADVERTENCIA 2 Este material es un simple guión de la clase: no son los apuntes de la asignatura. El conocimiento exclusivo de este material no garantiza
Introducción y Gestión de Procesos
Introducción y Gestión de Procesos Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Llamadas al sistema Concepto Constituye el juego de instrucciones del sistema operativo
Sistemas Operativos Práctica 3
Sistemas Operativos Práctica 3 Ing. Andrés Bustamante [email protected] Ingeniería de Sistemas Facultad de Ingeniería Universidad de la Amazonia 2009 1. Objetivo El objetivo de la práctica es que
Sistemas Operativos. Procesos
Sistemas Operativos Procesos Agenda Proceso. Definición de proceso. Contador de programa. Memoria de los procesos. Estados de los procesos. Transiciones entre los estados. Bloque descriptor de proceso
Funciones POSIX (I): Introducción
Funciones POSIX I Funciones POSIX I Llamadas al Llamadas al Sistema Sistema Gestión Básica Gestión Básica de Procesos de Procesos Procesos Procesos fork fork Señales Señales getpid getpid Memoria Memoria
SISTEMAS OPERATIVOS: PROCESOS. Hilos y Procesos
SISTEMAS OPERATIVOS: PROCESOS Hilos y Procesos ADVERTENCIA 2 Este material es un simple guión de la clase: no son los apuntes de la asignatura. El conocimiento exclusivo de este material no garantiza que
SISTEMAS OPERATIVOS: Lección 4: Planificación de Procesos
SISTEMAS OPERATIVOS: Lección 4: Planificación de Procesos Jesús Carretero Pérez Alejandro Calderón Mateos José Daniel García Sánchez Francisco Javier García Blas José Manuel Pérez Lobato María Gregoria
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS Caso 1: 1.- Necesitamos un cd o Dvd para grabar alguna de las versiones de livecd de Linux. 2.- Liga de una
Función monitoreo descriptor archivo #include <sys/types.h> #include<unistd.h> #include<errno.h> extern void procesamiento_datos(char *, int); void pr
Introducción al concepto de threads Dr.. Roberto Gómez Cárdenas DCC del ITESM-CEM [email protected] http://homepage.cem.itesm.mx/rogomez Función monitoreo descriptor archivo #include #include
Procesos Definición y Estados
Procesos Definición y Estados Profesorado de Informática CeRP del Suroeste, Uruguay Contenidos Qué es un proceso Estructuras de datos para gestionar procesos API para trabajar con procesos Hilos (threads).
Llamadas al Sistema para la Creación de Procesos
Llamadas al Sistema para la Creación de Procesos Transparencias realizadas por M. Curiel. Se utiliza material ya publicado en la WEB y elaborado por todos los prof. que hemos dado el curso. Llamada al
SISTEMAS OPERATIVOS INTRODUCCIÓN. Pedro de Miguel Anasagast
SISTEMAS OPERATIVOS INTRODUCCIÓN Pedro de Miguel Anasagast INTRODUCCIÓN AL SISTEMA OPERATIVO MÁQUINA DESNUDA Máquina desnuda: Término que se aplica a un computador carente de sistema operativo. El término
Sistemas Operativos Primer Examen Parcial 13/07/15
Dpto. 1.- El siguiente código intenta representar la solución a la siguiente problemática: Un proceso crea un conjunto de procesos descendientes y le asigna a cada uno una tarea determinada, cada proceso
PARTE II PROGRAMACION CON THREADS EN C
PARTE II PROGRAMACION CON THREADS EN C II.1 INTRODUCCION Una librería o paquete de threads permite escribir programas con varios puntos simultáneos de ejecución, sincronizados a través de memoria compartida.
SISTEMAS OPERATIVOS PROCESOS. Pedro de Miguel Anasagast
SISTEMAS OPERATIVOS PROCESOS Pedro de Miguel Anasagast ÍNDICE Conceptos generales de procesos Multitarea Servidores y demonios Servicios UNIX de gestión de procesos Señales y temporizadores Servicios UNIX
Boletín 4- Procesos. Departamento de Lenguajes y Sistemas Informáticos
Boletín 4- Procesos Departamento de Lenguajes y Sistemas Indice 1. Introducción n (Procesos) 2. Identificadores de usuarios y procesos 3. La llamada fork() 4. Las llamadas wait() y exit() 5. La llamada
Prácticas de Sistemas operativos
Prácticas de Sistemas operativos David Arroyo Guardeño Escuela Politécnica Superior de la Universidad Autónoma de Madrid Segunda Semana: Procesos, Procesos Padre y Procesos Hijo, familia exec() 1 Entregas
Sistemas operativos: una visión aplicada. Capítulo 3 Procesos. Contenido
Sistemas operativos: una visión aplicada Capítulo 3 Procesos Contenido Procesos Multitarea Información del proceso Formación de un proceso Estados del proceso Procesos ligeros Planificación Señales y excepciones
Programación de Multitareas utilizando Hilos
Programación de Multitareas utilizando Hilos Enero/2012 Programación de Multitareas utilizando Hilos Origen de los hilos como elementos necesarios en la programación de multitareas Multihilos en un solo
Hilos (threads) Realizado por M. Curiel
Hilos (threads) Realizado por M. Curiel Definiciones Un proceso es una entidad que posee 2 características importantes: - Recursos: un espacio de direcciones (programas, datos, pila y un PCB), archivos,
Administración de procesos
Administración de procesos Contenido: Concepto de proceso Operaciones sobre procesos Planificación de procesos Hilos (Threads) Planificación del procesador Concepto de proceso Programas y procesos: Programas
Procesos e Hilos en C
Procesos e Hilos en C 6 de febrero de 2012 En esta sesión vamos a escribir programas en lenguaje C que utilicen hilos y procesos para comparar el rendimiento del sistema ante la gestión de unos y otros.
Conceptos de Planificación
Conceptos de Planificación Conceptos de Planificación Planificación Planificación de Procesos de Procesos Algoritmos Algoritmos Estructura Estructura Propiedades Propiedades Tipos Tipos Evaluación Evaluación
SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Desarrollo de servidores concurrentes
SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS Desarrollo de servidores concurrentes Contenido 2 Servidores de peticiones. Solución basada en procesos. Solución basada en hilos bajo
Práctica 1: Intérprete de mandatos. Sistemas Operativos Área de Arquitectura y Tecnología de Computadores
Práctica 1: Intérprete de mandatos Introducción Desarrollo de un intérprete de mandatos (minishell) en UNIX/Linux en lenguaje C. Debe permitir: Ejecución de mandatos simples ls, cp, mv, rm, etc. Ejecución
Convivencia Gestión de Procesos
Convivencia Gestión de Procesos Dra. Carolina Mañoso Dpto. Informática y Automática.UNED Índice: Procesos Introducción a los procesos Estados de los procesos Listas de procesos El planificador de procesos
Procesos e hilos: cálculo de
Departamento de Automática 1 / 10 Índice Creación y sincronización de hilos Acceso a variables globales en exclusión mutua 2 / 10 Objetivo principal: obtener una aproximación al valor de empleando el método
Un ejemplo: UNIX PROCESOS UNIX
PROCESOS UNIX Un ejemplo: UNIX Cada proceso sólo puede tener un flujo: el concepto proceso engloba todo Dos llamadas implicadas en la creación de procesos crear proceso cargar programa La relación de procesos
ASIGNATURA: SISTEMAS INFORMÁTICOS INDUSTRIALES. CURSO 4º GRUPO Octubre 2015
2. Problema de Análisis y Diseño Orientado a Objetos (10 puntos - 20 minutos) Para el código de test adjunto, se pide. 1. Diagrama de clases de diseño (2.5 puntos). 2. Implementación en C++ de la solución
1. Procesos vs Hilos 2. Cuando se ejecutan los procesos 3. Fork 4. Clone 5. Cómo se ejucuta el fork? 6. do_fork() 7. copy_process 8.
1. Procesos vs Hilos 2. Cuando se ejecutan los procesos 3. Fork 4. Clone 5. Cómo se ejucuta el fork? 6. do_fork() 7. copy_process 8. Código Proceso Manejados por el sistema operativo Memoria independiente
Estándares POSIX. Estándares base
Estándares POSIX Estándares base. ntaxis y semántica con diversos aspectos del sistema operativo No especifica la implementación La mayoría basados en el lenguaje C Interfaces en diferentes lenguajes Los
Threads. Hilos - Lightweight process - Procesos ligeros
Threads Hilos - Lightweight process - Procesos ligeros 1 Temario Concepto y Beneficios Estructuras de implementación: Servidor- Trabajador, Equipo, Pipeline Reconocimiento: En el espacio del usuario /
Procesos e hilos: el downloader
Departamento de Automática 1 / 8 Descarga de archivos con procesos en paralelo Objetivo principal: descarga de un archivo de gran tamaño de forma eficiente desde Internet Otros objetivos: Utilizar la biblioteca
Taller de pthreads. Sistemas Operativos. Verano de 2009
Verano de 2009 Menú del día Hoy veremos: Introducción a pthreads Creación de threads Variables mutex Variables de condición Tutoriales de HPC Lawrence Livermore National Laboratory (http://www.llnl.gov)
PROCESOS. Sistemas Operativos
PROCESOS Un proceso es un programa que se encuentra en ejecución. Un proceso no sólo es una copia del programa, sino que el núcleo le añade: un segmento de texto, un segmento de datos y un segmento de
Tema 1: Programación Multiproceso. Curso
Tema 1: Programación Multiproceso. Curso 2012-2013 1 Patricia Hurtado Sayas Índice de contenidos: 1. Elementos funcionales de un SI. Repaso. 2. Concepto de Proceso o Tarea. 1. PCB, Bloque de Control de
- Bajo que condiciones el algoritmo de planifiación de procesos FIFO (FCFS) resultaría en el tiempo de respuesta promedio más pequeño?
Sistemas Operativos. Grado Ingeniería Informática. TGR-2.1 Procesos. Noviembre 2014 Problemas para hacer en clase FIFO cpu C A 1. Dos procesos A y B tienen una ráfaga de CPU de 50 ms y un proceso C tiene
Fundamentos de los Sistemas Operativos
Práctica 3 : hilos! Fundamentos de los Sistemas Operativos Grado en Ingeniería Informática Rubén García Rodríguez Alexis Quesada Arencibia Eduardo Rodríguez Barrera Francisco J. Santana Pérez José Miguel
SISTEMAS OPERATIVOS:
SISTEMAS OPERATIVOS: Lección 8: Desarrollo de servidores concurrentes Jesús Carretero Pérez Alejandro Calderón Mateos José Daniel García Sánchez Francisco Javier García Blas José Manuel Pérez Lobato Introducción
T5-multithreading. Indice
T5-multithreading 1.1 Indice Proceso vs. Flujos Librerías de flujos Comunicación mediante memoria compartida Condición de carrera Sección Crítica Acceso en exclusión mutua Problemas Abrazos mortales 1.2
Unidad 2: Gestión de Procesos
Unidad 2: Gestión de Procesos Tema 4, Procesos: 4.1 El concepto de proceso. 4.2 Planificación de procesos. 4.3 Operaciones con procesos. 4.4 Procesos cooperativos. 4.5 Hilos (threads). E.U. de Informática.
Sistemas Operativos. Pedro Cabalar TEMA III. PROCESOS. Depto. de Computación Universidade da Coruña
Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS. P. Cabalar Sistemas( Operativos Depto. de Computación Universidade Tema da Coruña III. Procesos ) 1 /
Prácticas de Sistemas Operativos
Prácticas de Sistemas Operativos Toñi Reina, David Ruiz, Juan Antonio Álvarez, Antonio Tallón, Javier Gutiérrez, Pablo Neira, Paco Silveira, Sergio Segura y José Ángel Bernal Boletín 4: Procesos Curso
Programación Concurrente Recopilación de teoría referente a la materia
UNIVERSIDAD AMERICANA Programación Concurrente Recopilación de teoría referente a la materia Ing. Luis Müller Esta es una recopilación de la teoría referente a la asignatura Programación Concurrente, a
Sistemas Operativos Practica 1: procesos y concurrencia.
Sistemas Operativos Practica 1: procesos y concurrencia. Objetivos: Introducir al alumno a los conceptos de programa, concurrencia, paralelismo y proceso o tarea. Manejo del concepto de concurrencia haciendo
Entorno de programación de nivel 1: La librería PCAP
Entorno de programación de nivel 1: La librería PCAP La librería libpcap nos permite capturar paquetes desde un programa C. En sistemas Windows, la librería se llama Winpcap. Para compilar cualquier programa
Sistemas Operativos sesión 12: tuberías
Sistemas Operativos sesión : tuberías Grado en Ingeniería Informática Universidad Carlos III de Madrid Agenda Linux Comunicación con tuberías Ejercicios Agenda Linux Comunicación con tuberías Ejercicios
Sistemas operativos 2ª edición. Capítulo 4 Planificación del procesador (extracto de las transparencias del libro)
Sistemas operativos 2ª edición Capítulo 4 Planificación del procesador (extracto de las transparencias del libro) Contenido Introducción Caracterización de los procesos Objetivos de la planificación Algoritmos
Sistemas operativos, 2ª edición
Sistemas operativos 2ª edición Capítulo 4 Planificación del procesador (extracto de las transparencias del libro) Contenido Introducción Caracterización de los procesos Objetivos de la planificación Algoritmos
2. Problema de Análisis y Diseño Orientado a Objetos (4 puntos - 25 minutos)
APELLIDOS NOMBRE Nº Mat. UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA Y DISEÑO INDSUTRIAL Departamento Electrónica, Automática e Informática Industrial ASIGNATURA: SISTEMAS
Sincronización de Threads
Funciones POSIX III Funciones POSIX III Sincronización Sincronización Procesos Procesos Semáforos Semáforos (sem_t) (sem_t) Sincronización Sincronización Threads Threads Mutex Mutex (pthread_mutex_t) (pthread_mutex_t)
Introducción a los Sistemas Operativos
Introducción a los Sistemas Operativos Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria [email protected] 1 Índice General Conceptos sobre ordenadores Concepto
Cilk. Un entorno de programación paralela. Tomás Muñoz Rodríguez < > 17 de noviembre de 2011
Un entorno de programación paralela Tomás Muñoz Rodríguez < [email protected] > 17 de noviembre de 2011 Profesor: Domingo Jiménez Cánovas Asignatura: Metodología de la Programación Paralela Facultad de
Sistemas operativos: una visión aplicada. Capítulo 5 Comunicación y sincronización de procesos
Sistemas operativos: una visión aplicada Capítulo 5 Comunicación y sincronización de procesos Sistema multiprogramado con un una CPU Proceso A Proceso B Proceso C Tiempo Sistemas operativos: una visión
Hilos. Módulo 4. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco. Hilos
Hilos Módulo 4 Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco Hilos Revisión Modelos Multihilados Librerías de Hilos Aspectos sobre Hilos Ejemplos
Procesos 1 / 31. Para entender el concepto de hebra, necesitamos compreender el concepto de proceso
Procesos 1 / 31 Concepto de proceso Para entender el concepto de hebra, necesitamos compreender el concepto de proceso Un proceso es un programa en ejecución Una instancia de un programa corriendo en un
HILOS POSIX. LABORATORIO DE SISTEMAS DE OPERACIÓN I (ci 3825) Prof. Yudith Cardinale Enero marzo 2011
HILOS POSIX LABORATORIO DE SISTEMAS DE OPERACIÓN I (ci 3825) Prof. Yudith Cardinale Enero marzo 2011 Librería #include HILOS POSIX Función que se comportará como hilo: void * mihilo(void *arg)
Sistemas Operativos Tema 5. Procesos. 1998-2012 José Miguel Santos Alexis Quesada Francisco Santana
Sistemas Operativos Tema 5. Procesos 1998-2012 José Miguel Santos Alexis Quesada Francisco Santana 1 Contenidos Concepto de proceso Estructuras de datos: BCP y colas de procesos Niveles de planificación
Tema II. Descripción y control de procesos. UNED Manuel Fernández Barcell. Blog:
Tema II Descripción y control de procesos UNED Manuel Fernández Barcell http://www.mfbarcell.es Blog: http://prof.mfbarcell.es 2.2.1 CONCEPTO DE PROCESO Un programa es un archivo ejecutable que está en
ENTRADA-SALIDA. 2. Dispositivos de Carácter: Envía o recibe un flujo de caracteres No es direccionable, no tiene operación de búsqueda
Tipos de Dispositivos ENTRADA-SALIDA 1. Dispositivos de Bloque: Almacena información en bloques de tamaño fijo (512b hasta 32Kb) Se puede leer o escribir un bloque en forma independiente 2. Dispositivos
