Existe uma boa descrição do mecanismo de “sistema de chamada” usado em sistemas operacionais? [fechadas]

StackOverflow https://stackoverflow.com/questions/126976

Pergunta

Eu estou procurando um bom primário ou descrição técnica da Sistema de chamadas mecanismo que é usado por sistemas operacionais a transição do espaço do usuário para o kernel para invocar funções como "aberto", "read ", "escrever", etc ...

Existe alguma coisa que não seja a entrada Wikipedia ? Sites, PDFs, livros, código fonte, todos são bem-vindas:)

Foi útil?

Solução

Bem para código-fonte, há uma abundância de grãos de código aberto para mergulhar.

Quanto aos livros, Robert Love no kernel do Linux é muito informativa.

Outras dicas

O método exato depende da arquitetura do processador e as operações que ele define para a transferência para o modo kernel. Uma abordagem, e o tradicional em x86, era usar uma interrupção de software. Acontece que este não era muito rápido para o caso geral mais tarde, a Intel adicionou SYSCALL e AMD acrescentou SYSENTER. Windows XP e depois escolher uma técnica chamada de sistema apropriado para a plataforma, no momento da inicialização.

Você pode optar por usar um software específico de interrupção números para funções específicas, mas geralmente o processador não tem interrupções suficientes para cobrir todas as funções do sistema, por isso é necessário fazer um dos registros contêm o número da função requerida. Se você está fazendo isso de qualquer maneira, ele não é muito de uma dificuldade para usar somente a função de chamada de um sistema.

Windows CE, antes da versão 6.0, utiliza um processo de modelo de endereço virtual side-by-side que realmente permite que os processos para pôr em si diretamente. As proteções de página são configurados para que quando isso é feito, ocorre uma falha de violação de acesso: o kernel obtém controle, correções-se o espaço de endereço processo (movendo o processo chamado no slot 0), correções até argumentos para ponto de slot-0-based para o processo de chamada, e retorna ao modo de usuário. Uma vez que o endereço de retorno é noutro processo, quando a chamada de função retorna, o processo inverso ocorre. Infelizmente, este modelo só permite espaços de endereços virtuais muito pequenas para cada processo (32MB) e um baixo número de processos (32), de modo Windows CE 6.0 reverte para um modelo de chamada de sistema mais tradicional.

Você pode querer ter um olhar para o kernel Minix. É de código aberto, projetado para ser simples, e é usado em uma série de cursos OS uni-nível. Tem uma escavação em torno de /usr/src/kernel/proc.c especialmente a função sys_call e funcionalidade circundante. Tenha em mente que o Minix é um microkernel, portanto, algumas coisas podem ser sutileza diferente do que você está acostumado.

Se você quiser comprar um livro que é extremamente útil para a programação * nix. Eu recomendaria "Programação Avançada no UNIX Environment" por Stevens e Rago. Ele tem explicações detalhadas e exemplos de código.

dependente É de arquitetura, e requer uma compreensão da arquitetura de computador. "Estruturado Organização de Computadores" de Tanenbaum tem um resumo boa dos princípios básicos de uma chamada de sistema. Para mais, ler qualquer livro sobre design de sistema operacional.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top