Atividades Práticas sobre Processos em Sistemas Operacionais
1. Comando ps
1. Abra o terminal e execute o comando ps
. O que ele retorna?
2. Use o comando ps aux
. Qual a diferença em relação ao comando anterior?
3. Execute ps -e --forest
. O que essa saída representa?
2. Comando pstree
1. Execute o comando pstree
. O que ele mostra?
2. Use pstree -p
. Qual a diferença na saída?
3. Comandos jobs
, fg
e bg
1. Execute um processo em segundo plano (ex.: sleep 100 &
). Use jobs
para listá-lo.
2. Traga o processo para o primeiro plano usando fg
.
3. Coloque o processo em segundo plano novamente com bg
.
4. Comandos nice
e renice
1. Execute um processo com prioridade baixa usando nice -n 10 sleep 100 &
.
2. Verifique a prioridade do processo com ps -l
.
3. Altere a prioridade do processo usando renice
.
5. Comando fuser
1. Execute um processo que acesse um arquivo (ex.: tail -f arquivo.txt
).
2. Use fuser arquivo.txt
para identificar o processo que está usando o arquivo.
6. Comando nohup
1. Execute um processo com nohup sleep 100 &
.
2. Feche o terminal e verifique se o processo ainda está em execução.
7. PID e PPID em C
1. Escreva um programa em C que imprima o PID do processo atual e o PPID (PID do processo pai).
2. Compile e execute o programa. O que ele retorna?
#include <stdio.h>
#include <unistd.h>
int main() {
printf("PID: %d\n", getpid());
printf("PPID: %d\n", getppid());
return 0;
}
8. Threads em C
1. Escreva um programa em C que crie duas threads. Cada thread deve imprimir seu ID e o ID do processo.
2. Compile e execute o programa. O que ele retorna?
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
void* thread_function(void* arg) {
printf("Thread ID: %ld, Process ID: %d\n", pthread_self(), getpid());
return NULL;
}
int main() {
pthread_t thread1, thread2;
pthread_create(&thread1, NULL, thread_function, NULL);
pthread_create(&thread2, NULL, thread_function, NULL);
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
return 0;
}