SOM - Procesos y Memoria - r01
SOM - Procesos y Memoria - r01
SOM - Procesos y Memoria - r01
1SMR
RA1. c)
Mientras un programa no se encuentre en ejecución, no será nada más que un archivo de datos en un
medio de almacenamiento.
Una unidad de actividad que ejecuta una secuencia ordenada de instrucciones, que dispone
de una serie de recursos asignados por el sistema y que se encuentra en un estado
particular.
El sistema dispondrá de una Tabla de procesos donde guarda la información relevante de cada
proceso:
❖ El identificador del proceso (PID, del inglés, Process IDentifier)
❖ El estado del proceso, es decir, si se está ejecutando, o no.
❖ Su prioridad con respecto al resto de los procesos del sistema.
❖ La posición de memoria donde se encuentra.
❖ Etc.
GESTIÓN DE LOS PROCESOS
❑ Los micros están formados por miles/millones de transistores. Anteriormente fueron válvulas de
vacío…
❑ Los microprocesadores:
• En los ordenadores fijos se insertan en zócalos (“socket”), estos últimos están soldados a
la placa base.
Ejecución de un programa
y la CPU https://youtu.be/cNN_tTXABUA
Unidade
s
Memoria Entrada/
Salida
Arquitectura de un Computador: Unidad de Control
¿Qué es un programa?
Los programas son una serie de instrucciones.
La UC es la que se coloca antes de su resolución, dado que lee las instrucciones, las interpreta
y las envía a las unidades correspondientes.
Funciones
Es el director de orquesta
Arquitectura de un Computador: Unidad de Control
El director
Unidad de control (UC): de orquesta
Clock: genera una onda cuadrada para sincronizar las operaciones del procesador
Contador de programa (CP): contiene la dirección de memoria de la siguiente instrucción que se va a
ejecutar
Registro de instrucciones (RI): contiene la instrucción que se está ejecutando actualmente
Secuenciador: genera ordenes elementales para el procesamiento de la instrucción.
Decodificador de instrucciones (DI): se encarga de interpretar y ejecutar las instrucciones que llegan,
extrayendo el código de operación de la instrucción. (dependiendo del código, se dirige a la
ALU/periféricos/Memoria…)
Unidad aritmético
lógica (ALU):
Unidad aritmético lógica (ALU): se encarga de hacer los cálculos aritméticos (SUMA, RESTA,
MULTIPLICACION, DIVISION) y operaciones lógicas (AND, OR, …). Partes internas.
microoperación
2) Lectura de los operandos fuente
3) Ejecución de la instrucción y
almacenamiento del operando de destino.
4) Almacenar/guardar el resultado
¿Qué son y cómo se gestionan las interrupciones?
Una interrupción es el mecanismo que tiene el microprocesador para trabajar con los periféricos
Los tiempos son diferentes. Los periféricos son mucho más lentos que la CPU
Para ello,
❖ Asigna a los procesos los recursos que necesiten, atendiendo a una estrategia (de
asignación) concreta (permisos, prioridad, evitar interbloqueos, etc.)
❖ Reparte el tiempo de ejecución del procesador entre los procesos, de forma que esté
ocupado el mayor tiempo posible, ofreciendo la sensación de que los procesos se están
ejecutando a la vez y permitiendo que todos ellos tengan un tiempo de respuesta adecuado.
❖ Permite la creación de procesos por parte del usuario y de otros procesos, y la comunicación
entre distintos procesos. La creación de un proceso hijo por parte de un proceso padre se
denomina “process spawning”.
Por ejemplo, un servidor de impresión puede crear un nuevo proceso por cada documento a imprimir. De esta forma, el proceso
padre se encarga de la recepción de documentos y cada proceso hijo se centra en imprimir un documento concreto.
GESTIÓN DE LOS PROCESOS: EJECUCIÓN
Un proceso en ejecución ➔ estará en la memoria (principal)
La CPU cuenta con una serie de registros como el contador de programa o el registro de instrucción
Un módulo del SO, el distribuidor (“dispacher”) asigna a otros procesos cuando se haya acabado el
tiempo disponible o cuando exista algún punto de espera (a bloqueado) o cuando se produzcan las
interrupciones (a la espera). ➔ CAMBIA EL “CONTEXTO” (Memoria y, dentro de la memoria, el
punto exacto que se está ejecutando (CP)
Recuerda que el ciclo de instrucción era tiempo que emplea el procesador en ejecutar una instrucción en
lenguaje máquina y, de un modo simplificado, podríamos dividirlo en dos pasos:
• El ciclo de lectura (en inglés, fetch), que consiste en cargar una instrucción desde la memoria principal a los registros del
procesador
• El ciclo de ejecución (en inglés, execute), que consiste en interpretar la instrucción (decodificarla) y ejecutarla, enviando las
señales adecuadas a los componentes que deben realizar la operación que indica la instrucción.
GESTIÓN DE LOS PROCESOS: EJECUCIÓN
Llamamos multitarea o multiprogramación a la capacidad que tienen los sistemas operativos actuales de
alternar el uso del procesador entre distintos procesos. En MS-DOS no era así…
Dada la velocidad a la que funcionan los procesadores, el usuario tiene la sensación de que los procesos se
ejecutan al mismo tiempo. Nota: Con las CPU de varios núcleos y varios hilos sí pueden estar ejecutándose más
procesos, pero no todos los que en realidad parece que se ejecutan.
Por otro lado, cuando en un sistema informático disponemos de varios procesadores (o un único procesador
con varios núcleos), pueden ejecutarse varios procesos al mismo tiempo. A esta técnica la llamamos
multiproceso o multiprocesamiento. Cuando todos los procesadores (o núcleos) actúan en igualdad de
condiciones, hablamos de multiproceso simétrico o SMP (del inglés Symmetric Multi-Processing). Cuando el
sistema dispone de procesadores con funciones especializadas, hablamos de multiproceso asimétrico o AMP (del
inglés, Asymmetric Multi-Processing).
En el multiprocesamiento asimétrico, solo el procesador maestro ejecuta las tareas del sistema operativo,
mientras que en el multiprocesamiento simétrico todos los procesadores ejecutan dichas tareas. Otra
diferencia clave es que en el multiprocesamiento asimétrico el procesador maestro asigna tareas a los
procesadores esclavos, mientras que en el simétrico los procesadores toman tareas de una en una
GESTIÓN DE LOS PROCESOS
Los programas tienen una división en tareas o procesos en función del código ejecutable. El código
ejecutable estará más o menos optimizado en función del/los programador(es) que lo realizasen y del diseño
de la propia aplicación.
Si se pretende alterar eso para poder incorporar más paralelismo en la ejecución, es preciso disponer de una
CPU que haga de director de orquesta y que distribuya:
❑ Debe crear procesos y listas de tareas. Además, deberá controlarlas todas y sincronizarlas en todo
momento.
❑ Tiene que tener capacidad de predecir la duración de cada una de las tareas, para poder
sincronizar las ejecuciones.
❑ Todos los núcleos han de comunicarse con el núcleo (maestro) para indicarle cuando
empiezan/acaban cada proceso.
También hay que tener en cuenta que no todo se puede ejecutar en paralelo…
Nota: A diferencia de las CPU, las GPU trabajan a nivel de pixel, por lo que sí se puede (y se hace) un
planteamiento de asignación en paralelo de miles de CPUs…
GESTIÓN DE LOS PROCESOS: ESTADOS DE LOS PROCESOS
Los procesos pueden encontrarse en uno de los siguientes estados:
❖ En ejecución en el procesador en ese momento. Si el ordenador dispone de varios procesadores, o varios núcleos,
podrá existir un proceso en ejecución por cada uno de los núcleos presentes.
❖ Preparado: En este estado se encuentran los procesos que no se están ejecutando, pero que podrían hacerlo en
cualquier momento y sólo esperan su oportunidad para hacerlo.
❖ Bloqueado: En este estado estarán los procesos que han solicitado algún servicio del SO y están esperando una
respuesta.
❖ Suspendido: cuando está en memoria secundaria, con objeto de liberar parte de la memoria principal
❖ Nuevo: cuando un proceso se acaba de crear y en ese momento el SO analiza si dispone de recursos para ejecutarlo.
Bloqueado/Espera
Tiene recursos,
Suspendido está a la espera.
No tiene CPU
• Sobrepasar el tiempo de ejecución asignado al proceso (tiempo real, de uso del procesador, etc.) o el tiempo
máximo de espera ante un suceso.
• Que el proceso trate de acceder a posiciones de memoria o recursos del sistema que no tiene autorizados.
• Que una de sus instrucciones contenga un error aritmético o los datos no sean del tipo o tamaño adecuado.
• Que surja un error en una operación de entrada/salida (no existe un archivo, se produce un error de lectura,
etc.)
• Que una instrucción del programa no exista en el juego de instrucciones o que sea una instrucción reservada
al sistema operativo.
• Que el SO, el usuario o el proceso padre decida terminarlo. También suelen terminar los procesos hijos cuando
termina el proceso padre.
GESTIÓN DE LOS PROCESOS: PLANIFICACIÓN
El planificador (multiproceso) asigna los recursos (procesadores/núcleos) de modo que se logre el máximo
aprovechamiento de los mismos:
❖ Eficiencia, maximizando el uso del procesador, maximizando las acciones a realizar por unidad de tiempo
❖ Dar respuesta a todos los “procesos”, es decir, debe primar la equidad
❖ No debe bloquear siempre a los procesos más grandes, es decir, el algoritmo debe permitir que todos los procesos se
ejecuten
❖ Tener en cuenta las características de cada proceso, incluida la prioridad
En la mayoría de los casos, la asignación es transparente para el usuario. Se puede decir que se
hace de manera inteligente. ¿Alguna vez has cambiado prioridades en tu SO?
➔La asignación de recursos se hace de manera automática: los procesos que requieren más
recursos (están realizando más “trabajo”) el sistema les asignará más tiempo de procesador,
por lo que el proceso se ejecutará más rápido.
¿Qué consecuencia tendría aumentar la prioridad de dicho proceso?
¿Qué ocurre si deseas ejecutar varios procesos pesados al mismo tiempo? En este caso, el tiempo
que se puede asignar puede superar la capacidad del procesador ➔ los programas se ejecutarán
más lentos (el procesador no puede asignar recursos que no tiene). Por ejemplo, el minado se hace
con las GPUs pero si además deseas jugar a un juego que requiere recursos….
➔En estos casos…. Si cambias la prioridad, vas a sacrificar alguno de los procesos (menos
prioritarios) en favor de los que sí lo son (para el usuario)
GESTIÓN DE LOS PROCESOS: PLANIFICACIÓN
1. Primero en llegar primero en ser servido, o FCFS (“First Come First Served”), o FIFO (“First In First Out”)
❖ Una vez se asigna al procesador, no lo abandona hasta que acaba
❖ Ventajas:
▪ Es sencillo
▪ Es predecible
❖ Inconvenientes:
▪ Los procesos largos pueden hacer esperar mucho a los procesos cortos
▪ El tiempo de servicio mínimo variará mucho según el número de procesos ejecutados y la duración de los mismos.
GESTIÓN DE LOS PROCESOS: PLANIFICACIÓN
2. Primero el más corto, o SJF (“Shortest Job First”)
❖ Los procesos se van poniendo en cola según llegan y se les asigna el estado Preparado➔El Planificador elige el que
tiene un menor tiempo previsto de ejecución.
❖ Inconveniente:
▪ los procesos largos puede que no se llegan a ejecutar
(inanición)
▪ Difícil de prever la duración de los procesos
❖ Ventajas: eficaz con los procesos cortos
GESTIÓN DE LOS PROCESOS: PLANIFICACIÓN
3. Primero al que menos le quede, o SRTF (“Short Remaining Time First”)
❖ Se ejecuta el proceso al que le quede menos tiempo de ejecución
❖ En caso de igual tiempo restante se aplica FIFO
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
A X X X X X X X
B X X X X X
C X X X X X X X X X X
D X X X X
E X
Quantum = 3
GESTIÓN DE LOS PROCESOS: PLANIFICACIÓN
5. Planificación por prioridad
❖ A cada proceso se le asigna un número entero que representa su prioridad, de modo que, cuanto menor es el número,
mayor es la prioridad.
❖ Los procesos con prioridad más baja pueden sufrir inanición (falta de recursos)
❖ Ejemplo: Se suponen que los siguientes procesos están disponibles desde el inicio:
❖ La solución para evitar el monopolio de los procesos con mayor prioridad es la reducción de su prioridad cuando se van
ejecutando (“envejecimiento”). De ese modo, otros procesos se ejecutarán en el procesador/núcleo.
❖ Opciones:
▪ No expulsivo: una vez que empieza, el proceso acaba
▪ Expulsivo: si llega otro proceso con mayor prioridad, le coge el testigo
GESTIÓN DE LOS PROCESOS: PLANIFICACIÓN
6. Planificación por reparto equitativo, o FSS (del inglés, Fair-share Scheduling)
❖ Se usa con procesos interactivos, en los que interviene el usuario.
❖ El tiempo de ejecución se reparte entre ellos de forma equitativa
POLÍTICA EXPULSIVA
❖ En las no expulsivas, el proceso que se está ejecutando lo va a estar hasta que se pare o acabe
❖ En las expulsivas, el planificador tiene la capacidad de “desalojarle” o “expropiarle”
➢ Una planificación que requera un tiempo compartido y en tiempo real es EXPULSIVO O
EXPROPIATIVO
❖ Los SO habituales usan este tipo de planificación: UNIX/Linux, Windows MacOS…
Ahora, además de todos los programas y servicios que se están ejecutando, puedes ver el uso que están haciendo del procesador,
de la memoria, del disco y de la red.
Además, en la cabecera de cada columna, también puedes ver el porcentaje de uso global que se está haciendo de cada uno de los
recursos.
➢ Si seleccionas un programa ➔ lo puedes cerrar y desaparece
Puedes usar el programa Process Hacker, para instalarlo o para usar la versión portable
Get-Process
Obtener Get-Process | more
datos de
Get-Process -Name fi* (para filtrar los procesos fi*)
procesos
Get-Process -Name explorer | Format-List * (para obtener datos del proceso explorer)
Stop-Process -name firefox* (Detiene los procesos que empiezan por firefox)
Detener
un Stop-Process -id 6928 (Usando el identificador del proces0)
proceso
Stop-Process -name Calculator -Confirm (Nos pedirá confirmación antes de acabar con el proces0)
Iniciar un Start-Process notepad.exe (El programa debe estar en la ruta de procesos (path))
proceso
PROCESOS Y SERVICIOS
Servicio: proceso que se suele ejecutar en segundo plano, es decir, sin que el usuario tenga constancia directa de
su presencia y, normalmente, esperan un tipo de suceso para ofrecer una determinada prestación al usuario.
En el mundo GNU/Linux, los servicios suelen recibir el nombre de demonios (en inglés, daemons, de Disk And
Execution MONitors).
PROCESOS vs SERVICIOS EN WINDOWS 10
Servicio: proceso que se suele ejecutar en segundo plano, es decir, sin que el usuario tenga constancia directa de
su presencia y, normalmente, esperan un tipo de suceso para ofrecer una determinada prestación al usuario.
En el mundo GNU/Linux, los servicios suelen recibir el nombre de demonios (en inglés, daemons, de Disk And
Execution MONitors).
• Un proceso es un programa que se ejecuta en primer plano. El usuario interacciona con ella, la puedes cerrar
en cualquier momento…. Ej: Word
• Un servicio es un proceso en ejecución en segundo plano y que el usuario convencional no va a interaccionar
con dicho proceso, pero es necesario para el funcionamiento del sistema.
• Los servicios no se pueden eliminar/desinstalar; NO SE PUEDEN DESINSTALAR
• Sí los puedes detener o reiniciar.
• Ejemplos: cliente DHCP (*), administrador de sesiones, administrador de zona horaria… es decir,
corresponden a la parte administrativa de windows
(*) El protocolo DHCP sirve para asignar una IP de manera dinámica a los equipos conectados a un router. Si
lo detengo ➔ dejaría de tener internet
Cambiar prioridad
Debajo te dejo dos enlaces a videos en los que se explica como cambiar
prioridad como te he explicado y, en el segundo, dejarlo recogido en la
configuración del equipo (registro)
Pues depende…
• Un proceso en Windows es una instancia en ejecución de un programa. Puede ser una aplicación que
un usuario inicia o un componente del sistema operativo que se inicia automáticamente en respuesta a
un evento o una solicitud.
• Cada proceso tiene su espacio de memoria, recursos y estado de ejecución independiente. Los
procesos pueden ejecutarse en primer plano o en segundo plano, y pueden ser visibles o invisibles para
el usuario.
• El Administrador de tareas de Windows es una herramienta que permite ver y gestionar los procesos en
ejecución en un sistema.
Sobre cada servicio se pueden realizar estas acciones (clic derecho sobre él):
• Iniciar el servicio: pasa el servicio a estado "En ejecución".
• Detener el servicio: pasa el servicio a estado "Detenido".
• Ir al proceso: nos lleva a la pestaña Procesos y resalta aquel al que está asociado.
https://www.pantallazos.es/2019/11/windows-10-cmd-listar-
procesos-sistema-txt.html
https://www.ionos.es/digitalguide/servidores/configuracion/a
brir-el-administrador-de-tareas/
https://learn.microsoft.com/es-es/powershell/scripting/samples/managing-processes-with-
process-cmdlets?view=powershell-7.4
CAMBIO DE PRIORIDAD DE LOS PROCESOS
¿Qué hace un cambio de prioridad?
Puedes cambiar (aumentar o disminuir) la prioridad de un proceso o que tenga un mayor tiempo
de procesador compartido
Lo puedes hacer:
1.En la pestaña Procesos➔ sobre el proceso concreto que quieras actuar ➔ Botón derecho ➔
Cambiar prioridad (asignas mayor o menor prioridad, según requieras)
¿Una prioridad más alta hace que el proceso se ejecuta más rápido?
cambiar-prioridad-proceso-windows-10
ASIGNAR AFINIDAD A UN PROCESO
https://youtu.be/tDW46ny4bd0
GESTIÓN DE LA MEMORIA (PRINCIPAL O RAM)
Gestión de memoria: asignación
MEMORIA PRINCIPAL
Definición de palabra: conjunto de bits que la arquitectura de un ordenador puede manejar como un todo. Los tamaños de
palabra más comunes son de 16, 32 ó 64 bits.
El gestor de memoria asigna una porción de memoria principal a cada proceso que se esté ejecutando para almacenar sus
instrucciones y sus datos.
En los sistemas actuales (multitarea), la gestión de memoria debe atender a las necesidades de todos los procesos de
manera eficaz y eficiente. Además, debe cumplir los requisitos:
▪ Protección: Debe evitar que un proceso haga referencia a posiciones de memoria de un proceso diferente.
▪ Como el sistema operativo no puede anticiparse a todos los accesos que realizará un proceso durante su ejecución, es el
procesador quien debe tener un mecanismo que intercepte los accesos no permitidos.
▪ Reubicación: Como veremos más adelante, una forma de dar cabida a más procesos consiste en descargar a memoria secundaria
(“swapping”) la totalidad o una parte de la memoria ocupada por un proceso (por ejemplo, mientras se encuentra bloqueado).
▪ La reubicación consiste en que, al volver a la memoria, no sea necesario que ocupe la posición original.
▪ Compartición: Debe existir la posibilidad de que varios procesos compartan información a través de una zona de memoria
compartida.
▪ Por ejemplo, es más eficiente que varios procesos accedan al mismo código de una biblioteca de funciones compartida (lo
que en Windows conocemos como DLL), que mantener varias copias de ésta.
▪ Igual puede ocurrir con datos que manejen diferentes procesos. Sistemas Operativos - Administración
de memoria -Jose María Cecilia
GESTIÓN DE LA MEMORIA (PRINCIPAL O RAM)
MEMORIA PRINCIPAL
1) Proceso de swapping
2) Cuando se compacta la memoria
Para lograr que la Reubicación funcione, el proceso de traducción de direcciones virtuales a direcciones físicas necesitará
de la participación de dos registros en el procesador:
• Registro base: Que contiene la dirección en memoria principal del proceso.
• Registro límite: Que contiene la última posición a la que puede hacer referencia el proceso.
Si cuando sumamos la dirección relativa al registro base obtenemos un resultado inferior a dicho registro base o superior
al registro límite, el procesador genera una interrupción que deberá ser procesada por el sistema operativo.
La gestión de memoria con particiones variables genera una gran fragmentación ➔ Se planteó la
posibilidad de que las posiciones de memoria ocupada por un proceso no tuvieran que ser contiguas.
En un esquema de paginación:
▪ La memoria se divide en trozos del mismo tamaño que reciben el nombre de marcos de página (“page frames”).
▪ Los procesos se dividen en fragmentos del mismo tamaño denominados páginas.
Con la paginación se gestiona el modo en el que el administrador de la memoria almacena y recupera datos de la memoria
secundaria para llevarlos a la memoria principal. Los procesos se dividen en tamaños de páginas que se colocan en los
marcos de las páginas en los cuales está dividida la memoria (principal)
Este esquema necesita un método que traduzca las direcciones virtuales a direcciones físicas, teniendo en cuenta la
ubicación real de cada marco de página
GESTIÓN DE LA MEMORIA (PRINCIPAL O RAM)
PAGINACIÓN (III)
Cuando llegue un nuevo proceso, ➔ el gestor busca una cantidad suficiente de marcos de página disponibles en la
memoria principal
Con esta solución se evita la fragmentación externa y la fragmentación interna se reduce a tamaño de marco
Este método:
▪ Se basa en la creación de una tabla de páginas, para cada proceso, en el momento de cargarlo en memoria.
▪ Este esquema necesita un método que traduzca las direcciones virtuales a direcciones físicas, teniendo en cuenta la
ubicación real de cada marco de página
Este esquema necesita un método que traduzca las direcciones virtuales a direcciones físicas, teniendo en cuenta la
ubicación real de cada marco de página
GESTIÓN DE LA MEMORIA (PRINCIPAL O RAM)
SEGMENTACIÓN
La segmentación es una técnica de gestión de la memoria en la que la memoria se divide en partes de tamaño
variable. Cada segmento se asigna a un proceso. Por tanto, cada segmento tiene funciones por sí mismo.
Las direcciones se expresarán mediante un número de segmento y un desplazamiento dentro de él, y el tamaño
asegura que no se realizan referencias a direcciones ilegales dentro del segmento.
En este caso, se reduce la fragmentación externa, pero sigue siendo necesario la compactación. Sus 2
estructuras de datos son las siguientes:
La idea es dividir cada segmento en páginas de longitud fija para su ubicación en memoria.
Se aprovechan los conceptos de la división lógica de los programas (segmentos) con la granularidad
de las páginas
Este método ofrece una gran flexibilidad, pero tiene tres inconvenientes:
▪ El proceso de traducción es más complejo, por lo que consumirá más recursos.
▪ Dado que cada segmento tiene su propia tabla de páginas, el espacio destinado al almacenamiento de tablas de
páginas será mucho mayor.
▪ Como cada segmento tiene su propia tabla de páginas, podremos tener un marco de páginas incompleto al final
de cada uno de los segmentos asignados a un proceso, lo que implica una mayor fragmentación interna.
GESTIÓN DE LA MEMORIA (PRINCIPAL O RAM)
PAGINACIÓN Y SEGMENTACIÓN COMBINADAS
GESTIÓN DE LA MEMORIA (PRINCIPAL O RAM)
PAGINACIÓN Y SEGMENTACIÓN COMBINADAS
El uso de memoria virtual permite liberar memoria principal y, de ese modo, albergar un número de procesos
mayor.
La forma en la que los SOs resuelven las necesidades grandes de memoria principal de múltiples procesos
ejecutándose al mismo tiempo es volcando sobre un dispositivo de memoria secundaria (normalmente
el disco duro) las porciones de memoria que los procesos no estén utilizando en ese preciso instante.
Lógicamente, habrá que volver a traerlas a la memoria principal cuando los procesos las vayan necesitando.
GESTIÓN DE LA MEMORIA (PRINCIPAL O RAM)
Memoria virtual
Recomendaciones: