Sistemas Operativos 1
SISTEMAS OPERATIVOS
SO
E – M 2023
Sistemas Operativos 2
Cooperating Processes
 HILOS (THREADS) de EJECUCIÓN
Sistemas Operativos 3
Concepto tradicional
Un PROCESO (o proceso de peso pesado) :
 se le da un espacio de direccionamiento, en memoria, que contiene:
» Un área de datos para el programa ejecutable
» Un área para código del programa ejecutable
» Un heap para memoria dinámica
» Un stack de ejecución
» Referencias a recursos del sistema operativo
• Archivos abiertos, conexiones de red, canales de sonido, …
y se le asigna para ser ejecutado:
» El program counter (PC) del CPU, indicando la siguiente
instrucción, que lleva a cabo el flujo de ejecución
» El stack pointer (SP)
» El conjunto de registros de propósito general del CPU
» Una identificación numérica o PID
» Un PCB
Sistemas Operativos 4
Process Address Space
0x00000000
0xFFFFFFFF
Memory address space
Code section
(text segment)
static data section
(data segment)
heap
(dynamic allocated mem)
stack
(storage call returns, etc.)
OS resources
(open files, network connect.,
Sound channels, …) CPU
General
Registers
PC
SP
Sistemas Operativos 5
Proceso (revisión)
• El program counter controla el flujo secuencial
de ejecución que sigue el CPU.
» Este recorrido secuencial de ejecución de
instrucciones del CPU, de principio a fin, es
también conocido, en la actualidad, como HILO o
THREAD de ejecución.
• Un proceso (de peso pesado) , por default, sólo
tiene un HILO o THREAD de ejecución,
conocido como el principal (main).
Sistemas Operativos 6
¿Qué es un thread?
• Es un flujo de ejecución del CPU en un
programa.
• También conocido como proceso ligero.
• Corre dentro del contexto del proceso
pesado y toma ventaja de los recursos y del
ambiente.
Sistemas Operativos 7
Hilos y Procesos - 1
• Los sistemas operativos modernos (NT, UNIX, Linux,
OS/X modernos) tienen la visión de dos entidades:
» el proceso, el cuál define el espacio de direcciones y los
atributos generales del proceso, etc.
» el hilo, el cuál define un flujo de ejecución secuencial
dentro del proceso.
Sistemas Operativos 8
Hilos y Procesos - 2
• Un hilo esta contenido dentro de un proceso pesado.
» los procesos pesados, pueden tener multiple threads
ejecutándose dentro de ellos, el hilo principal es el
main.
» compartir datos entre los threads es barato: todos ven el
mismo espacio de direccionamiento.
» Memoria compartida (shared memory)
» ¡crear hilos es barato también!
Sistemas Operativos 9
Hilos y Procesos - 3
• Los hilos debieran ser la unidad de planificación
(scheduling)
» Los procesos son sólo contenedores donde los hilos se
ejecutan.
» Los SO no realizan scheduling para threads.
» Sólo existe scheduling para procesos tradicionales
(pesados).
Sistemas Operativos 10
Multi-Threaded programming
• Es el mecanismo para tener dos o más
hilos o threads dentro de un proceso
pesado.
• Hay un hilo principal (main), por donde
inicia la ejecución el proceso.
» El hilo main es el que se encarga de
crear y / o arrancar algunos otros hilos.
Sistemas Operativos 11
Process Address Space with Threads
address
space
thread
one thread/process
many processes
many threads/process
many processes
one thread/process
one process
many threads/process
one process
MS/DOS
Java /
Win 95-DOS
older
UNIXes,
many others
Win NTs,
Unix,
Linux, …
Sistemas Operativos 12
Process Address Space with Threads
0x00000000
0xFFFFFFFF
address space
code
(text segment)
static data
(data segment)
heap
(dynamic allocated mem)
thread 1 stack
PC (T2)
SP (T2)
thread 2 stack
thread 3 stack
SP (T1)
SP (T3)
PC (T1-main)
PC (T3)
Internal Scheduling
Sistemas Operativos 13
Thread
• Un thread (o lightweight process)
es una unidad básica de
procesamiento que utiliza el
CPU; utiliza para si:
» Un program counter o PC
» Un conjunto de registros
» Un stack
Sistemas Operativos 14
Threads
• Los THREADs comparten dentro del
PROCESO:
» Área de código
» Área de datos
» Recursos del sistema operativo
• Un proceso tradicional o heavyweight es
igual a un task con un solo thread.
Sistemas Operativos 15
Single and Multithreaded Processes
Sistemas Operativos 16
Concurrency vs. Parallelism
Concurrent execution on single-core system:
Parallelism on a multi-core system:
Sistemas Operativos 17
BENEFICIOS
• Tener un programa concurrente en un
solo proceso pesado.
• Respuesta con bloqueos parciales
• Compartición de recursos
• Economía en cambio de contexto
» ¿Quién planifica ahora?
• Utilización de arquitecturas
multiproceso
Sistemas Operativos 18
Threads de Usuario y de Kernel
USER THREADS
• Administrados por librerías de threads a nivel usuario.
• Tres librerías de threads:
» POSIX Pthreads
» Java Threads
» Windows Threads
Sistemas Operativos 19
Threads de Usuario y de Kernel
KERNEL THREADS
• Soportados directamente por el Sistema Operativo (su Kernel)
• Ejemplos
» Windows
» Solaris
» Linux
» Tru64 UNIX (ex DEC)
» Mac OS X
Sistemas Operativos 20
MultiThreaded programming
• La administración se hace mediante el uso de
Librerías de Threads, que soportan:
» Crear y arrancar un nuevo thread.
» suspender, continuar y terminar un thread.
» Planificación entre threads (time slice y
prioridades).
» En general muchas de las operaciones de los
procesos pesados.
» y más …
Sistemas Operativos 21
Multithreading Models
• Many-to-One
• One-to-One
• Many-to-Many
 User Th. – Kernel Th.
