Procesos y API. Rodolfo Baader. Departamento de Computación, FCEyN, Universidad de Buenos Aires, Buenos Aires, Argentina

Documentos relacionados
Sistemas Operativos. Procesos

Tema 4: Gestión de Procesos

Prácticas de Sistemas operativos

Fundamentos de los Sistemas Operativos. Tema 2. Procesos José Miguel Santos Alexis Quesada Francisco Santana

Taller de Sistemas Operativos. Procesos 2012

Procesos Definición y Estados

Cap.2. Kernel Sistemas Operativos - Viña del Mar.

Funciones POSIX (I): Introducción

Introducción y Gestión de Procesos

MC Hilda Castillo Zacatelco PROCESOS

Capítulo 3: Procesos. n Concepto de Proceso. n Despacho (calendarización) de Procesos. n Operaciones en Procesos. n Procesos en cooperación

Procesos y Threads Procesos y Threads. Concurrencia Concurrencia Ventajas Ventajas. Rendimiento Rendimiento (paralelismo) (paralelismo)

Biblioteca de sistema

Procesos en UNIX. LABORATORIO DE SISTEMAS DE OPERACIÓN I (ci 3825) Prof. Yudith Cardinale

Taller de Sistemas Operativos. System Calls 2012

Usando el Sistema Operativo

Sistemas Operativos. Curso 2016 Procesos

Sistemas Operativos. Pedro Cabalar TEMA III. PROCESOS. Depto. de Computación Universidade da Coruña

Concurrencia en UNIX / LINUX. Introducción: Procesos e Hilos POSIX

Boletín 4- Procesos. Departamento de Lenguajes y Sistemas Informáticos

Llamadas al Sistema. Laboratorio de Arquitectura de Ordenadores

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

Prácticas de Sistemas operativos

Clases 04 y 05: Repaso de programación de sistemas basados en UNIX

Necesidad de Protección

Tema 2. Administración de procesos

Boletín 4- Procesos. Departamento de Lenguajes y Sistemas Informáticos

Procesos. Procesos. Sistemas Operativos Procesos KMC 2017

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS

Entrada y Salida de Archivos

Administración de Redes

SISTEMAS OPERATIVOS Manejo de procesos

Administrador del Procesador Conceptos

Sistemas Operativos Práctica 3

Entrada/Salida. Alexis Tcach. Sistemas Operativos, 1c DC - FCEyN - UBA

Sistemas operativos: una visión aplicada. Capítulo 3 Procesos

SISTEMAS OPERATIVOS: PROCESOS. Planificación de procesos

UNIVERSIDAD DE BELGRANO FAC. ING. Y TECNOLOGIA INFORMATICA SISTEMAS OPERATIVOS UNIDAD 2 PROCESOS - CONCEPTOS

Teoría. Procesos. Escuela Politécnica Superior Universidad Autónoma de Madrid 1

Hilos (threads) Realizado por M. Curiel

SISTEMAS. Ciclo 2014 Plan 2012

Procesos: Estructura de Minix. Dr. Alonso Ramírez Manzanares 30-Sep-2010

Prácticas de Sistemas Operativos

Sistemas Operativos I Manual de prácticas

Programación de Multitareas utilizando Hilos

Procesos. Módulo 3. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco.

Primer parcial de teoría 2013_2014_Q1

Sistemas Operativos Practica 1: procesos y concurrencia.

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O

Capítulo 4: Threads. n Modelos Multithreads. n Threads. n Pthreads. n Threads de Windows XP. n Threads de Linux. n Threads de Java

PROCESOS. Sistemas Operativos

Procesos 1 / 31. Para entender el concepto de hebra, necesitamos compreender el concepto de proceso

Un ejemplo: UNIX PROCESOS UNIX

Sistemas Operativos sesión 12: tuberías

Control y descripción de procesos

Estructura de los sistemas de cómputo

TAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS.

Sistemas Operativos Primer Parcial Tema2

Sistemas Operativos Grado Ingeniera Informática UDC. Enero 2016 Sólo puede usar lápiz, bolígrafo y calculadora. Tiempo máximo para todo el examen: 3h

Cuestionario 1-Parte 1

Sistemas Operativos Primer Recuperatorio Parcial 1

Nombre alumno: Ventajas: Inconvenientes:

3.- Procesos. Concepto de Proceso. Despacho (calendarización) de Procesos. Operaciones en Procesos. Procesos en cooperación

