SISTEMAS OPERACIONAIS

UM BREVE RESUMO SOBRE AS PRINCIPAIS CARACTERÍSTICAS

2010.9026.3 | FG CCO3N
FACULDADE GUARARAPES

SUMÁRIO

1. CONCEITO............................................................................................................2 1.1. CONCEITO NAS ABORDAGENS TOP-DOWN E BUTTON-UP......................2 2. INTERFACE ENTRE S.O E APLICATIVOS DE USUÁRIO (SYSTEM CALL).....2 2.1. EXECUÇÃO DE UMA SYSTEM CALL..........................................................2 3. ESTRUTURAS DO SISTEMA OPERACIONAL...................................................3 3.1. SISTEMAS MONOLÍTICOS...........................................................................3 3.2. SISTEMA EM CAMADAS..............................................................................3 3.2.1. VANTAGENS E DESVANTAGENS DE UM SISTEMA EM CAMADAS......4 3.3. MAQUINAS VIRTUAIS..................................................................................4 3.4. SISTEMAS CLIENTE-SERVIDOR.................................................................4 4. INTRODUÇÃO AOS PROCESSOS.................................................................5 4.1. DIFERENÇA ENTRE PROCESSO E PROGRAMA.................................5 4.2. ESTADOS DE UM PROCESSO...............................................................5 5. THEADS...........................................................................................................5 6. AGENDAMENTO DE PROCESSOS (ESCALONAMENTO)...........................6 7. CONCLUSÃO...................................................................................................6 8. BIBLIOGRAFIA................................................................................................7

1

1. CONCEITO

Atualmente, grande parte dos aparelhos eletroeletrônicos possuem algum sistema que gerencia o funcionamento dos seus dispositivos. Assim, com o advento da computação ubíqua, torna-se difícil precisar o que vem a ser um Sistema Operacional. Essa dificuldade aumenta quando leva-se em consideração as repentinas

transformações de paradigma e a velocidade nas quais ocorrem as mudanças de cenários no espaço computacional. Com efeito, a definição do que vem a ser um sistema operacional pode ser auferida restringindo-a ao vinculo temporal à qual está inserida, e, outrossim da abordagem constante em sua tipificação. 1.1. Conceito nas abordagens Top-down e Button-up Entretanto, segundo alguns autores (Stallings, 2004; Tanenbaum, 2000) existem dois principais modos de abstrair um sistema operacional na atualidade: A abordagem Top-down1 tem como princípio que um sistema operacional é principalmente um oferecedor de interface conveniente, ou seja, o usuário necessita de pouco ou nenhum conhecimento técnico para operá-lo, isto é, quanto mais intuitivo o sistema for melhor sua qualidade. Já na concepção Button-up2 é definido como uma camada de software que gerencia todos os recursos disponíveis, controlando quais e quando as aplicações (processos) podem ser executadas e que hardware será empregado. 2. INTERFACE ENTRE S.O E APLICATIVOS DE USUÁRIO (SYSTEM CALL) Os aplicativos de usuário estão em uma camada de mais alto nível em relação ao sistema operacional, efetuando tarefas dedicadas e concorrendo pelo uso dos recursos. Assim, para que sejam transmitidas as requisições dos softwares aplicativos para o sistema operacional deve ser definido um conjunto de “instruções estendidas”. Essas instruções são conhecidas como chamadas de sistema (system call). O padrão de chamadas de sistema varia entre os sistemas operacionais, ainda que a maior parte delas seja similar. 2.1. Execução de uma system call Em geral, quando a system call é solicitada, o programa solicitante é interrompido e a informação necessária para a continuidade da execução (ponto de

1 2

Top-down: visão de cima para baixo Button-up: visão de baixo para cima

2

parada) é salva nos registradores da CPU. O processador inicia então a execução do código de maior privilégio pertencente ao S.O3 permitindo que ele indique por onde será chamado. Quando a chamada termina, o S.O repassa o controle ao aplicativo do usuário e as informações outrora carregadas nos registradores são restauradas e o software continua sua execução. Em muitos casos, no entanto, o retorno do controle para o programa aplicativo não é imediato. Se a system call necessitar de uma entrada/saída, ou até mesmo de um acesso ao disco, sua execução pode ser suspensa e o aplicativo pode ser retirado da fila de espera até que a operação termine e o sistema operacional eleja-o para retomar à execução. 3. ESTRUTURAS DO SISTEMA OPERACIONAL Um sistema operacional pode ser constituído de alguns componentes estruturais que possuem características intrínsecas em sua formação. Os principais, de uma gama bem maior de possibilidades, são: sistemas monolíticos, sistemas em camadas, máquinas virtuais e sistemas cliente-servidor. 3.1. Sistemas monolíticos É a abordagem mais primitiva e mais simples. Consiste basicamente de subrotinas. Nesse tipo de sistema não há nenhuma estrutura ou organização. O sistema operacional é escrito como um conjunto de procedimentos que se comunicam entre si. Cada um deles pode chamar o outro sempre que necessitar. Para construir o programa do sistema operacional, deve-se criar todo o código individual que contém os procedimentos, arquivos e bibliotecas, e, agrupá-los em um único arquivo com a utilização de um linker4. 3.2. Sistemas em camadas Organizar um sistema operacional em camadas significa criar uma hierarquia de níveis sobrepostos onde o nível mais baixo é o hardware e o mais alto é a interface com o usuário. Os níveis são pensados de forma que executem os procedimentos específicos e comuniquem-se com os níveis imediatamente adjacentes.

