Arquivo da tag: Mac OS

Monte seu Hackintosh de alto desempenho com essas dicas

Hackintosh é um assunto recorrente aqui no blog, entretanto, com a atualização do sistema e dos requerimentos dos programas, um upgrade ou mesmo troca de máquina se faz necessário.

Para quem não conhece o termo “hackintosh”, ele serve para designar computadores montados ao melhor estilo “PC-Frank” e totalmente compatíveis com o sistema operacional Mac OS. Neste caso, compatível com o Mac OS X Mavericks.

Leander Kahney, do Cult of Mac realizou experimentos fantásticos recentemente e conseguiu montar um Hackintosh equivalente a um Mac Pro de alto desempenho

Continuar lendo Monte seu Hackintosh de alto desempenho com essas dicas

Anúncios

Padrão POSIX

Hoje darei ênfase a um conceito que muitas vezes nos esquecemos ou sequer sabemos que existe.

Antes de falarmos sobre os utilitários (ou comandos) no Linux é necessário primeiramente entendermos o que é o Padrão POSIX e a forma em que ele é responsável em permitir aplicações “rodarem” tanto nas plataformas Unix (Solaris, Mac OS X, BSD Unix, …) quanto em Unix-like (Linux, FreeBSD, QNX, …).

 Um pouco de história…

Ken Thompson, um dos cientistas da computação do Bell Labs que trabalharam no projeto MULTICS, achou um pequeno minicomputador PDP-7 que ninguém estava usando e aproveitou-o para escrever uma versão despojada e monousuário do MULTICS. Esse trabalho desenvolveu-se e deu origem ao sistema operacional Unix, que se tornou muito popular no mundo acadêmico, em agências governamentais e em muitas empresas.

PDP-7

Parte dessa história será recontada a seguir. No momento, basta dizer que, em virtude de o código-fonte ter sido amplamente divulgado, várias organizações desenvolveram suas próprias (e incompatíveis) versões, que levaram ao caos. Duas das principais versões desenvolvidas, o System V, da AT&T, e o BSD (Berkeley Software Distribution – distribuição de software de Berkeley), da Universidade da Califórnia, em Berkley, possuíam também variações menores. Para tornar possível escrever programas que pudessem ser executados em qualquer sistema Unix, o IEEE desenvolveu um padrão para o Unix denominado POSIX (Portable Operating System-IX – sistema operacional portátil), que a maioria das versões Unix agora suportam. O POSIX define uma interface mínima de chamada ao sistema que os sistemas em conformidade com o Unix devem suportar. Na verdade, alguns outros sistemas operacionais agora suportam também a interface POSIX.

Unix-padrão

No final da década de 80, duas diferentes e, de certo modo, incompatíveis versões do Unix eram amplamente usadas: a 4.3BSD e o System V Release 3. Além disso, cada fabricante incluía seus próprios aprimoramentos não padronizados. Essa divisão no mundo Unix, somada ao fato de que não existiam padrões para os formatos dos programas binários, inibiu bastante o sucesso comercial do Unix, porque era impossível para os vendedores de softwares escrever e empacotar programas Unix com a esperança de que eles seriam executados em qualquer sistema Unix (como era normalmente feito com o MS-DOS). Várias tentativas de padronização do Unix falharam inicialmente. A AT&T, por exemplo, lançou a SVID (System V interface Definition – definição de interface do System V), que definia todas as chamadas ao sistema, formatos de arquivos e assim por diante. Esse documento era uma tentativa de manter todos os vendedores do System V alinhados, mas não tinha nenhum efeito no campo inimigo (BSD), que simplesmente o ignorava.

A primeira tentativa séria de reconciliar os dois ‘sabores’ de Unix foi iniciada sob os auspícios da Comissão de Padrões do IEEE, uma equipe neutra altamente respeitada e muito importante. Centenas de pessoas dos setores industrial, acadêmico e governamental tiveram participação nesse trabalho. O nome coletivo para esse projeto foi POSIX. As três letras referem-se a Sistema Operacional Portátil (Portable Operating System). O IX foi adicionado para deixar o nome parecido com o do Unix.

Após muita argumentação e contra-argumentação, coerência e incoerência, o comitê POSIX produziu um padrão conhecido como 1003.1, que define um conjunto de procedimentos de biblioteca que cada sistema Unix em conformidade com o padrão, deve suprir. O objetivo do POSIX é permitir ao vendedor de software que escreve um programa usando somente os procedimentos definidos pelo 1003.1 saber que esse programa vai executar em todo sistema Unix conformativo.

Enquanto é verdade que a maioria dos grupos de padronização tende a produzir um compromisso terrível com algumas das características preferidas de todos, o 1003.1 é extraordinariamente bom considerando o grande número de parceiros envolvidos e suas respectivas influências. Em vez de usar a união de todas as características do System V e do BSD como ponto de partida (a norma para a maioria dos grupos de padronização), o comitê da IEEE usou a intersecção. Grosso modo, se uma característica estava presente em ambos – System V e BSD –, ela era incluída no padrão; caso contrário, não era. Em consequência desse algoritmo, o 1003.1 ficou muito parecido com o ancestral do System V e BSD, ou seja, a Versão 7. As duas áreas nas quais esse padrão se diferencia da Versão 7 são os sinais (quase totalmente retirada do BSD) e o tratamento de terminais, que é nova. O documento 1003.1 é escrito de maneira que tanto implementadores de sistemas operacionais quanto os escritores de softwares podem compreendê-lo – uma novidade no mundo da padronização, embora já exista algo a caminho para remediar essa situação.

Resumindo…

O Padrão POSIX é constituído por uma série de regras que determinam como o programador deve escrever o código-fonte de seu sistema de modo que ele possa ser portável entre os sistemas operacionais baseados no Unix.

Portável nesse caso significa que bastará recompilar o programa, usando o compilador adequado para torná-lo compatível com o sistema desejado, sem a necessidade de fazer alterações no código fonte. É graças à essa Interface POSIX que existe um razoável nível de compatibilidade entre os programas escritos para o Linux, FreeBSD e para outras versões do UNIX.

 Alguns dos programas utilitários comuns no Unix exigidos pelo POSIX:

 cat: Concatena vários arquivos para a saída-padrão
chmod: Altera o modo de proteção do arquivo
cp: Copia um ou mais arquivos
cut: Corta colunas de texto de um arquivo
grep: Procura um certo padrão dentro de um arquivo
head: Extrai as primeiras linhas de um arquivo
ls: Lista diretório
make: Compila arquivos e constrói um binário
mkdir: Cria um diretório
od: Gera uma imagem (dump) octal de um arquivo
paste: Cola colunas de texto dentro de um arquivo
pr: Formata um arquivo para impressão
rm: Remove um ou mais arquivos
rmdir: Remove um diretório
sort: Ordena um arquivo de linhas alfabeticamente
tail: Extrai as últimas linhas de um arquivo
tr: Traduz entre conjuntos de caracteres

 Referências:

TANENBAUM, A.S. Sistemas Operacionais Modernos. 2 ed. Tradução de Ronaldo A.L. Gonçalves, Luís A. Consularo; revisão técnica Regina Borges de Araujo. São Paulo: Prentice-Hall 2003. 707 P.

 Leitura Recomendada:

http://pt.scribd.com/doc/904486/3/O-PADRAO-POSIX
http://www.botecodigital.info/linux/estrutura-de-diretorios/
http://www.vivaolinux.com.br/artigo/Entendendo-a-estrutura-do-Linux
http://www.vivaolinux.com.br/artigo/Expressoes-Regulares-(POSIX)-em-C