Programação UNIX Avançada
Prof. Carlos Maziero, Dr
Prof. Luiz Lima Jr, Dr
PPGIA/PUCPR
Conteúdo
- Desenvolvimento em Linux: edição e compilação; bibliotecas (uso, criação) e chamadas de sistema; execução e depuração; tratamento de erros; documentação online.
- Processos: modelo de processos UNIX, criação de processos (
fork
,wait
,clone
,exec*
); variáveis de ambiente; argumentos de linha de comando; processos em background & foreground; manipulação de contextos (ucontext
). - Comunicação entre processos: IPC System V e IPC Posix; Pipes, named pipes; filas de mensagens; memória compartilhada; semáforos.
- Threads: threads de usuários e threads de núcleo; modelos de threads; Posix threads: criação, sincronização; user-level threads.
- Sinais: tipos de sinais; geração, espera, Interceptação e tratamento; mascaramento de sinais.
- Sistema de arquivos: hierarquia de diretórios; arquivos padrão (
stdin
,stdout
,stderr
); I/O em arquivos; manipulação de arquivos; permissões de acesso; manipulação e navegação em diretórios; hard & symbolic links; concorrência de acesso: advisory/mandatory locking; shared/exclusive locks. - Comunicação em Rede: tipos de sockets; domínios de comunicação; aplicações cliente/servidor com sockets; daemons; RPC.
- Gerência de Tempo: referências de tempo; temporizadores.
- Gerência de Memória: modelo de memória;
malloc
,calloc
,free
,realloc
; arquivos mapeados em memória. - Acesso a Dispositivos: drivers de dispositivos em Linux; major & minor numbers; os sistemas
/dev
e/proc
; chamadaioctl
.
Cronograma
Este curso está dimensionado para uma duração de 40 horas-aula.
Bibliografia recomendada
- Notas de aula fornecidas pelos professores
- Advanced UNIX Programming, 2nd ed, M. Rochkind. Ed. Addison-Wesley, 2004.
- UNIX Systems Programming. Kay Robbins, Steve Robbins, Prentice-Hall, 2003.
- UNIX Network Programming, vols 1 & 2. Richard Stevens, Ed. Prentice-Hall, 1998.
- Linux Device Drivers, 2nd ed. Rubini & Corbet. Ed. O’Reilly, 2001.