logo

Crowdly

Browser

Add to Chrome

Sistemas Operativos 2025_2

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

View this question

¿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?

0%
0%
0%
0%
0%
View this question

La

comunicación de procesos puede ser a través de

una memoria compartida o por intercambio de mensajes

0%
0%
View this question

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;

}

 
0%
0%
0%
0%
View this question

¿Qué contiene una entrada de la tabla de vectores de interrupción?

0%
0%
0%
0%
0%
View this question

La solución al problema de la Sección Crítica debe

garantizar

View this question

Qué hace el comando en linux wc  /etc/passwd?

0%
0%
0%
0%
View this question
Problema del productor-consumidor con buffer acotado:

El siguiente código muestra una implementación en pseudocódigo estilo C. Asume que 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

}

0%
0%
0%
0%
0%
View this question
View this question

La denegación de servicios distribuida proviene de varios sitios a la vez

100%
0%
View this question

Want instant access to all verified answers on grado.pol.una.py?

Get Unlimited Answers To Exam Questions - Install Crowdly Extension Now!

Browser

Add to Chrome