procesos Flashcards
(40 cards)
¿Qué es un programa en términos de la transición de un programa a proceso?
Un programa es un archivo que contiene instrucciones de máquina, dirección de entrada, datos, símbolos, tablas de realocación y bibliotecas necesarias para ejecutar el proceso.
¿Qué hace el compilador?
Compila el código fuente en una secuencia de instrucciones de máquina.
Guarda en disco esa secuencia junto con datos y metadata del programa.
¿Cuál es la fase de preprocesamiento?
El preprocesador modifica el código de fuente original de un programa escrito en C de acuerdo a las directivas que comienzan con un caracter (#).
¿Qué genera el compilador en la fase de compilación?
Un archivo de texto .s que contiene un programa en lenguaje assembly.
¿Cuál es el propósito de la fase de ensamblaje en la compilación?
“El ensamblador convierte el archivo .s en instrucciones de máquina y lo guarda en un archivo de objeto con extensión .o.”
¿Qué hace el linker en la fase de link edición?
“El linker enlaza los archivos objeto en un único archivo binario ejecutable y también enlaza las bibliotecas estáticas y referencias simbólicas a bibliotecas compartidas.”
¿Qué es un archivo reubicable?
Un tipo de archivo que puede ser movido o reubicado en diferentes áreas de la memoria sin afectar su ejecución o funcionamiento.
¿Qué es ELF?
Executable and Linking Format, es el formato de archivo para ejecutables en Linux.
¿Qué información contiene un archivo ejecutable ELF?
Un archivo ELF contiene instrucciones de máquina, la dirección de entrada del programa, datos para inicializar variables, tablas de símbolos, bibliotecas compartidas y más información necesaria para crear un proceso en memoria.
¿Qué información puede mostrar el comando readelf?
Puede mostrar la sección de encabezado, tabla de programa, encabezado ELF y tabla de realocación.
¿Qué es un proceso?
La ejecución de un programa de aplicación con derechos restringidos.
¿Qué incluye un proceso?
Archivos abiertos
Señales pendientes
Datos internos del kernel
Estado completo del procesador
Espacio de direcciones de memoria
Uno o más hilos de ejecución
¿Qué contiene cada Thread?
- Un único contador de programa
- Un Stack
- Un Conjunto de Registros
- Una sección de datos globales
¿Qué es la virtualización de memoria?
Una abstracción por la cual la memoria física puede ser compartida por diversos procesos.
¿Qué es la virtualización de procesamiento?
“La virtualización de procesamiento es la ilusión de que existe un único procesador para cada programa, aunque en realidad puede haber múltiples procesadores compartidos entre varios procesos.
¿De qué se encarga el Kernel?
- Cargar instrucciones y Datos de un programa ejecutable en memoria.
- Crear el Stack y el Heap
- Transferir el Control al programa
- Proteger al SO y al Programa
¿Qué hace el Loader?
Usa el archivo ELF para armar el espacio de direcciones del proceso.
¿Cuáles son los segmentos de memoria de un proceso en Linux?
- Text: Instrucciones del Programa
- Data: Variables Globales
- Heap: Memoria Dinámica Alocable
- Stack: Variables Locales y traza de llamadas
¿Qué se traduce en la traducción de direcciones?¿Y quién lo hace?
Una Dirección Virtual emitida por la CPU se traduce en una Dirección Física de memoria. Este mapeo se realiza por hardware, más específicamente por Memory Management Unit (MMU).
¿Qué hace la system call brk()?
Incrementa el break del programa, permitiendo al proceso acceder a la nueva área reservada de memoria.
¿Qué diferencia hay entre brk() y malloc()?
brk() es una system call y opera con bloques grandes y malloc() se implementa en espacio de usuario utilizando brk().
¿Cuáles son los estados de un proceso?
- Corriendo
- Listo
- Bloqueado
¿Qué significa que el estado de un proceso sea Corriendo?
El proceso se encuentra corriendo en un procesador. Está ejecutando instrucciones.
¿Qué significa que el estado de un proceso sea Listo?
El proceso está listo para correr pero por algún motivo el SO ha decidido no ejecutarlo por el momento.