Sistemas Operativos 22
Many-to-One Model
• Many user-level
threads mapped to
single kernel thread
• Examples
» Solaris Green
Threads
» GNU Portable
Threads
Sistemas Operativos 23
One-to-one Model
• Each user-level thread maps to kernel thread
• Examples
» Windows
» Linux
» Solaris 9 and later
Sistemas Operativos 24
Many-to-Many Model
• Allows many user level
threads to be mapped to
many kernel threads by
multiplexing
• Allows the operating
system to create a
sufficient number of
kernel threads
• Examples
» Solaris prior to version
9
» Windows with the
ThreadFiber package
Sistemas Operativos 25
Scheduling
• The Operating Systems are starting to
schedule threads for some internal tasks.
• Main quasi-states:
– Ready – able to run
– Running – current thread on a processor
– Waiting – waiting an event
– Terminated – finishing its running
Sistemas Operativos 26
References
• Presentación de Ramon Ríos.
• Capítulos: Operating System Concepts;
Silberschatz, Galvin, Gagne.
• Enero – mayo 2023

matCGzmultithreades sistemas operativositam.pptx

  • 1.
    Sistemas Operativos 1 SISTEMASOPERATIVOS SO E – M 2023
  • 2.
    Sistemas Operativos 2 CooperatingProcesses  HILOS (THREADS) de EJECUCIÓN
  • 3.
    Sistemas Operativos 3 Conceptotradicional Un PROCESO (o proceso de peso pesado) :  se le da un espacio de direccionamiento, en memoria, que contiene: » Un área de datos para el programa ejecutable » Un área para código del programa ejecutable » Un heap para memoria dinámica » Un stack de ejecución » Referencias a recursos del sistema operativo • Archivos abiertos, conexiones de red, canales de sonido, … y se le asigna para ser ejecutado: » El program counter (PC) del CPU, indicando la siguiente instrucción, que lleva a cabo el flujo de ejecución » El stack pointer (SP) » El conjunto de registros de propósito general del CPU » Una identificación numérica o PID » Un PCB
  • 4.
    Sistemas Operativos 4 ProcessAddress Space 0x00000000 0xFFFFFFFF Memory address space Code section (text segment) static data section (data segment) heap (dynamic allocated mem) stack (storage call returns, etc.) OS resources (open files, network connect., Sound channels, …) CPU General Registers PC SP
  • 5.
    Sistemas Operativos 5 Proceso(revisión) • El program counter controla el flujo secuencial de ejecución que sigue el CPU. » Este recorrido secuencial de ejecución de instrucciones del CPU, de principio a fin, es también conocido, en la actualidad, como HILO o THREAD de ejecución. • Un proceso (de peso pesado) , por default, sólo tiene un HILO o THREAD de ejecución, conocido como el principal (main).
  • 6.
    Sistemas Operativos 6 ¿Quées un thread? • Es un flujo de ejecución del CPU en un programa. • También conocido como proceso ligero. • Corre dentro del contexto del proceso pesado y toma ventaja de los recursos y del ambiente.
  • 7.
    Sistemas Operativos 7 Hilosy Procesos - 1 • Los sistemas operativos modernos (NT, UNIX, Linux, OS/X modernos) tienen la visión de dos entidades: » el proceso, el cuál define el espacio de direcciones y los atributos generales del proceso, etc. » el hilo, el cuál define un flujo de ejecución secuencial dentro del proceso.
  • 8.
    Sistemas Operativos 8 Hilosy Procesos - 2 • Un hilo esta contenido dentro de un proceso pesado. » los procesos pesados, pueden tener multiple threads ejecutándose dentro de ellos, el hilo principal es el main. » compartir datos entre los threads es barato: todos ven el mismo espacio de direccionamiento. » Memoria compartida (shared memory) » ¡crear hilos es barato también!
  • 9.
    Sistemas Operativos 9 Hilosy Procesos - 3 • Los hilos debieran ser la unidad de planificación (scheduling) » Los procesos son sólo contenedores donde los hilos se ejecutan. » Los SO no realizan scheduling para threads. » Sólo existe scheduling para procesos tradicionales (pesados).
  • 10.
    Sistemas Operativos 10 Multi-Threadedprogramming • Es el mecanismo para tener dos o más hilos o threads dentro de un proceso pesado. • Hay un hilo principal (main), por donde inicia la ejecución el proceso. » El hilo main es el que se encarga de crear y / o arrancar algunos otros hilos.
  • 11.
    Sistemas Operativos 11 ProcessAddress Space with Threads address space thread one thread/process many processes many threads/process many processes one thread/process one process many threads/process one process MS/DOS Java / Win 95-DOS older UNIXes, many others Win NTs, Unix, Linux, …
  • 12.
    Sistemas Operativos 12 ProcessAddress Space with Threads 0x00000000 0xFFFFFFFF address space code (text segment) static data (data segment) heap (dynamic allocated mem) thread 1 stack PC (T2) SP (T2) thread 2 stack thread 3 stack SP (T1) SP (T3) PC (T1-main) PC (T3) Internal Scheduling
  • 13.
    Sistemas Operativos 13 Thread •Un thread (o lightweight process) es una unidad básica de procesamiento que utiliza el CPU; utiliza para si: » Un program counter o PC » Un conjunto de registros » Un stack
  • 14.
    Sistemas Operativos 14 Threads •Los THREADs comparten dentro del PROCESO: » Área de código » Área de datos » Recursos del sistema operativo • Un proceso tradicional o heavyweight es igual a un task con un solo thread.
  • 15.
    Sistemas Operativos 15 Singleand Multithreaded Processes
  • 16.
    Sistemas Operativos 16 Concurrencyvs. Parallelism Concurrent execution on single-core system: Parallelism on a multi-core system:
  • 17.
    Sistemas Operativos 17 BENEFICIOS •Tener un programa concurrente en un solo proceso pesado. • Respuesta con bloqueos parciales • Compartición de recursos • Economía en cambio de contexto » ¿Quién planifica ahora? • Utilización de arquitecturas multiproceso
  • 18.
    Sistemas Operativos 18 Threadsde Usuario y de Kernel USER THREADS • Administrados por librerías de threads a nivel usuario. • Tres librerías de threads: » POSIX Pthreads » Java Threads » Windows Threads
  • 19.
    Sistemas Operativos 19 Threadsde Usuario y de Kernel KERNEL THREADS • Soportados directamente por el Sistema Operativo (su Kernel) • Ejemplos » Windows » Solaris » Linux » Tru64 UNIX (ex DEC) » Mac OS X
  • 20.
    Sistemas Operativos 20 MultiThreadedprogramming • La administración se hace mediante el uso de Librerías de Threads, que soportan: » Crear y arrancar un nuevo thread. » suspender, continuar y terminar un thread. » Planificación entre threads (time slice y prioridades). » En general muchas de las operaciones de los procesos pesados. » y más …
  • 21.
    Sistemas Operativos 21 MultithreadingModels • Many-to-One • One-to-One • Many-to-Many  User Th. – Kernel Th.
  • 22.
    Sistemas Operativos 22 Many-to-OneModel • Many user-level threads mapped to single kernel thread • Examples » Solaris Green Threads » GNU Portable Threads
  • 23.
    Sistemas Operativos 23 One-to-oneModel • Each user-level thread maps to kernel thread • Examples » Windows » Linux » Solaris 9 and later
  • 24.
    Sistemas Operativos 24 Many-to-ManyModel • Allows many user level threads to be mapped to many kernel threads by multiplexing • Allows the operating system to create a sufficient number of kernel threads • Examples » Solaris prior to version 9 » Windows with the ThreadFiber package
  • 25.
    Sistemas Operativos 25 Scheduling •The Operating Systems are starting to schedule threads for some internal tasks. • Main quasi-states: – Ready – able to run – Running – current thread on a processor – Waiting – waiting an event – Terminated – finishing its running
  • 26.
    Sistemas Operativos 26 References •Presentación de Ramon Ríos. • Capítulos: Operating System Concepts; Silberschatz, Galvin, Gagne. • Enero – mayo 2023