Praticamente, se não de fato, todos os sistemas operacionais do tipo UNIX hoje fazem a distinção entre os modos multiusuário e monousuário. O modo de usuário único geralmente se destina à manutenção de sistema de baixo nível que não pode ser executada enquanto o sistema está funcionando normalmente, mesmo com um conjunto reduzido de serviços (geralmente manutenção do sistema de arquivos que geralmente precisa ser feita offline).
No entanto, alguém obviamente teve que escrever o primeiro código para realmente distinguir o modo de usuário único do modo multiusuário.
Eu suspeito que o modo multiusuário veio depois do modo monousuário, simplesmente porque o modo multiusuário faz mais coisas e faz sentido iniciar o sistema inicialmente no modo monousuário e só depois fazer a transição para o modo multiusuário (e isso é como pelo menos o Linux faz isso; o kernel funciona no modo "usuário único", como evidenciado se você passar, por exemplo, init=/bin/bash
para ele e depois init
alternar efetivamente para o modo multiusuário), mas minha pergunta é:quando e qual variante/versão foi feita a distinção entre as duas pela primeira vez?
Responder1
O Unix fez essa distinção desde o início, ou seja, desde que a versão 1 foi lançada em 1971.
O sistema estava inicializando no modo multiusuário (ou seja, usuários conectados às interfaces seriais disponíveis, tty0
mas tty5
foi feita provisão para adicionar mais quatro ttys).
Manual do Unix v1estados para a seção 4, tty
página:
By appropriate console switch settings, it is possible to
cause UNIX to come up as a single—user system with I/O on
this device.
Observe que com esta primeira versão do Unix, a geração dos processos de login para cada linha serial foi codificada e feita pelo próprio processo init. A seleção de qual modo usar foi feita antes da inicialização e a mudança para o modo multiusuário foi feita modificando as configurações da chave e saindo do shell do modo de usuário único.
Mais tarde, com o Unix Versão 7 (1979), em vez de switches de hardware, o sistema inicializou primeiro no modo de usuário único e quando o shell de usuário único foi encerrado, ele mudou para o modo multiusuário.
Ainda mais tarde, o System III (1981) introduziu o inittab
arquivo. Com ele foi possível definir e configurar melhor vários níveis de execução e selecionar aquele a utilizar. O nível de execução 1 era monousuário e o nível 2 multiusuário. Se o arquivo inittab estiver faltando, o sistema será inicializado no modo de usuário único.
Responder2
Originalmente, o init abriria um shell no console no modo de usuário único e, quando esse shell fosse encerrado, abriria o programa de login (na verdade, getty) nas portas seriais, juntamente com a montagem do restante dos sistemas de arquivos e a inicialização. quaisquer daemons que foram configurados para serem executados.
Tudo isso foi controlado pelas entradas em /etc/inittab.
Tudo isso estava presente nas versões PDP-11 do Unix no início dos anos 1970, e acredito que antes disso.
É claro que existem infinitos detalhes, mas essa é a essência.
Responder3
A razão mais provável para usar os termos single user
vs. multi user
é que logo após a inicialização, o UNIX tinha apenas um sistema de arquivos raiz montado somente leitura.
A próxima coisa que foi feita foi verificar o sistema de arquivos raiz (aproximadamente 1 MB) e remontá-lo para leitura/gravação.
Em seguida, o /usr
sistema de arquivos foi verificado e montado.
Como os usuários só podem efetuar login após /usr/
a montagem, este é o ponto em que o UNIX se torna capaz de suportar um ambiente multiusuário.