Você está na página 1de 5

Serviços do SO

Um sistema operacional oferece um ambiente para execução de programas, o qual


pode variar de acordo com o SO. Porém há aspectos em comum como um conjunto
de funções que são úteis ao usuário e conjunto funcional que garante a eficiência
operacional do próprio sistema.
Funções úteis o usuário:
Interface (UI): A primeira é a CLI (Interface de linha de comando). Ações executadas
através de comandos formatados em uma linha. A segunda é o Batch Interface.
Comando são atrelados dentro de arquivos e esses executados, realizando a ação.
E a mais comum é GUI (Interface Gráfica), onde há menus e ícones tornando-se
interativo.
Execução de Programa: Este deve estar apto a ser carregado na memória,
executado, e finalizado.
Operação E/S: Um programa pode requerer uma entrada ou saída de dados via
dispositivo. Por questões de segurança o usuário não controla diretamente E/S.
Manipulação de arquivos de Sistemas: Há necessidade de criar, deletar, procurar,
gerenciar acessos etc.
Comunicação:Um processo pode requerer troca de informações entre o
computador. Isso pode ser feito via compartilhamento de memória e pacotes de
mensagens pelo SO.
Detecção de erro: O SO precisa constantemente verificar e corrigir erros (erro de
memória, na CPU, rede, dispositivos E/S). Para cada evento há uma ação a ser
tomada, até mesmo parar o SO.

Funções do SO para manter funcionalidade:


Alocação de recursos: O SO necessita de alocar recursos para usuários e seus
processos rodando ao mesmo tempo em quase todas as vezes. Por exemplo em
determinar o melhor uso para CPU pelo escalonamento de jobs a serem
executados.
Contas: Registrar como está sendo feito o uso de recursos computacionais O uso
de estatísticas pode prover um uso mais eficiente dos mesmos.
Proteção e Segurança: Os proprietários de informação numa rede com vários outros
usuários conectados podem requerer o seu controle. Proteção envolve garantir que
todos os recursos são controlados. Segurança normalmente começa com o inserção
de uma senha pelo usuário. Isso estende para dispositivos de entrada e saída,
incluindo rede e tentativas de acesso inválido.

Interface de usuário e SO.


Nos sistemas com múltiplos interpretadores de comando, esse interpretadores são
conhecidos como Shell. É o meio de interação entre usuário e SO. É possível o
usuário do SO acessar serviços do Kernel. Geralmente são feitos via CLI e GUI.
CLI: A principal função do CLI é pegar e executar o próximo comando especificado
pelo usuário. Pode ser implementado ou vir como aplicação (prompt de comando).
GUI: GUI visa uma interface mais interativo usuário-SO. Diferente do CLI, O GUI
apresenta ícones, menus, área de trabalho que interagem com o mouse ou teclado
através do ponteiro e imagens. Aqui o usuário não precisar saber comandos
especias para executar suas tarefas. Inventado pela XEROX. Windows, Mac OS X,
Linux.

Chamadas de Sistema
Provê uma interface para os serviços para o qual o SO foi feito. Essas chamadas
geralmente são escritas em linguagem C/C++. SImples tarefas como fazer uma
cópia de arquivo a outro geram muitas chamadas de sistemas (Aquisição do arquivo
fonte e destino, abertura, fechamento..). Tipicamente os desenvolvedores de
aplicações criam programas de acordo com a interface de programa de aplicação
(API). A API especifica um conjunto de funções que estão disponíveis a um
programador de aplicação, para uso de suas funções e executadas pelo SO. As três
mais conhecidas são Win32 API (Windows) POSIX (UNIX, Linux e Mac OS X) e
Java API para (JVM).
As chamadas de sistemas oferecem um conjunto mais detalhado e difícil para se
trabalhar do que as APIs, até mesmo por oferecem portabilidade e simplificação no
desenvolvimento.
Para a maioria das linguagens de programação o sistema suporta em tempo de
execução e provê uma interface com a chamada de sistema. Essa interface
intercepta uma função na API e faz a chamada de sistema correspondente,
geralmente associado a algum número. Quem faz o uso dessa função não precisa
saber como funciona a implementação da chamada de sistema. Porém é necessário
obedecer a API e entender o que o SO retornará de resultado. O SO esconde a
maioria dos detalhes do programador pela API.

Os tipos de chamadas de sistemas

As chamadas de sistemas podem ser divididas em seis principais categorias:


controle de processo, gerenciamento de arquivos,manipulação de dispositivo,
manutenção de informação, comunicação e proteção.
Controle de Processos: finalizar, carregar, executar, criar, deletar, terminar, alocar e
retirar da memória e outros;
Gerenciamento de arquivos: Criar, deletar, abrir, fechar, mover, ler, escrever e
outros;
Gerenciamento de dispositivos: Requisição, liberação, ler, escrever, repor, pegar e
colocar atributos e outros;
Manutenção de Informação: Colocar e pegar data ou hora, arquivos, processos ou
dispositivos;
Comunicação: Criar, enviar, receber, transferir através da rede;
Proteção: Com o advento das redes e internet todos os sistemas de
computadores,de servidores até mobiles, precisam de proteção.

