Шукаєте відповіді та рішення тестів для SISTEMAS OPERATIVOS? Перегляньте нашу велику колекцію перевірених відповідей для SISTEMAS OPERATIVOS в moodle.uam.es.
Отримайте миттєвий доступ до точних відповідей та детальних пояснень для питань вашого курсу. Наша платформа, створена спільнотою, допомагає студентам досягати успіху!
Dado el siguiente código C, ¿cuántos semáforos serían necesarios para garantizar que se impriman siempre los números en orden?
#include <fcntl.h>
#include <semaphore.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <unistd.h>
int main(void) {
pid_t pid;
pid = fork();
if (pid < 0) {
perror("fork");
exit(EXIT_FAILURE);
}
if (pid == 0) {
printf("1\n");
printf("3\n");
} else {
printf("2\n");
printf("4\n");
wait(NULL);
exit(EXIT_SUCCESS);
}
}
Dado el siguiente código C, ¿cuándo se imprimirá el mensaje "Signal number 2 received"
?
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
/* Handler function for the signal SIGINT. */
void handler(int sig) {
printf("Signal number %d received\n", sig);
fflush(stdout);
}
int main(void) {
struct sigaction act;
act.sa_handler = handler;
sigemptyset(&(act.sa_mask));
act.sa_flags = 0;
if (sigaction(SIGINT, &act, NULL) < 0) {
perror("sigaction");
exit(EXIT_FAILURE);
}
while (1) {
printf("Waiting Ctrl+C (PID = %d)\n", getpid());
sleep(9999);
}
}
Dado el siguiente código C, ¿qué sucede cuando el proceso recibe la señal SIGINT
?
#include <fcntl.h>
#include <semaphore.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <unistd.h>
#define SEM_NAME "/example_sem"
int main(void) {
sem_t *sem = NULL;
struct sigaction act;
if ((sem = sem_open(SEM_NAME, O_CREAT | O_EXCL, S_IRUSR | S_IWUSR, 0)) ==
SEM_FAILED) {
perror("sem_open");
exit(EXIT_FAILURE);
}
sigemptyset(&(act.sa_mask));
act.sa_flags = 0;
/* The handler for SIGINT is set. */
act.sa_handler = SIG_IGN;
if (sigaction(SIGINT, &act, NULL) < 0) {
perror("sigaction");
exit(EXIT_FAILURE);
}
printf("Starting wait (PID=%d)\n", getpid());
sem_wait(sem);
printf("Finishing wait\n");
sem_unlink(SEM_NAME);
}
Se crea un semáforo binario en un programa en C con la siguiente inicialización:
sem_t *sem = sem_open("/mi_semaforo", O_CREAT, 0644, 0);
Dado este semáforo, ¿qué ocurre si un proceso ejecuta sem_wait(&sem);
inmediatamente después de la inicialización?¿A qué proceso y que tipo de señal envía la función alarm
después de que se cumpla el tiempo especificado por parámetro?
¿Qué operaciones realiza la operación Up en los semáforos?
Si en la función sigprocmask()
aplicamos el método SIG_UNBLOCK
¿qué se está indicando sobre la señales definidas en la máscara?
¿Qué utilidad el campo (*sa_handler)
en la estructura sigaction
a la hora de capturar una señal?
¿Qué operaciones realiza la operación Down en los semáforos?
Cuando se usa la instrucción sigaction
para capturar una señal, ¿qué señales quedan bloqueadas?
Отримайте необмежений доступ до відповідей на екзаменаційні питання - встановіть розширення Crowdly зараз!