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
/deve/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.