Programas do sistema:
Também conhecidos como sistemas utilitários, esses programas provêem um
ambiente conveniente e de fácil execução ao usuário. Esses programas podem ser
divididos nessas categorias:
Manipulação de arquivos: Cria-se, deleta-se, renomeiam, imprimem e geralmente
manipula diretórios e pastas.
Status da Informação: Alguns simples programas pedem ao sistema a data, hora,
quantidade de memória disponível ou disco, número de usuários… Outras mais
complexas como performance, entradas e registros. Normalmente formatam e
imprimem saída no terminal.
Modificação de arquivos: Muitos editores de texto podem ser considerados criadores
e editores.
Apoio a linguagem de programação: Compiladores, assemblers, debuggers e
interpretadores para linguagens de programação são oferecidos pelo SO ou
baixadas da rede.
Carga e execução de programa: Uma vez montado ou compilado um programa
deve ser carregado na memória para execução. Carregadores absolutos,
carregadores relocáveis, editores de vínculos…
Comunicações: Conexões virtuais entre processos, usuários e máquinas. (WEB,
e-mail, transferência de arquivos de uma máquina para outra).

Criação e Implementação de um SO

É claro que existem soluções incompletas para uma criação e implementação de um


SO, mas existem abordagens em que se terá êxito.
Criação:
Esses requisitos podem ser divididos em metas do usuário e metas do SO. Para
um usuário o SO deve ser conveniente, facil de usar e aprender, rápido e seguro.
Para o SO o conjunto deve ser parecido acrescido de flexibilidade, confiabilidade,
livre de erros e claro, eficiente.
Mecanismo e Politica: São dois princípios importantes a serem separados. Politica
diz respeito ao o que será feito e Mecanismo se refere a como será feito. A
separação desses termos possibilitam a flexibilização de alterações posteriores.

Implementação: Uma vez planejado, o SO deve ser implementado, o que pode


demorar muito tempo. Até recentemente os SO’s eram escritos em assembly, porém
hoje é mais comum serem escritos em linguagens de um nível maior como C/C++,
Pyhton , PERL… Linux por exemplo provavelmente contém todas essas. O kernel
do Linux e do Windows é escrito majoritariamente em C. Porém alguns trechos mais
críticos e que exigem um nível de detalhamento maior são feitos em assembly.

Estruturas do Sistema Operacional

Um sistema tão grande e complexo deve ser feito de forma minuciosa e cuidadosa.
Uma boa ideia é particionar o SO em problemas menores até ser encontrado um
sistema monolítico (indivisível), onde cada um desses pedaços menores do sistema
precisam estar em perfeita harmonia.

Estrutura Simples.
Muitos SO’s não tem suas estruturas muito definidas. começam pequenos, simples
e limitado. É criado para prover o máximo de funcionalidade em pouco espaço, logo
não é dividido em módulos. O MS-DOS é um bom exemplo disso. Ele não possui
interface e níveis de funcionalidade bem separados. Por exemplo, programas de
aplicação estão aptos a acessar rotinas básicas de E/S. Tais liberdades deixam o
MS-DOS vulnerável. Outro exemplo de pouca estruturação é o UNIX.

Abordagem em camadas:
Se o hardware tiver o apoio apropriado, o SO poderá ter mais controle. Numa
abordagem top-down, no geral a funcionalidade e característica são determinadas e
então separadas. Um sistema pode ser modularizado de diferentes maneiras. Um
método é a abordagem em camadas, na qual o SO é quebrado em um número de
níveis. A camada 0 é o hardware, o mais alto é o N, que é a interface com o usuário.
Um determinado nível pode invocar operações de um nível mais baixo.
A principal vantagem está na simplicidade de construção e de depuração e a
principal dificuldade envolve a definição adequada de vários niveis. Porque um nível
só consegue usar níveis menos, um planejamento tem que ser cuidadoso.

MicroKernels
Esse método estrutura o SO pela remoção de todos os componentes não essenciais
do kernel e implementando eles como um sistema de programas de níveis de
usuário. O resultado obtido é um Kernel pequeno. Entretanto os microkernels
proveem o mínimo necessário para o gerenciamento de memória e processos,
devido a facilidade de comunicação.
Benefícios:
Mais fácil de estender um microkernel. Substituição do módulo sem afetar o
sistema.
Mais fácil de portar o sistema operacional para novas arquiteturas
Mais confiável (menos códigos executando em modo kernel) e mais seguro.
Infortunadamente, a performance o microkernel pode sofrer uma crescente de
overhead.

Módulos
Aqui o kernel tem um conjunto de componentes de core e linkagem em adicional
aos serviços pelos módulos. A ideia do projeto é para o kernel prover serviços de
core enquanto outros serviços sao implementados dinamicamente.
Usa a técnica orientada a objeto;
Cada componente do núcleo é separado;
Cada um fala com a interface desejada;
Cada um é carregado conforme a necessidade de uso no kernel.
Superficialmente é parecido com microkernels, mas os módulos vão sendo
carregados e anexados ao resto do kernel ativo e a comunicação é mais direta.

Geração do Sistema Operacional

É possível criar, codificar e implementar um SO para uma máquina em específico.


Mas é mais comum criá-los para uma classe maior de máquinas com uma
variedade de configurações. O sistema deve ser configurado e gerado para cada
computador em específico para colhimento de informações (Qual é o CPU, quais os
conjunto de instruções, aritmética de ponto flutuante, quanto de memória...).O
processo é conhecido como Geração de Sistema SYSGEN.

Sistema de Boot

Depois de gerado o SO deve estar disponível para uso do hardware. Mas como o
hardware sabe onde o kernel está ou como carregar o kernel? Esse procedimento
de start é feito no boot do sistema. Na maioria dos sistemas uma parte pequena do
código que é conhecido como programa de bootstrap é carregado na memória.
Quando o CPU recebe um evento de reset como desligamento ou reinicialização, a
instrução de registro é carregado na memória predefinida.

Não entendi / não ficou claro:

Você também pode gostar