# POSIX

POSIX (um acrônimo para: Portable Operating System Interface, que pode ser traduzido como Interface Portável entre Sistemas Operativos) é uma família de normas definidas pelo IEEE para a manutenção de compatibilidade entre sistemas operacionais (sistemas operativos em PT-PT), e designada formalmente por IEEE 1003. POSIX define a interface de programação de aplicações (API), juntamente com shells de linha e comando e interfaces utilitárias, para compatibilidade de software com variantes de Unix e outros sistemas operacionais.
Tem como objetivo garantir a portabilidade do código-fonte de um programa a partir de um sistema operacional que atenda às normas POSIX para outro sistema POSIX, desta forma as regras atuam como uma interface entre sistemas operacionais distintos.

## Nome

A designação internacional da norma é ISO/IEC 9945.
A normalização das especificações POSIX surgiu de um projecto, iniciado por volta de 1985, que tinha como objectivo normalizar a API (ou interface de programação de aplicativos) para software desenhado para correr em variantes do sistema operativo (ou sistema operacional, no Brasil) UNIX.
O termo POSIX foi sugerido por Richard Stallman em resposta a um pedido da IEEE de um nome fácil de lembrar. É uma sigla aproximada de Portable Operating System Interface, com o X a representar a herança que a interface de programação de aplicações tem do sistema UNIX.
A norma POSIX especifica as interfaces do utilizador e do software ao sistema operativo em 15 documentos diferentes.
A linha de comando e interface de comandos padrão é a Korn Shell.
Outros programas de nível de usuário, serviços e utilitários incluem, entre centenas de aplicações, awk, echo e ed.
Os serviços de nível de programa necessários incluem serviços de entrada/saída (ficheiro, terminal e internet) básicos.
Atualmente a sua documentação é dividida em 3 partes:
* APIs POSIX do Núcleo que inclui:
** Extensões para o POSIX.1,
** Serviços de tempo real,
** Interfaces com threads,
** Extensões de tempo real,
** Interface segura,
** Acesso a arquivos via rede e
** Comunicações entre processos via rede
* Comandos e utilitários POSIX
** Com extensões de portabilidade para o usuário,
** Correções e utilidades de proteção e
** Controle para utilidades do sistema Batch
* Teste de adequação POSIX
Um pacote de teste da norma POSIX acompanha a documentação da norma. É designada por POSIX Conformance Test Suite (PCTS).
Como a IEEE tem vindo a cobrar somas avultadas pela documentação da norma POSIX e não permite a publicação online das normas, tem havido uma tendência para adopção da "Single UNIX Specification", da responsabilidade do Open Group, que é aberta, aceita contribuições de todos e encontra-se disponível na Internet.
Apesar de terem sido feitas para sistemas Unix, os padrões POSIX podem ser aplicados a qualquer sistema operacional.Para sistemas Linux, várias extensões e normalizações de facto são providenciadas pela Linux Standard Base.

## Versões

* POSIX.1, Serviços de núcleo (incorpora o padrão ANSI C)
** Criação e controle de processos
** Signals
** Exceções de Ponto Flutuante
** Violações de Segmentação
** Instruções Ilegais
** Erros de Barramento
** Timers
** Operações com Arquivos e Diretórios
** Pipes
** Biblioteca padrão do C
** I/O Controle e Interface de Portas
* POSIX.1b, Real-time extensions
** Scheduling de Prioridade
** Signals de Tempo-real
** Clocks e Timers
** Semáforos
** Passagem de Mensagens
** Memória Compartilhada
** E/S Assícronas e Síncronas
** Bloqueamento(Locking) de Memória
* POSIX.1c, Threads extensions
** Criação, Controle e Limpeza de Threads
** Scheduling de Threads
** Sincronização de Threads
** Manipulação de Signals