Upload
vuongnhan
View
215
Download
0
Embed Size (px)
Citation preview
17/08/2011
1
Estrutura do Sistema Operacional
Ademar Alves Trindade
Inicialmente...
• Sistema Operacional: não é composto por uma sequência de início, meio e fim como um aplicativo/programa.
• Baseado em eventos, de forma assíncrona.
• Assim, é formado por um conjunto de rotinas(procedimentos, tarefas) que oferece serviços aosusuários e aplicações, denominado núcleo do sistema oukernel.
Inicialmente...
• Um usuário pode se comunicar com o kernelpor intermédio das chamadas rotinas dosistema realizadas por aplicações (usuários),por meio de utilitários (sistema) ou linguagemde comandos.
17/08/2011
2
Inicialmente...
Resumindo...
• O kernel representa a camada de software maispróxima ao hardware. Segundo alguns autores,o kernel é o seu coração, sua mente e seu sistemanervoso.
• Ele é responsável exclusivamente pelo transporte dasinformações de mais baixo nível que tornam todas asoutras tarefas possíveis. Fazendo malabarismos comdiversos processos que ocorrem simultaneamente,gerenciando sua memória de forma que não interfiramuns nos outros, satisfazendo suas solicitações deacesso a um disco e muito mais.
Resumindo...
17/08/2011
3
Funções do Núcleo
• Rotinas executadas concorrentemente, semordem pré-definida, tendo como base eventosassíncronos.
• Muitos desses eventos estão relacionados aohardware e a tarefas internas do próprio SO.
Funções do Núcleo
Tratamento de interrupções e exceções;Criação e eliminação de processos;Sincronização e comunicação entre processos; Escalonamento e controle dos processos.
Funções do Núcleo
Gerência de memória;Gerência do sistema de arquivos;Gerência de dispositivos de E/S;
17/08/2011
4
Funções do Núcleo
Suporte a redes locais e distribuídas;Contabilização do uso do sistema;Auditoria e segurança do sistema.
Resumindo...
• Basicamente o kernel começa a funcionar assimque o computador é ligado, nesse momento eleinicia a detecção de todo o hardware indispensável.O SO é carregado em seguida espera que o usuáriofaça seu login, feito isso o Kernel passa aadministrar as principais funções dentro do SO, issoinclui por exemplo o gerenciamento da memória,dos processos, dos arquivos e de todos osdispositivos.
Resumindo...
• Ele é o responsável por garantir que todos osprogramas terão acesso aos recursos de quenecessitam (memória RAM, por exemplo)simultaneamente, fazendo com que haja umcompartilhamento concorrente.
17/08/2011
5
Resumindo...
• Exemplo: diversos usuários compartilham osmesmos recursos. Isso exige que o SistemaOperacional garanta a confiabilidade na execuçãoconcorrente de todos os programas e nos dadosdos usuários, além da garantia da integridade dopróprio SO.
Modos de Acesso
Muitas das principais implementações desegurança de um sistema operacional itilizam ummecanismo presente no hardware dosprocessadores, conhecido como modo de acesso.Em geral, os processadores possuem dois modosde acesso:
modo usuário e modo kernel
Modos de Acesso
Modo usuário: Uma aplicação só pode executarinstruções conhecidas como não privilegiadas,tendo acesso a um número reduzido de instruções.
Modo kernel: Uma aplicação pode ter acesso aoconjunto de instruções do processador.
17/08/2011
6
Modos de Acesso
• Instruções privilegiadas: têm o poder decomprometer o sistema.
• O modo de acesso é um mecanismo paraimpedir problemas de segurança e até mesmoviolação do sistema.
Modos de Acesso
Apenas o SO tem acesso as instruções privilegiadas.
• Exemplo:Uma aplicação necessita de um serviçoque pode colocar o sistema em risco.
Modos de Acesso
1) Solicitação é realizada através de uma system call(Chamada do Sistema).
2) System Call altera o modo de acesso doprocessador para modo kernel.
3) Se caso um programa tente executar umainstrução privilegiada, sem o processador estarem modo kernel, uma execução é gerada e oprograma é encerrado.
17/08/2011
7
Modos de Acesso
4) Se for permitido ele executa a tarefa solicitada5) O modo de acesso é retornado para o modousuário ao término da rotina do sistema.
Modos de Acesso
• Instruções privilegiadas não devem ser usadasde maneira indiscriminada pelas aplicações.
Exemplo:A aplicação atualize um arquivo em disco.Como o disco é um recurso compartilhado, sua
utilização deverá ser gerenciada unicamente pelosistema operacional.
Modos de Acesso
• Proteção ao núcleo:Caso uma aplicação tenha acesso a áreas de memóriaonde está carregado o sistema operacional, umprogramador mal-intencionado ou Estrutura doSistema Operacional um erro de programaçãopoderia gravar nesta área, violando o sistemacausando-o sérios danos.
17/08/2011
8
Rotinas do Sistema Operacional e System Calls
• As rotinas do sistema operacional compõem onúcleo do sistema.
• Todas as funções do núcleo são implementadas porrotinas do sistema que necessariamente possuemem seu código Estrutura do Sistema Operacionalinstruções privilegiadas.
• Para que estas rotinas possam ser executadas oprocessador deve estar obrigatoriamente em modokernel, o que exige a implementação de mecanismos deproteção para garantir a confiabilidade do sistema.
Rotinas do Sistema Operacional e System Calls
O controle de execução de rotinas do sistemaoperacional é realizado pelo mecanismo conhecidocomo system calls.
Toda vez que uma aplicação desejar chamar uma rotinado SO, o mecanismo de system call é ativado.
Inicialmente, o SO verifica se a aplicação possuiprivilégios necessários para executar a rotina desejada.
Rotinas do Sistema Operacional e System Calls
Em caso negativo...SO impedirá o desvio para a rotina do sistema,
sinalizando ao programa chamador que a operação não épossível.
Este é um mecanismo de proteção por software, no qualo SO garante que as aplicações só poderão executarrotinas previamente autorizadas, que é realizada peloadministrador do sistema.
17/08/2011
9
Rotinas do Sistema Operacional e System Calls
Em caso afirmativo...SO salva o conteúdo corrente nos registradores,
troca o modo de acesso do processador de usuário parakernel e realiza o desvio para a rotina alterando oregistrador PC com o endereço da rotina chamada.
Rotinas do Sistema Operacional e System Calls
Ao término da execução da rotina do sistema, o modode acesso é alterado de kernel para usuário e ocontexto dos registradores restaurados para que aaplicação continue a execução.
Este é um mecanismo de proteção por software.
Rotinas do Sistema Operacional e System Calls
17/08/2011
10
• Caso uma aplicação tente executar diretamente uma
instrução privilegiada sem ser por intermédio de uma
chamada à rotina do sistema, um mecanismo de
proteção por hardware (implementado no hardware doprocessador) garantirá a segurança do sistema,
impedindo a operação, sinalizando uma exceção.
Rotinas do Sistema Operacional e System Calls
Concluindo...Os mecanismos de system call e de proteção por
hardware garantem a segurança e a integridade do sistema.
Eles impedem que aplicações executem instruções privilegiadas sem a autorização e supervisão do sistema operacional.
Rotinas do Sistema Operacional e System Calls
Gerência de processos:• pid = fork()• waitpid(pid, &statloc, options)• execve(name, argv, environp)• exit(status)
Exemplos de chamadas ao sistema
17/08/2011
11
Gerência de arquivos
• open(file, how)• close(fd)• read(fd, buffer, nbytes)• write(fd, buffer, nbytes)• lseek(fd, offset, whence)
Exemplos de chamadas ao sistema
Gerência de arquivos e diretórios
• mkdir(name,mode)• rmdir(name)• link(name1,name2)• mount(special,name,flag)
Exemplos de chamadas ao sistema
Diversas
• chdir(dirname)• chmod(name,mode)• kill(pid,signal)
Exemplos de chamadas ao sistema
17/08/2011
12
Rotinas do Sistema Operacional e System Calls
Chamadas a rotinas do SO As rotinas do sistema e o mecanismo de system call
podem ser entendidas como uma porta de entradapara o núcleo do SO e a seus serviços.
• Sempre que uma aplicação desejar algum serviço do sistema, deve ser realizada uma chamada a uma de suas rotinas através de uma system call.
Chamadas a rotinas do SO
17/08/2011
13
Chamadas a rotinas do SO
Por intermédio dos parâmetros fornecidos na system call,a solicitação é processada e uma resposta é retornada àaplicação juntamente com um estado de conclusãoindicando se houve erro.
Chamadas a rotinas do SO
O termo System Call é tipicamente utilizado em sistemsUNIX, porém em outros sistemas o mesmo conceito éapresentado com diferentes nomes.
System Services no Open VMS.
Aplication Program Interface (API) no Windows.
Chamadas a rotinas do SO
Cada SO possui seu própio conjunto de rotinas, comnomes, parâmetros e formas de ativação peculiares.
Uma aplicação desenvolvida utilizando serviços de umdeterminado SO não pode ser portada diretamente paraum outro sistema, exigindo algumas correções no código-fonte.
17/08/2011
14
• Exemplo do uso de uma API.• GetSystemTime(SystemTime);• DataHoraT := SystemTimeToDateTime(SystemTime);• DataHoraS := DateTimeToStr(DataHoraT);• RichEdit1.Lines.Add(DataHoraS);
A API GetSystemTime obtem a data e a hora do sistemaWindows. A função SystemTimeToDateTime converte a data ea hora para o formato DataHoraT do Delphi e em seguida,para o formato texto DataTimeStr. A última linha exibe a datae a hora do sistema em uma janela previamente criada.
Chamadas a rotinas do SO
• Resumindo...
A maioria dos progamadores e usuários desconheos detalhes envolvidos, por exemplo, em umsimples comando de leitura de um arquivoutilizando uma linguagem de alto nível.
Chamadas a rotinas do SO
• Resumindo...
O comando da linguagem de alto nível é convertidopelo compilador para uma chamada a uma rotinaespecífica que, quando executada, verifica aocorrência de erros e retorna os dados aoprograma de forma transparente ao usuário. Asrotinas do sistema podem ser divididas por gruposde função.
Chamadas a rotinas do SO
17/08/2011
15
Uma tentativa de padronização pela ISO (InternationalOrganization for Standardization) e IEEE (Institute ofElectrical and Electronics Engineers) resultou em umconjunto conhecido como POSIX (Portable OperatingSystem Interface for Unix).
Alguns SOs modernos oferecem algum suporte ao padrão POSIX como o Windows, IBM-AIX, HP-UX e o SUN-Solaris.
Chamadas a rotinas do SO
Linguagem de Comandos
• Tem a função de permitir que o usuário secomunique de uma forma direta com o SistemaOperacional na execução de tarefas maisespecíficas.
• O interpretador de comandos (shell) não fazparte do núcleo do sistema. Assim, é permitida acriação de novos interpretadores de comandos.
Linguagem de Comandos
• Interpretador tem a função de comunicar com onúcelo para verificar a permissão de execuçãodaquele referifo comando.
• Em alguns sistemas como Windows, sãoutilizadas janelas com mais de uma camada,acima dos comandos, para melhorar a interaçãocom o usuário.
17/08/2011
16
Linguagem de Comandos
• Interpretador tem a função de comunicar com onúcelo para verificar a permissão de execuçãodaquele referifo comando.
• Em alguns sistemas como Windows, sãoutilizadas janelas com mais de uma camada,acima dos comandos, para melhorar a interaçãocom o usuário.
Linguagem de Comandos
• Na maioria dos SOs, as linguagens de comandoevoluíram no sentido de permitir a interação maisamigável com os usuários, utilizando interfacesgráficas como janelas e ícones, a exemploWindows.
Linguagem de Comandos
17/08/2011
17
• Cada comando, depois de digitado pelo usuário, é:
interpretado pelo shell ou interpretador de comandos, que: verifica a sintaxe do comando; faz chamadas a rotinas do sistema; apresenta um resultado ou uma mensagem informativa.
Linguagem de Comandos
O bash é um interpretador de comandos, uma espécie detradutor entre o sistema operacional e o usuário,normalmente conhecido como shell. Permite a execução deseqüências de comandos direto no prompt do sistema ouescritas em arquivos de texto, conhecidos como shellscripts.
Linguagem de Comandos
Linguagem de Comandos