Skip to content

Commit

Permalink
atualizacoes
Browse files Browse the repository at this point in the history
  • Loading branch information
flubacheski committed Oct 28, 2024
1 parent e4eb109 commit df22e5a
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 13 deletions.
29 changes: 18 additions & 11 deletions material/aulas/15-entrada-saida/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,32 +82,39 @@ Até agora trabalhamos com um buffer com somente um caractere. Isso facilita a p

!!! example
Modifique o `copy_file` para usar um buffer de 100 caracteres. Meça o tempo de execução para a cópia de um arquivo grande (~100Mb) usando o comando `time`. Não se esqueça de verificar que os resultados ficaram iguais com o comando `diff`.

O comando `time` tem como saída três informações sobre o processo executado:

- Tempo Real (**real**): O tempo que real que levou para executar o comando, do início ao fim.
- Tempo do usuário (**user**): O tempo que a CPU gastou na tarefa em si.
- Tempo do sistema (**sys**): O tempo que a CPU gastou em tarefas de nível de sistema relacionadas ao comando.

!!! tip
Você pode utilizar o comando `dd` para gerar um arquivo aleatório de tamanho arbitrário. Por exemplo, para gerar um arquivo de 100MB, podemos fazer:

Para saber mais como o `time` ou `diff` funcionam use o comando `man` conforme abaixo.

<div class="termy">

```console
$ dd if=/dev/urandom of=ex.bin bs=1M count=100 iflag=fullblock
```
```console
$ man time
$ man diff
```

</div>

!!! tip
Você pode utilizar o comando `dd` para gerar um arquivo aleatório de tamanho arbitrário. Por exemplo, para gerar um arquivo de 100MB, podemos fazer:

!!! warning
Não sabe como usar `time` ou `diff`? Use o comando `man` visto acima.

<div class="termy">

```console
$ man time
$ man diff
```
```console
$ dd if=/dev/urandom of=ex.bin bs=1M count=100 iflag=fullblock
```

</div>



!!! exercise text short
Você consegue explicar a diferença de desempenho entre as duas versões?

Expand Down
14 changes: 14 additions & 0 deletions material/aulas/16-sinais-I/parte1.c
Original file line number Diff line number Diff line change
@@ -1,15 +1,29 @@
//Recuperando informações de erros usando wait¶
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <string.h>


int main() {
pid_t filho;

filho = fork();
if (filho == 0) {

int i = 1/0;
printf("Divisão por zero!\n");
}
else{
int status,pid_filho;
pid_filho = wait(&status);
printf("Pid do meu filho = %d\n", pid_filho);
printf("WIFEXITED = %d\n", WIFEXITED(status));
printf("WIFSIGNALED = %d\n", WIFSIGNALED(status));
printf("WTERMSIG = %d\n", WTERMSIG(status));
printf("strsignal = %s\n", strsignal(WTERMSIG(status)));
}

return 0;
}
4 changes: 2 additions & 2 deletions material/aulas/17-sinais-II/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ A principal vantagem de usarmos `sigaction` é que esta chamada permite configur
No registro do handler de `SIGINT`, bloqueamos `SIGTERM`. No registro do handler de `SIGTERM`, bloqueamos `SIGINT`.
!!! exercise text short
O campo `sa_mask` permite bloquear sinais enquanto os handlers executam. Consulte `man sigsetops` para ver como preenchê-lo. Escreva
O campo `sa_mask`, da estrutura `struct sigaction`, permite bloquear sinais enquanto os handlers executam. Veja nos slides da aula como acessar esse campo e use `man sigaddset` para ver como preenchê-lo. Escreva
abaixo os comandos para tal.
!!! answer "Resposta"
Expand All @@ -242,7 +242,7 @@ A principal vantagem de usarmos `sigaction` é que esta chamada permite configur
!!! example
Modifique `sinais-concorrentes.c` para que *SIGTERM* seja bloqueado enquanto o handler de *SIGINT* roda. Repita então o experiemento acima e veja que não há mais conflito na variável global compartilhada.
!!! example O que fizemos não permite que `SIGINT` seja interrompido por um `SIGTERM`, mas permite que um `SIGTERM` seja interrompido por um `SIGINT`! Corrija esta situação.
O que fizemos não permite que `SIGINT` seja interrompido por um `SIGTERM`, mas permite que um `SIGTERM` seja interrompido por um `SIGINT`! Corrija esta situação.
## Exercícios para praticar
Expand Down

0 comments on commit df22e5a

Please sign in to comment.