
RINGS
Os níveis
de prioridade
em que os
programas rodam

|
Priority Master II, programa que controla os níveis de prioridade
por Daniel Jorge Caetano, Team OS/2
> Acho que nada mata o Netscape porque acredito eu ele roda em Ring
1...
> >)-: Aí fica dificil... Mas o mais interessante é notar que
o Internet
> >Exploder, no Windows, roda em RING 0!!! Meu, prá botar o browser
rodando
> >mais rápido que tudo eles detonam a segurança do sistema...
Aliás, já
> >pensou um NT com o Internet Exploder em Ring 0? Bye Bye C2... (-:
> Caro Daniel o que vem a ser Ring 0, Ring 1 e C2?
Desculpem o vocabulário pouco amigável...
(Aos entendidos: não dêem muita atenção ao que vou escrever,
porque tô simplificando prá caramba para o pessoal entender mais ou
menos como funciona. Aos não entendidos, a coisa não é bem
assim, mas assim é bem mais fácil para entender).
O sistema operacional tem vários "rings" que são os níveis
de prioridade dos programas. No caso do OS/2 e do Windows NT estes são 4:
Ring0, Ring1, Ring2 e Ring3, cada um deles com 32 níveis de prioridade,
menos o 0, que tem 33 (no caso do OS/2. No caso do Win NT são só 32).
No Ring 3, rodam os programas normais, que o sistema operacional pode fechar
a vontade. Estes programas podem sofrer Swap. No Ring 2, rodam alguns DLLs de programas
e DLLs que podem sofrer Swap. No Ring 2 o sistema ainda pode fechar um programa
se der defeito. No Ring1, são executados DLLs que não podem sofrer
swap e alguns aplicativos do sistema (se não me engano a WPS roda em Ring1,
assim como o Netscape), e estes, além de não poderem sofrer Swap em
seus níveis elementares (DLLs), também não podem ser fechados
por providencia do Sistema. De alguma forma o sistema tem de dar um comando e o
aplicativo tem de se fechar. Existe uma saída, porém, que se chama
Brutal Kill, que tem no WatchCat registrado, que permite fechar aplicativos Ring1.
No Ring0 rodam SOMENTE drivers e o kernel. No caso do Win NT, o kernel roda em prioridade
32, ou seja, prioridade máxima no nível 0, juntamente com alguns drivers.
No OS/2, o kernel roda em prioridade 33 no ring0, e nenhum programa (DRV) pode ter
tal prioridade, somente o sistema. Neste nível nada pode ser fechado. São
as coisas que não aparecem em lugar nenhum, e que você não tem
nem idéia de que estão rodando.
Por esse motivo, o NT seria muito menos estável que o OS/2, mas por que
ele não é? Por causa das múltiplas filas de execução...
Mas isso dá pano para a manga, e não vou ficar me aprofundando.
Nível C2 é um nível de segurança que o Win NT "supostamente"
tem, que o OS/2 não tem, onde uma das características é a isolabilidade
do kernel dequalquer outra aplicação. Ora, se um programa como o Internet
Exploder rodar em Ring0, ele pode fazer o que quiser, mesmo com o kernel do sistema
(aplicativos só podem "lidar" com outros do mesmo ring)... Ou seja,
um programa cheio de bugs, como o IE, rodando junto com o kernel do Windows NT...
Boa coisa não pode dar.
Agora... Que o IE roda em Ring0 é boato...
--
> Como faço para que um programa DOS rode em um Ring menor no OS/2?
Não dá! Na realidade expliquei muito "por cima". Programas
só rodam em Ring3, o que roda em Rings menores são Dl e coisas do
tipo. O que você pode é colocar prioridade total de programas para
um programa DOS, selecionando em Session Priority (nas definições
do DOS) o numero 32 - aliás, isso é altamente desaconselhável,
uma vez que é o nível onde o
PMSHELL.EXE roda... Seu PMShell poderá sofrer com algum "avanço"
de memória do DOS (apesar de o kernel estar sempre ligado em coisas deste
tipo, às vezes escapa...).