Tema 12: El sistema operativo y los procesos

La función de un SO en los sistemas de I/O, es manejar y controlar las operaciones y los dispositivos de I/O.

T5-multithreading. Indice

SISTEMAS OPERATIVOS: Lección 4: Planificación de Procesos

Informática Electrónica Manejadores de Dispositivos (Device Drivers)

Informática Electrónica Concurrencia

PRÁCTICA 1: PROCESOS Y COMUNICACIÓN ENTRE PROCESOS

Llamadas al Sistema para la Creación de Procesos

Capítulo 2 Introducción a los sistemas operativos

Fundamentos de los Sistemas Operativos. Tema 1. Conceptos generales Estructura del sistema operativo ULPGC - José Miguel Santos Espino

T1-Introducción. Índice

Manipulación de procesos

Apartado TGR Puntuación. No Presentado. EXAMEN DE SISTEMAS OPERATIVOS (Grado en Ing. Informática) 20/1/2014.

Sistema Operativo. Repaso de Estructura de Computadores. Componentes Hardware. Elementos Básicos

Procesos e Hilos en C

Función monitoreo descriptor archivo #include <sys/types.h> #include<unistd.h> #include<errno.h> extern void procesamiento_datos(char *, int); void pr

Plataformas de Tiempo Real

Message Passing Interface (MPI)

3. Sistemas operativos

3. Sistemas operativos

Concepto de proceso. (c) 2006 Alexis Quesada / Francisco J. Santana 2

- Bajo que condiciones el algoritmo de planifiación de procesos FIFO (FCFS) resultaría en el tiempo de respuesta promedio más pequeño?

Llamadas a Sistema para procesos

3. Sistemas operativos

SISTEMAS OPERATIVOS INTRODUCCIÓN. Pedro de Miguel Anasagast

Paradigma de paso de mensajes

Introducción a los Sistemas Operativos

Llamadas al sistema (2) Dr. Alonso Ramírez Manzanares 1-Sep-2009

Examen Final de Teoría. Grupo de teoría:

Nombre alumno: Ventajas: La ventaja es que desaparecería la fragmentación interna ya que podríamos ajustar los bloques al tamaño que necesitemos.

API del SO + Comunicación entre procesos (IPC)

Hilos. Módulo 4. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco. Hilos

Nombre Apellidos. DNI Titulación Grupo.

Prácticas de Sistemas operativos

Práctica 1: Intérprete de mandatos. Sistemas Operativos Área de Arquitectura y Tecnología de Computadores

Transcripción:

Departamento de Computación, FCEyN, Universidad de Buenos Aires, Buenos Aires, Argentina Sistemas Operativos, segundo cuatrimestre de 2016

(2) Dónde estamos Vimos... SO = administrador de recursos + interfaz de programación. Un poco de su evolución histórica. Su misión fundamental. Hablamos de multiprogramación. Qué cosas son parte del SO y cuáles no. Vamos a ver... Concepto de proceso.! También llamado tarea (task) o trabajo (job) API del SO.

(3) Proceso Programa: estático Texto escrito en algún lenguaje de programación. Ese programa eventualmente se compila en código objeto, lo que también es un programa escrito en lenguaje de máquina. Proceso: dinámico! Unidad de ejecución Cada proceso tiene un identificador numérico único, el pid. Unidad de scheduling Un proceso tiene estado

(4) Proceso: Representación en memoria Texto: código de máquina del programa. Program Counter (PC): instrucción actual Datos estáticos Memoria dinámica (heap) Pila de ejecución (stack) Stack Pointer (SP): tope de la pila stack (dynamic allocated mem) heap (dynamic allocated mem) static data (data segment) code (text segment) MAX 0 SP PC

(5) Proceso: estado

(6) Proceso: estado A medida que un proceso se ejecuta, va cambiando de estado de acuerdo a su actividad.! Corriendo: está usando la CPU. Bloqueado: no puede correr hasta que algo externo suceda (típicamente E/S lista). Listo: el proceso no está bloqueado, pero no tiene CPU disponible como para correr.

(7) Process Control Block (PCB) Estructura de datos con info del contexto del proceso! Estado, contador de programa (PC), tope de pila (SP) Registros de la CPU Información para el scheduler (e.g., prioridad) Información para el manejador de memoria, E/S,... En linux: task_struct en linux/sched.h thread_info en asm/thread_info.h thread_struct en asm/processor.h

