Looking for Sistemas Operativos 2025_2 test answers and solutions? Browse our comprehensive collection of verified answers for Sistemas Operativos 2025_2 at grado.pol.una.py.
Get instant access to accurate answers and detailed explanations for your course questions. Our community-driven platform helps students succeed!
La inanición o hambruna (Starvation) se llama cuando el planificador otorga el acceso a un recurso con baja prioridad
Tipos de procesos según la utilización de los recursos son
La solución al problema de la Sección Crítica debe garantizar
¿Qué contiene una entrada de la tabla de vectores de interrupción?
La comunicación de procesos puede ser a través de una memoria compartida o por intercambio de mensajes
Comando para crear un archivo en blanco
semWait decrementa el semáforo y bloquea si el valor es negativo, y semSignal lo incrementa y desbloquea un proceso si hay alguno esperando. Este programa puede llevar a una situación de interbloqueo (deadlock)? si es así, indica cuál sería la solución? // Declaraciones globales
#define BUFFER_SIZE 5 // Tamaño máximo del buffer
semaphore mutex = 1; // Semáforo para exclusión mutua al acceder al buffer [2]
semaphore full = 0; // Semáforo que cuenta el número de elementos en el buffer [2]
semaphore empty = BUFFER_SIZE; // Semáforo que cuenta el número de espacios vacíos en el buffer [2]
item buffer[BUFFER_SIZE]; // Buffer circular compartido
int in = 0, out = 0; // Punteros para la gestión del buffer circular
// Función para simular la producción de un elemento
item generate_item() {
// Simula la producción
return some_data;
}
// Función para simular el consumo de un elemento
void consume_item(item data) {
// Simula el consumo
}
// Proceso Productor
void productor() {
item next_produced;
while (TRUE) {
next_produced = generate_item(); // Paso 1: Producir un elemento
semWait(empty); // Paso 2: Esperar si el buffer está lleno (no hay espacios vacíos) [2]
semWait(mutex); // Paso 3: Entrar en la sección crítica para acceder al buffer [2, 6]
// Sección crítica: añadir elemento al buffer
buffer[in] = next_produced;
in = (in + 1) % BUFFER_SIZE;
// Fin de la sección crítica
semSignal(mutex); // Paso 4: Salir de la sección crítica [2]
semSignal(full); // Paso 5: Indicar que hay un elemento más en el buffer [2]
}
}
// Proceso Consumidor
void consumidor() {
item next_consumed;
while (TRUE) {
semWait(mutex); // <--- LÍNEA CON ERROR POTENCIAL (Paso 1 del Consumidor)
semWait(full); // Paso 2: Esperar si el buffer está vacío (no hay elementos llenos) [2]
// Sección crítica: extraer elemento del buffer
next_consumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
// Fin de la sección crítica
semSignal(mutex); // Paso 3: Salir de la sección crítica [2]
semSignal(empty); // Paso 4: Indicar que hay un espacio vacío más en el buffer [2]
consume_item(next_consumed); // Paso 5: Consumir el elemento
}
}
void main() {
// Inicializar semáforos (ya hecho en las declaraciones globales)
// Lanzar procesos Productor y Consumidor en paralelo
paralelos(productor, consumidor); // Función hipotética para ejecutar hilos/procesos
}
Qué hace el comando en linux wc /etc/passwd?
La denegación de servicios distribuida proviene de varios sitios a la vez