12Sep
Considerando que o DOS era um SO de tarefas únicas e os laços que tinha com versões iniciais do Windows, apenas como as versões anteriores do Windows conseguiam realizar multitarefas? O super-usuário do usuário Q & Uma publicação analisa as respostas a esta pergunta.
Today's Question &A sessão de atendimento chega a cortesia do SuperUser - uma subdivisão do Stack Exchange, um agrupamento comunitário de sites Q & A.Captura de tela do Windows 95 do
cortesia da Wikipedia.
O leitor
SuperUser LeNoob quer saber como as versões mais antigas do Windows foram capazes de funcionar como sistemas multitarefa? :
Eu li que o DOS é um sistema operacional único. Mas se versões mais antigas do Windows( incluindo o Windows 95?) Eram apenas wrappers para o DOS, como eles podiam funcionar como um sistema operacional multitarefa?
Boa pergunta! Como as versões antigas do Windows conseguiram executar como sistemas multitarefa?
A resposta
SuperUser contribuintes Bob e Pete têm a resposta para nós. Primeiro, Bob:
O Windows 95 era muito mais do que "apenas um invólucro" para o MS-DOS.Citando Raymond Chen:
- O MS-DOS serviu em dois objetivos no Windows 95: 1.) Ele serviu como carregador de inicialização.&2.) Atuou como a camada de driver de dispositivo legado de 16 bits.
Windows 95 realmente enganchado / overrode quase todo o MS-DOS, mantendo-o como uma camada de compatibilidade enquanto faz todo o levantamento pesado. Também implementou tarefas multi-tarefas preventivas para programas de 32 bits.
Pre-Windows 95
O Windows 3.x e antigo eram principalmente de 16 bits( com exceção do Win32s, um tipo de camada de compatibilidade que faz as pontes 16 e 32, mas ignoraremos isso), eram mais dependentes do DOS eusou apenas multitarefa cooperativa - é a única onde não forçam um programa em execução a mudar;Eles esperam que o programa de corrida cumpra o controle( basicamente, diga "Estou pronto", dizendo ao sistema operacional para executar o próximo programa que está aguardando).
- Multi-tasking foi cooperativo, assim como em versões antigas do MacOS( embora, ao contrário do Multi-tasking DOS 4.x, que exibisse multi-tarefas preventivas).Uma tarefa teve que ceder ao sistema operacional para agendar uma tarefa diferente. Os rendimentos foram incorporados em determinadas chamadas de API, nomeadamente o processamento de mensagens. Enquanto uma tarefa processasse mensagens de forma oportuna, tudo foi ótimo. Se uma tarefa parasse de processar mensagens e estava ocupada executando algum loop de processamento, a multitarefa não era mais.
Windows 3.x Architecture
Quanto a como os primeiros programas do Windows renderiam o controle:
- O Windows 3.1 usa multitarefa cooperativa - o que significa que cada aplicativo que está no processo de execução é instruído a verificar periodicamente uma fila de mensagens para descobrir seoutro aplicativo está pedindo o uso da CPU e, em caso afirmativo, para dar controle a essa aplicação. No entanto, muitos aplicativos do Windows 3.1 verificariam a fila de mensagens com pouca frequência ou não, e monopolizam o controle da CPU por tanto tempo quanto eles exigissem. Um sistema preventivo multitarefas como o Windows 95 levará o controle da CPU longe de um aplicativo em execução e distribui-lo para aqueles que têm uma prioridade maior com base nas necessidades do sistema.
Fonte
Todo o DOS veria é que este aplicativo único( Windows ou outro) está sendo executado, o que passaria o controle sem sair. Em teoria, a multi-tarefa preventiva pode ser implementada no topo do DOS de qualquer maneira com o uso de um relógio em tempo real e interrupções de hardware para dar controle ao planejador forçosamente. Como comentários de Tonny, isso foi feito por alguns sistemas operacionais em cima do DOS.
386 Modo avançado?
Nota: houve alguns comentários no modo avançado 386 do Windows 3.x sendo de 32 bits e o suporte a tarefas multi-tarefas preventivas.
Este é um caso interessante. Para resumir a publicação do blog vinculado, o modo avançado 386 era basicamente um hipervisor de 32 bits, que gerava máquinas virtuais. Dentro de uma dessas máquinas virtuais, o modo padrão do Windows 3.x, que faz todas as coisas listadas acima.
MS-DOS também funcionaria dentro dessas máquinas virtuais e, aparentemente, eles eram pré-empenhosamente multitarefas - então parece que o hypervisor de modo avançado 386 compartilhará as fatias de tempo da CPU entre as máquinas virtuais( uma das quais executou normal 3.xe outros que executaram o MS-DOS), e cada VM fará o seu próprio - 3.x seria cooperativamente multi-tarefa, enquanto o MS-DOS seria de uma única tarefa.
MS-DOS
O próprio DOS era uma tarefa única em papel, mas tinha suporte para programas TSR que ficariam em segundo plano até serem acionados por uma interrupção de hardware. Longe da verdadeira multitarefa, mas não totalmente de uma única tarefa.
Tudo isso fala de bit-ness? Perguntei sobre multitarefa!
Bem, estritamente falando, o bit-ness e multitarefa não dependem um do outro. Deve ser possível implementar qualquer modo multitarefa em qualquer bit-ness. No entanto, o movimento de processadores de 16 bits para processadores de 32 bits também introduziu outras funcionalidades de hardware que poderiam tornar a tarefa multi-tarefa preventiva mais fácil de implementar.
Além disso, uma vez que os programas de 32 bits eram novos, era mais fácil levá-los a trabalhar quando foram alternados à força - o que poderia ter quebrado alguns programas legados de 16 bits.
Claro, isso é toda especulação. Se você realmente quer saber por que a MS não implementou tarefas multi-tarefas preventivas no Windows 3.x( apesar do modo avançado 386), você precisará perguntar a alguém que trabalhou lá.
Além disso, queria corrigir sua suposição de que o Windows 95 era apenas um invólucro para o DOS.
Seguido pela resposta de Pete:
Em um sistema operacional moderno, o sistema operacional controla todos os recursos de hardware e os aplicativos em execução são mantidos em sandboxes. Um aplicativo não tem permissão para acessar a memória que o sistema operacional não atribuiu a esse aplicativo e não pode acessar diretamente dispositivos de hardware no computador. Se o acesso ao hardware for necessário, o aplicativo deve se comunicar por meio de drivers de dispositivo.
O sistema operacional pode fazer valer esse controle, porque força a CPU a entrar no modo protegido. O
DOS, por outro lado, nunca entra no modo protegido, mas permanece no modo real( * , veja abaixo).No modo real, as aplicações em execução podem executar qualquer coisa que deseje, ou seja, acessar hardware diretamente. Mas um aplicativo executado no modo real também pode dizer à CPU para entrar no modo protegido.
e esta última parte permite que aplicativos como o Windows 95 iniciem um ambiente multi-threaded, embora eles tenham sido basicamente lançados a partir do DOS.
DOS( Disk Operating System) era, até onde eu sei, muito mais do que um sistema de gerenciamento de arquivos. Forneceu um sistema de arquivos, mecanismos para navegar no sistema de arquivos, algumas ferramentas e a possibilidade de iniciar aplicativos. Também permitiu que alguns aplicativos permanecessem residentes, como drivers de mouse e emuladores EMM.Mas não tentou controlar o hardware no computador do jeito que um sistema operacional moderno faz.
* Quando o DOS foi criado pela primeira vez na década de 1970, o modo protegido não existia na CPU.Não foi até o processador 80286 em meados da década de 1980 que o modo protegido tornou-se parte da CPU.
Certifique-se de navegar no tópico original e ler a discussão animada sobre este tópico usando o link abaixo!
Tem alguma coisa a adicionar à explicação? Som desligado nos comentários. Deseja ler mais respostas de outros usuários Tech-savvy Stack Exchange? Confira o tópico de discussão completo aqui.