(8) Proceso: cambios de estado El SO ejerce las siguientes acciones sobre los procesos: Admite (o no) un proceso Otorga la CPU a un proceso Desaloja un proceso de la CPU Preemption Proceso es interrumpido por algún evento Blocking Proceso se bloquea en el acceso a un recurso

(9) Proceso: control de admisión Qué es? Decidir si un proceso nuevo puede ser admitido Para qué? Para evitar sobrecargar el sistema Carga (load): Cantidad de procesos activos Importa la carga promedio más que la carga puntual! Linux: calc_load() y uptime (http://goo.gl/bckcbp) $ uptime 11:33 up 1 day, 20:25, 2 users, load averages: 2.98 2.83 2.69

(10) Procesos: ciclo de ejecución Realizar operaciones entre registros y direcciones de memoria en el espacio de direcciones del usuario Acceder a un servicio del kernel ( system call ) Realizar entrada/salida a los dispositivos (E/S). Lanzar un proceso hijo: system(), fork(), exec(). Domain crossing User address space trap Kernel Address Space

(11) Ejecución fuera del kernel Por cuánto tiempo lo dejamos ejecutar? Hasta que termina: Es lo mejor para el proceso, pero no para el sistema en su conjunto. Además, podría no terminar. time-sharing : un ratito ( quantum ).! Curiosidad: Bemer. Origins of timesharing. http://goo.gl/83ptc4 Los SO modernos hacen preemption : cuando se acaba el quantum, le toca el turno a otro proceso. Surgen dos preguntas: Quién y cómo decide a quién le toca scheduling Qué significa hacer que se ejecute otro proceso context switch

(12) Cambio de contexto (context switch) Para el proceso desalojado el SO debe: Guardar el PCB. Guardar los registros. Para el proceso asignado el SO debe: Cargar el PCB. Cargar los registros. El tiempo utilizado en cambios de contexto es tiempo muerto, no se está haciendo nada productivo. Dos consecuencias de esto: Duración: Impacto en la arquitectura del HW Cantidad: Quantum apropiado para minimizar los cambios! Implementación: colgarse de la interrupción del clock.

(13) Cambio de contexto (esquema)

(14) Cambio de contexto (artículos) Costo Chuanpeng Li, Chen Ding, and Kai Shen. 2007. Quantifying the cost of context switch. http://goo.gl/gqgvkt Francis M. David, et al. 2007. Context switch overheads for Linux on ARM platforms. http://goo.gl/pj9dwj Prevención Jaaskelainen, et al. Reducing context switch overhead with compiler-assisted threading. 2008. http://goo.gl/8th0dy. Kloukinas, Yovine. 2011. A model-based approach for multiple QoS in scheduling: from models to implementation. http://goo.gl/4xl1jt

(15) Actividades de un proceso (cont.) Llamadas al sistema (sys calls). En todas ellas se debe llamar al kernel domain crossing Entrada/Salida Terminación (exit()) Liberar todos los recursos del proceso. Status de terminación Linux (C standard): EXIT_SUCCESS, EXIT_FAILURE Este código de status le es reportado al padre. Qué padre?

(16) Árbol de procesos Los procesos están organizados jerárquicamente. Cuando el SO comienza, lanza un proceso root o init. Por eso es importante la capacidad de lanzar un proceso hijo: fork() crea un proceso hijo igual al actual (padre) El resultado es el pid del proceso hijo El proceso hijo ejecuta el mismo código que el padre exec() reemplaza el código binario por otro wait() suspende al padre hasta que termine el hijo Cuando el hijo termina, el padre recibe el status del hijo

(17) Árbol de procesos (cont.) Cuando lanzamos un programa desde el shell, qué sucede? El shell hace un fork(). El hijo hace un exec().

Árbol de procesos: pstree $pstree -u sergio -+= 00001 root /sbin/launchd... \-+= 00708 sergio /Applications/.../Terminal \-+= 00711 root login -pf sergio \-+= 00712 sergio -bash \-+= 00789 sergio pstree -u sergio \--- 00790 root ps -axwwo user,pid,ppid,pgid,...

(18) Llamadas al sistema

(19) Tipos de llamadas al sistema Control de Procesos Administración de archivos Administración de dispositivos Mantenimiento de información Comunicaciones

(20) Ejemplos de llamadas al sistema

(21) POSIX POSIX: Portable Operating System Interface; X: UNIX. IEEE 1003.1/2008 http://goo.gl/k7wgnp Core Services: Creación y control de procesos Pipes Señales Operaciones de archivos y directorios Excepciones Errores del bus. Biblioteca C Instrucciones de E/S y de control de dispositivo (ioctl).

(22) API Creación y control de procesos pid_t fork ( void ); pid_t vfork ( void ); // vfork crea un hijo sin copiar la memoria del padre // El hijo tiene que hacer exec int execve ( const char * fn, char * const argv [], char * const envp []); pid_t wait ( int * status ); pid_t waitpid ( pid_t pid, int * status, int options ); void exit ( int status ); // Linux, no POSIX int clone (...) // El hijo comparte parte del contexto con el padre // Usado para implementar threads

(23) Creación de procesos (fork)

(24) Creación de procesos (fork) Ejemplo tipo 1 int main ( void ) { 2 int foo = 0; 3 pid_t pid = fork (); 4 if ( pid == -1) exit ( EXIT_ FAILURE ); 5 else if ( pid == 0) { 6 printf (" %d: Hello world \n", getpid ()); 7 foo = 1; 8 } 9 else { 10 printf (" %d: %d created \n", getpid (), pid ); 11 int s; ( void ) waitpid (pid, &s, 0); 12 printf (" %d: %d finished( %d)\n", getpid (), pid, s); 13 } 14 printf (" %d: foo( %p)= %d\n", getpid (), &foo, foo ); 15 exit ( EXIT_ SUCCESS ); 16 }

(25) Creación de procesos (fork) Ejemplos de ejecuciones posibles $./ main 3724: 3725 created 3725: Hello world 3725: foo (0 x7fff5431fb6c )= 1 3724: 3725 finished (0) 3724: foo (0 x7fff5431fb6c )= 0 $./ main 3815: Hello world 3815: foo (0 x7fff58c3eb6c )= 1 3814: 3815 created 3814: 3815 finished (0) 3814: foo (0 x7fff58c3eb6c )= 0

(26) Creación de procesos (vfork) Ejemplo tipo 1 void bar ( const char * fname ) { 2 char * arg [] = { NULL, " Hello, world!", NULL }; 3 char * env [] = { NULL }; 4 char str [255]; 5 6 sprintf (str, " %d", getpid ()); 7 arg [0] = str ; 8 9 execve ( fname, arg, env ); 10 } 11 12 // Hijo 13 else if ( pid == 0) { 14 foo = 1; 15 bar ("./ bar "); 16 }

(27) Creación de procesos (vfork) Ejecución $./ main 1121: 1122 created 1122( 1122): Hello, world! 1121: 1122 finished (0) 1121: foo (0 x7fff53939b8c )= 1

(28) API Manejo de archivos // creación y apertura int open ( const char * pathname, int flags ); // lectura ssize_t read ( int fd, void * buf, size_t count ); // escritura ssize_t write ( int fd, const void * buf, size_t count ); // actualiza la posición actual off_t lseek ( int fd, off_t offset, int whence ); // whence = SEEK_ SET -> comienzo + offset // whence = SEEK_ CUR -> actual + offset // whence = SEEK_ END -> fin + offset

(29) Inter-Process Communication (IPC) Hay varias formas de IPC: Memoria compartida. Algún otro recurso compartido (archivo, base de datos, etc.). Pasaje de mensajes BSD/POSIX sockets Un socket es el extremo de una comunicación (enchufe) Para usarlo hay que conectarlo Una vez conectado se puede leer y escribir de él Hacer IPC es como hacer E/S.! Los detalles los vamos a ver en la práctica.

(30) IPC: modos Sincrónico El emisor no termina de enviar hasta que el receptor no recibe. Si el mensaje se envió sin error suele significar que también se recibió sin error. En general involucra bloqueo del emisor. Asincrónico El emisor envía algo que el receptor va a recibir en algún otro momento. Requiere algún mecanismo adicional para saber si el mensaje llegó. Libera al emisor para realizar otras tareas, no suele haber bloqueo, aunque puede haber un poco (por ejemplo, para copiar el mensaje a un buffer del SO).

(31) Dónde estamos Vimos El concepto de proceso en detalle. Sus diferentes actividades. Qué es una system call. Una introducción al scheduler. Hablamos de multiprogramación, y vimos su relación con E/S. Introdujimos IPC.