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!
Stack parte de un proceso donde se almacenan
¿Cuál de las siguientes transiciones entre los estados de un proceso no se puede producir en un sistema con un algoritmo de planificación no expropiativo?
La comunicación de procesos puede ser a través de una memoria compartida o por intercambio de mensajes
Comunicación Bidireccional con Tuberías (Pipes)
Lee cuidadosamente el siguiente código, que implementa una comunicación unidireccional entre un proceso padre y un proceso hijo utilizando una tubería ordinaria.
Se desea modificar el programa para agregar una segunda tubería que permita comunicación bidireccional. El hijo debe responder al padre con el mensaje: "Bien, gracias".
¿Cuál de las siguientes opciones implementa CORRECTAMENTE la respuesta del hijo al padre usando una segunda tubería?
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <sys/wait.h>
#define BUFFER_SIZE 256
int main() { int fd[2]; pid_t pid; char mensaje[] = "Hola hijo, ¿cómo estás?"; char buffer[BUFFER_SIZE];
if (pipe(fd) == -1) { perror("pipe"); exit(EXIT_FAILURE); }
pid = fork(); if (pid < 0) { perror("fork"); exit(EXIT_FAILURE); }
if (pid > 0) { // Padre close(fd[0]); // Cierra extremo de lectura write(fd[1], mensaje, strlen(mensaje) + 1); close(fd[1]); wait(NULL); } else { // Hijo close(fd[1]); // Cierra extremo de escritura read(fd[0], buffer, BUFFER_SIZE); printf("Hijo recibió: %s\n", buffer); close(fd[0]); exit(EXIT_SUCCESS); }
return 0;}
¿Qué contiene una entrada de la tabla de vectores de interrupción?
La solución al problema de la Sección Crítica debe garantizar
Qué hace el comando en linux wc /etc/passwd?
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
}
La denegación de servicios distribuida proviene de varios sitios a la vez