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 Sistemas de Arquivos em Sistemas Operacionais

1. Comando touch e ls -l

1. Crie um arquivo vazio chamado relatorio.txt usando touch.

2. Use ls -l relatorio.txt. Quais informações são exibidas?

3. Adicione texto ao arquivo com echo "Olá" > relatorio.txt e repita ls -l. O que mudou?

2. Comando mkdir e tree

1. Crie um diretório chamado projetos com mkdir projetos.

2. Crie dois subdiretórios dentro dele: mkdir projetos/doc e mkdir projetos/src.

3. Use tree projetos (instale o pacote tree se necessário). O que a saída mostra?

3. Comandos ln e ls -i

1. Crie um arquivo original.txt com touch original.txt.

2. Crie um link rígido com ln original.txt copia.txt e um link simbólico com ln -s original.txt link.txt.

3. Execute ls -li. Compare os inodes de cada arquivo. O que você observa?

4. Comando df e du

1. Execute df -h. O que cada coluna da saída representa?

2. Crie um diretório com arquivos (ex.: mkdir teste && echo "teste" > teste/arq1.txt).

3. Use du -sh teste/. Qual é a diferença entre df e du?

5. Comando tar

1. Crie um diretório backup com dois arquivos (touch backup/a.txt backup/b.txt).

2. Compacte o diretório com tar -cvf backup.tar backup/.

3. Extraia os arquivos em outro diretório com mkdir novo && tar -xvf backup.tar -C novo/. Verifique o resultado.

6. Comando stat

1. Crie um arquivo info.txt com touch info.txt.

2. Execute stat info.txt. Quais são os principais atributos exibidos?

3. Modifique o arquivo (echo "novo" >> info.txt) e repita stat. O que mudou?

7. Manipulação de Arquivos em C

1. Escreva um programa em C que crie um arquivo chamado saida.txt e escreva "Hello, SO!" nele.

2. Compile e execute o programa. Verifique o conteúdo do arquivo com cat saida.txt.


#include 

int main() {
    FILE *fp = fopen("saida.txt", "w");
    if (fp == NULL) {
        printf("Erro ao abrir o arquivo!\n");
        return 1;
    }
    fprintf(fp, "Hello, SO!\n");
    fclose(fp);
    return 0;
}
            

8. Leitura de Diretórios em C

1. Escreva um programa em C que liste os arquivos de um diretório fornecido como argumento.

2. Compile e execute o programa com ./programa . (diretório atual). O que ele retorna?


#include 
#include 

int main(int argc, char *argv[]) {
    if (argc != 2) {
        printf("Uso: %s \n", argv[0]);
        return 1;
    }
    DIR *dir = opendir(argv[1]);
    if (dir == NULL) {
        printf("Erro ao abrir o diretório!\n");
        return 1;
    }
    struct dirent *entry;
    while ((entry = readdir(dir)) != NULL) {
        printf("%s\n", entry->d_name);
    }
    closedir(dir);
    return 0;
}
            

9. Comando df e du - Análise

1. Qual é a diferença entre os comandos df e du no Linux? Quando você usaria cada um?

2. Execute df -h e du -sh /home. Compare os resultados e explique.

10. Permissões de Arquivos

1. Crie um arquivo perm.txt com touch perm.txt.

2. Altere as permissões para que apenas o proprietário possa ler e escrever, e outros só possam ler. Mostre o comando.

3. Verifique o resultado com ls -l perm.txt.

11. Sistemas de Arquivos Journaling

1. O que é um sistema de arquivos journaling e por que ele é importante?

2. Execute df -T e identifique um sistema de arquivos journaling em seu sistema (ex.: ext4).

12. Comando tar - Criação e Extração

1. Qual é a diferença entre tar -cvf e tar -xvf? Dê um exemplo de uso para cada um.

2. Crie um arquivo meusdados.tar com um diretório e extraia-o em outro local.

13. Comando fsck

1. Execute fsck --help. O que esse comando faz?

2. Por que você não deve executar fsck em um sistema de arquivos montado em leitura/escrita?

14. Verificação de Inodes

1. Crie dois arquivos e um link rígido entre eles (touch arq1.txt && ln arq1.txt arq2.txt).

2. Use ls -li para verificar os inodes. O que isso indica sobre links rígidos?

Gerar PDF