Por que o Linux é “semelhante ao Unix” se seu kernel é monolítico?

6

Pelo que entendi, parte da identidade do Unix é que ele tem um trabalho de delegação de microkernel para processos de arquivos altamente modulares. Então, por que o Linux ainda é considerado "Unix-Like" se se desvia dessa abordagem com um kernel monolítico?

    
por Steve 24.01.2015 / 05:01

2 respostas

5

Eu acredito que a resposta está em como você define "Unix-like". De acordo com a entrada da Wikipedia para "Unix-like", não parece haver uma definição padrão. 1

A Unix-like (sometimes referred to as UN*X or *nix) operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to any version of the Single UNIX Specification.

There is no standard for defining the term, and some difference of opinion is possible as to the degree to which a given operating system is "Unix-like".

The term can include free and open-source operating systems inspired by Bell Labs' Unix or designed to emulate its features, commercial and proprietary work-alikes, and even versions based on the licensed UNIX source code (which may be sufficiently "Unix-like" to pass certification and bear the "UNIX" trademark).

Provavelmente o motivo mais óbvio é que o UNIX e o MINIX são antecedentes do Linux, tendo inspirado sua criação. 2

Torvalds began the development of the Linux kernel on MINIX and applications written for MINIX were also used on Linux. Later, Linux matured and further Linux kernel development took place on Linux systems.

Linus Torvalds had wanted to call his invention Freax, a portmanteau of "free", "freak", and "x" (as an allusion to Unix).

Se um sistema é monolítico ou microkernel não parece ser considerado ao chamar um sistema operacional "Unix-like". Pelo menos, não quase tão frequentemente quanto se o sistema é compatível com POSIX ou principalmente compatível com POSIX.

    
por 24.01.2015 / 06:18
1

O "modo UNIX" realmente se refere à experiência do usuário. Um pequeno conjunto de utilitários pode ser combinado para criar uma linha de comando eficaz do sistema operacional. Relacionado a isso, os utilitários dos sistemas operacionais não são de forma alguma "especiais" ou têm poder além dos programas que você mesmo pode escrever.

Este é um ponto difícil de se fazer atualmente, uma vez que o UNIX foi tão bem-sucedido neste aspecto que se tornou a maneira pela qual os sistemas operacionais devem apresentar suas interfaces de linha de comando. O ponto é melhor ilustrado por um contra-exemplo: aqui está como fazer cp a.txt b.txt em um mainframe IBM:

//COPY     JOB ,CLASS=E,MSGCLASS=X,NOTIFY=&SYSUID
//cp       EXEC PGM=IEBGENER
//SYSIN    DD DUMMY
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD DSNAME=a.txt,DISP=SHR
//SYSUT2   DD DSNAME=b.txt,DISP=(NEW,CATLG),UNIT=SYSDA

Isso nem copiará todo tipo de arquivo.

O UNIX fez várias suposições que simplificam a usabilidade ao custo do desempenho. Os canais de arquivos 1 (stdin), 2 (stdout) e 3 (stderr) vão para e do terminal, removendo muito do clichê da JCL acima. O sistema de arquivos suporta um tipo de dados - bytes - e um modo de acesso - sequencial (embora o ponteiro onde os dados sequenciais podem ser lidos ou gravados possa ser movido para implementar uma espécie de "acesso aleatório"). Isso significa que os utilitários de sistema só precisam lidar com um tipo de arquivo e um tipo de dados para cobrir todos os arquivos e tipos de dados. O sistema de arquivos não requer pré-alocação. Adicionar arquivos ao diretório (também conhecido como "catálogo de discos" nos mainframes da IBM) acontece automaticamente se o nome do arquivo for conhecido pelo sistema operacional.

Essas suposições foram tão bem-sucedidas que hoje em dia nem sequer pensamos duas vezes. Considerando que, no momento em que eles teriam aparecido perdulário - imagine a sobrecarga de um sistema de arquivos que não foi informado antecipadamente o tamanho máximo de um arquivo.

Mas o UNIX não parou por aí. Promoveu uma abordagem de "caixa de ferramentas" para os utilitários do sistema. O IEBGENER do mainframe pode imprimir arquivos, reorganizar campos dentro de registros, descartar registros, criar registros em branco. Em contraste, nos arquivos de cópias do cp do UNIX, cat lista o conteúdo do arquivo, corta os campos de tratamento. Há uma sintaxe legal para vincular o stdout de um comando ao stdin do próximo arquivo, tudo em uma linha de terminal. Usando esta sintaxe "pipe" e esses pequenos comandos, podemos fazer tudo o que o IEBGENER pode fazer. E coisas que os autores do IEBGENER nunca sonharam.

Kernighan e Plauger escreveram um livro influente em 1976 sobre essa abordagem - Software tools - e essa é realmente a primeira exposição do "modo UNIX". Kernighan e Pike reafirmaram essa abordagem em seu livro de 1984 O ambiente de programação do UNIX .

    
por 27.01.2015 / 11:57