3 4

S.O: Sistema Operacional Linker ou Linkeditor: programa que reúne arquivos-objeto compilados independentemente, de modo a gerar um único executável.

3

3.2.1. Vantagens e desvantagens de um sistema em camadas Seguramente, a vantagem desse tipo de estrutura é a modularização que facilita a alteração, correção de erros de cada camada, além de proteger as camadas contíguas de eventuais ações das camadas externas. A desvantagem está no tempo de resposta ao usuário. Como em cada requisição uma camada terá que se comunicar com a seguinte, há a necessidade dos dados proporcionando um atraso à system call, além da possibilidade de alteração dos parâmetros das camadas anteriores. 3.3. Maquinas Virtuais O sistema de máquinas virtuais teve início com as versões do TSS/360 da IBM. Mas era tão grande e lento na época que poucas plataformas foram convertidas para ele. Essa catástrofe, que custou aproximadamente US$50 milhões, só foi realmente valorizada anos depois por um grupo de pesquisa da própria IBM em Cambridge. Pensou-se em aprimorar o sistema para que dispusesse dos seguintes atributos: multiprogramação; uma máquina estendida com uma interface conveniente. VM/370, como foi batizado em 1979, teve como principal objetivo separar esses dois atributos. Hoje, como todo o avanço, é possível simular uma ou mais máquinas reais eficientemente através de softwares. Com isso, criou-se uma forma de dividir os recursos de uma máquina real em múltiplos ambientes de execução isolando o sistema operacional nativo. 3.4. Sistemas cliente-servidor Os sistemas do tipo cliente-servidor são uma grande tendência na atualidade. Com o crescimento da computação em nuvem, há a uma forte demanda em pesquisas e aprimoramento dessas formas de implementação. As características embasam-se na ideia que o código e o processamento precisa ser levado para as camadas mais altas, deixando o mínimo de kernel. A principal vantagem desse modelo é sua flexibilidade: Se um cliente comunica-se com um servidor, pouco importa se as requisições de seus aplicativos são processadas localmente ou se é enviada para um servidor remoto tratala. Nesse modelo geralmente os servidores agregam maior parte do processamento do sistema, deixando com os clientes apenas os processamentos mais básicos.

4

