Logo UFPR Logo LicComp

UFPR Setor Palotina
Curso de Licenciatura em Computação

DEE355 – Sistemas Operacionais

Prof. Jéfer – jefer@ufpr.brdocs.ufpr.br/~jefer

Carga Horária: 60 horas (30+30 - Padrão/Lab)

Máx. Faltas: 15 h/a ou 7 aulas

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;
}
            
Gerar PDF