Multitarefa sistemas operacionais multi- usuário têm arquiteturas muito poderosos. Eles são esperados para manter inúmeros usuários conectados através da rede em um servidor central ou estação de trabalho . O kernel do sistema operacional - o núcleo ou o centro em torno do qual a funcionalidade externa do OS é mergulhado - fala com o hardware nu-ossos através de drivers de dispositivos e software para , através do seu subsistema de controle de processos . O kernel assume o controle de alocação de recursos e processo de agendamento . Dirige os processos dentro e fora de modos ativos , acorda processos de sono , anéis alarmes e envia sinais . Processo
Qualquer pedaço de código executável que pode carregar na memória do sistema e executar ações é um processo. Há processos de sistema e processos de usuário . Um processo garfos ou gera um processo filho. Exceto para o processo de SO original , o processo 0 no Unix chamado , todos os processos são criados dessa maneira e , portanto, têm um processo pai . Um processo chama a atenção do CPU somente quando o kernel permite.
Usuário e modos de kernel
Um processo é executado em modo usuário ou modo kernel e mantém duas pilhas separadas ao alternar entre os modos . Alguns sistemas operacionais podem ter mais modos . Se você escrever um programa, construí-lo e executá-lo , o processo de execução está em modo de usuário. Ele entra no modo kernel quando ele faz uma chamada de sistema ou recebe um sinal de interrupção . O sinal pode vir de um outro processo de usuário ou o próprio kernel. Uma vez que o processo está em modo kernel, o kernel aumenta sua prioridade no esquema de escalonamento . Também não antecipar o processo de kernel até que ele termine o trabalho crítico do sistema, após o qual ele está de volta no modo de usuário . Um processo no modo de usuário só pode acessar suas próprias instruções e dados ou espaço de processo . O processo de kernel pode acessar os endereços no kernel. Um bom exemplo é um pedaço de código de linguagem assembly que faz um salto a uma interrupção. Chamadas
Sistema
Como mencionado anteriormente , é a chamada de sistema , não importa quem faz e como, que traz um processo em modo kernel. A chamada de sistema é uma invocação de uma função do sistema operacional de baixo nível que acessa e manipula entidades de dispositivos de baixo nível e áreas reservadas de memória. É praticamente Código OS. Funções que operam em dispositivos de sistema operacional , como arquivos , tubos e semáforos são chamadas de sistema . Open () , close () , read () , write () , bloqueio () , desbloquear () , init () , fork () , sleep () , excitação () e sinal () são chamadas de sistema . Eles controlam recursos do sistema operacional e dos processos assim como o kernel faria. O processamento de sinal e interrupção é também a área do kernel e não o processo do usuário . No modo kernel, o controle é dado para a chamada de sistema que está fazendo tarefas do sistema , ou o trabalho que o kernel faria de outra forma . É um código que acessa a memória especial e registradores reservados para tarefas do sistema operacional.
Interrupções e instruções privilegiadas
Algumas instruções de máquina são privilegiados e resultam em erro se executado em modo de usuário . Por exemplo, um processo no modo de usuário não devem ser autorizados a mudar o registro de status do processo. Registos e memória do kernel privilegiado ajudar o kernel em seu trabalho de controle de processo . Se alguém vem e muda -los , os resultados podem ser imprevisíveis . Quando outro processo ou o kernel interrompe um processo de usuário , o kernel salva o estado atual do processo na pilha , determina a causa da interrupção , os serviços de interrupção e traz controle de volta para o que o processo estava fazendo. O kernel aparece a pilha de processo para que o processo de usuário pode retomar de onde parou .