4. INTRODUÇÃO AOS PROCESSOS Um processo é um programa em execução, variáveis e registradores. É um conjunto de instruções e contadores de memória sendo executadas pela CPU. Os projetistas de sistemas preocuparam-se em buscar maior efetividade na execução desses processos, desenvolvendo assim um modelo de processos sequenciais que torna o paralelismo mais fácil de conduzir. Na atualidade, pode-se considerar o pseudoparalelismo executado pela CPU o responsável pela sensação de que aplicativos (processos) são executados simultaneamente. 4.1. Diferença entre processo e programa A diferença entre um processo e um programa é tênue, muitas vezes pode ser confusa ou embaraçosa. Um programa é um algoritmo expresso em alguma notação (linguagem), é o passo a passo de como deve ser executada determinada tarefa. Já o processo é a “materialização” da execução do programa; A leitura do algoritmo e a consequente obtenção do resultado final. 4.2. Estados de um processo Um processo pode se comunicar com outros trocando informações. Algumas vezes pode ser bloqueado por estar esperando uma entrada que ainda não está disponível ou por ter sido substituído pelo S.O por um processo prioritário. Apesar disso, cada um é considerado uma entidade independente. Logicamente ele pode assumir os estados de: Executando, quando realmente está usando a CPU; Pronto, quando está temporariamente parado para permitir que outro processo execute; Bloqueado, quando é incapaz de executar até que um evento externo aconteça. 5. THEADS Um processo tradicional contém uma única linha de controle lida

sequencialmente e um único contador de programa. Mas em alguns S.O’s atuais, é possível que um processo seja executado dividindo-se em duas ou mais sub-rotinas que podem ser executadas concorrentemente. Essas sub-rotinas são chamadas de threads. O suporte a threads varia de S.O para S.O. A utilidade desse recurso é muito alta, por exemplo: Se um servidor de arquivos mantém em cache arquivos utilizados recentemente na memória, quando alguma thread de solicitação de gravação ou leitura desses arquivos travarem, as demais continuarão a execução. Outro exemplo de

5

utilidade é em navegadores de internet: alguns são compostos de abas que possibilitam navegar em sites diferentes em no mesmo navegador. Se cada aba é composta por uma thread e qualquer delas chegue a travar, não irá impactar em nenhuma das outras. 6. AGENDAMENTO DE PROCESSOS (ESCALONAMENTO) Quando mais de um processo está disponível para ser executado, o S.O deve encarregar-se de gerir qual deve ser priorizado. Tal tarefa é de responsabilidade do agendador de processos do S.O. As principais metas que o agendador de processos está para solucionar são: Assegurar que cada processo receba um tempo justo, de acordo com as circunstancias, para uso da CPU; Mantê-la todo o tempo ocupada, evitando o desperdício de clock e minimizar o tempo de resposta. Segundo [Kleinrock, 1975] essas metas são contraditórias e difíceis de ser alcançadas. Isso porque qualquer algoritmo que favoreça uma classe acaba prejudicando outra. O maior desafio é criar um agendamento capaz de tratar com a máxima eficiência as diferentes características e prioridades de um processo: Alguns gastam muito tempo de execução, mas ao mesmo tempo são indispensáveis para o funcionamento de várias atividades. Outros são ágeis na execução mas tem pouca prioridade. Por isso, para certificar-se de que algum processo levará todo o tempo consigo, todos os computadores tem um temporizador que limita o uso egoísta. A estratégia de permitir que processos que estão no estado de pronto sejam temporariamente suspensos é denominada de agendamento preemptivo, que se opõe ao método preemptivo de executar um processo ate concluir. 7. CONCLUSÃO Os sistemas operacionais melhoraram bastante nos últimos anos. Com os avanços nos estudos que aconteceram e que ainda estão por acontecer, pode-se perceber o impacto que tais tecnologias causam à sociedade. Os sistemas são mais seguros, rápidos e complexos. A cada dia cria-se e melhora-se a tecnologia, às vezes tornado difícil a própria definição do que vem a ser determinadas coisas. A sensação de rapidez exponencial a qual cada software é produzido, com cada vez mais agregação de valor, é uma evidencia que os sistemas operacionais estão ganhando espaço e robustez.

6

REFERÊNCIAS BIBLIOGRAFICAS

TANENBAUM, Andrew S. Sistemas Operacionais: projeto e implementação. 2ª Ed. Porto Alegre: Bookman, 2000. JUNIOR, Peter Jandl. Notas sobre Sistemas Operacionais. 3ª Ed. Rio de Janeiro: Latex, 2004. MACHADO, Francis B; MAIA, Luiz P. Arquitetura de Sistemas Operacionais. 5ª Ed. São Paulo: LTC, 2013.

7