Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Operacionais Prof. Esp. Kleber Carrhá academico@carrha.com.br blog.carrha.com.br mailto:academico@carrha.com.br O que é software? • Segundo o site “dictionary.reference.com” software ou programa de computador ou código são os programas utilizados para direcionar as operações de um computador, bem como a documentação deste programa que possui as orientações de como utiliza-lo. Trata-se do conjunto organizado de instruções que são executados por um computador, ou seja, o oposto do hardware que é composto por dispositivos, ou seja, compreende os componentes físicos onde os softwares são executados. DEFINIÇÃO • Conjunto de instruções que informam ao hardware o que ele deve fazer e como ele deve fazer. (Ex: Post, Bios, Setup, Sistemas Operacionais) • Alguns softwares não atuam sobre o hardware, mas sobre outros softwares, auxiliando-os, dando-lhes instruções ou obtendo instruções ou recursos de outros softwares. (Ex: Desfragmentador, Antivírus, Compactadores de arquivos, editores de texto, editores de planilhas, navegadores de internet etc) Cont. • Existem muitas maneiras de se organizar ou classificar um software, por exemplo, em que linguagem ele foi desenvolvido e para qual arquitetura e finalidades. Primeira Geração • Os programas eram escritos pelo próprio usuário, ou seja, a própria pessoa que utilizava o sistema autônomo. A linguagem utilizada era a linguagem de máquina. Segunda Geração • Os programas eram construídos e organizados na forma de “pacotes”, o que tornava o seu uso muito mais simples e facilitado do que na primeira geração. A linguagem utilizada ainda era muito rústica, mas já se conseguia fazer uso de códigos mneumônicos que facilitavam a criação dos programas. Terceira Geração • Nesta fase surgem os primeiros sistemas operacionais, ou seja, os primeiros programas que de modo integrado gerenciavam “todos” os componentes de um sistema de computador. As linguagens de programação haviam evoluído a tal ponto que já se denominavam como linguagens de alto nível, onde a construção do programa se dava como a escrita de uma carta, obviamente que se respeitando todas as regras e detalhes pertinentes ao desenvolvimento de um programa. Quarta Geração • Nesta fase surgiam os primeiros sistemas gerenciadores de banco de dados e as linguagens de programação continuavam a evoluir e a crescer em quantidade de linguagens. Nesta fase, o desenvolvimento de software evolui para os pacotes de softwares destinados a computadores de pequeno porte ou microcomputadores. Quinta Geração • Nesta fase já se vivencia os pacotes de softwares do tipo multiuso, a utilização de interfaces gráficas e a utilização de pacotes software para redes de computadores. A linguagem de programação evolui muito com a orientação a objetos, que traz uma série de novos paradigmas para o desenvolvedor. A aproximação com a linguagem natural fica cada vez maior. Classificação de Softwares • Softwares Básicos ou Software de Gerenciamento de Sistemas – Sistemas Operacionais – Firmwares • Software Aplicativo – Aplicativos de finalidade geral – Aplicativos de finalidade especifica SOFTWARES BÁSICOS • Como o próprio nome sugere, são softwares destinados a operação do computador. Tem como função principal controlar os diversos dispositivos do computador e servir de comunicação intermediaria entre o computador e os outros programas normalmente utilizados, o que permite que esses possam ser executados. • São os Sistemas Operacionais. (Windows, Linux, Mac Os, Unix etc) SOFTWARES UTILITÁRIOS • São programas destinados a facilitar e agilizar a execução de certas tarefas, dando suporte ao sistema operacional. Sua utilização normalmente depende de licenças pagas, no caso da plataforma Windows, mas existem vários utilitários livres. Podemos incluir nos utilitários programas para: compactação de dados, sistemas de copia (backup), aumento de desempenho de maquinas, overclock, limpeza de discos rígidos, acesso a internet, partilha de conexões, etc. • EXEMPLOS: NORTON Utilities, WINZIP ou WINRAR, Desfragmentador, Backup, AVG Antivírus SOFTWARES APLICATIVOS • Programa de computador que tem por objetivo o desempenho de tarefas práticas, em geral ligadas ao processamento de dados, como o trabalho em escritório ou empresarial. Tem foco no usuário. • Exemplos: – Editores de Texto: – Editores de Planilhas: – Editores de Apresentações: – Navegadores de Internet – Áudio e Vídeo Formas de Aquisição de Softwares • Pago • Freeware • Shareware • Demo • Adware • Nagware • Firmware Softwares Pagos • Como o próprio nome diz, é preciso pagar para usá- lo. Trata-se de sistemas ou softwares proprietários. É possível comprar o software ou “alugá-lo”, sendo possível ou gratuito ou não o suporte ou atualização do mesmo. • Exemplos: Freeware • Software gratuito ou freeware é qualquer programa de computador cuja utilização não implica o pagamento de licenças de uso ou royalties. É importante não confundir FREEWARE com SOFTWARE LIVRE, pois FREEWARE é GRATUITO, enquanto que no SOFTWARE LIVRE o CÓDIGO É ABERTO (Licença GPL – General Public Licence – Licença Pública Geral - podendo ou não ser pago). • O freeware diferencia-se do shareware, no qual o usuário deve pagar para acessar a funcionalidade completa ou tem um tempo limitado de uso gratuito. http://pt.wikipedia.org/wiki/Freeware http://pt.wikipedia.org/wiki/Shareware Shareware • Uma copia de avaliação, que se pode instalar gratuitamente, e disponibilizada, possibilitando ao usuário a instalação e o conhecimento do que o programa e capaz de fazer. Entretanto, a copia pode ter um prazo para utilização ou pode não ser completa: • Funciona durante um certo tempo, o chamado período de avaliação (geralmente 30 dias). • Após o prazo vencer o programa deverá ser registrado (ou seja, comprado). Demo O termo "Demo" (de "demonstration", demonstração em inglês) é aplicado particularmente a jogos. Geralmente é uma versão mais curta do jogo, que permite a sua instalação e utilização, possibilitando que seja experimentado e que se decida por sua posterior compra. Adware Programa gratuito para o usuário, mas que exibe publicidade de empresas que patrocinam o seu desenvolvimento. Nagware • "Nags" são aquelas janelas de aviso sobre a necessidade de compra do programa que se abrem na tela, repetidamente, quando o prazo de avaliação terminou ou está prestes a terminar. Firmware • Firmware é o conjunto de instruções operacionais programadas diretamente no hardware de um equipamento eletrônico. É armazenado permanentemente num circuito integrado (chip) de memória de hardware, como uma ROM, PROM, EPROM ou ainda EEPROM e memória flash, no momento da fabricação do componente. Sistemas Operacionais • Os primeiros SO surgiram na década de 60. Microsoft • Iniciou com o MS-DOS... Linux • Debian • Fedora • Kurumim • Mandriva • Red Hat • Suse • Ubuntu e suas versões. Licença GNU • Licença publica, essa licença preserva os direitos autorais do software, mas assegura a distribuição dos programas e também do código-fonte. • O Linux representa o núcleo do sistema operacional (conhecido como kernel) MAC OS • V10.0 “Cheetah” • V10.1 “Puma” • V10.2 “Jaguar” • V10.3 “Panther” • V10.4 “Tiger” • V10.5 “Leopard” • V10.6 “Snow Leopard” • V10.7 “Lion” • V10.8 “Mountain Lion” • V10.9 “Mavericks” Unix • Criado 1969 por Ken Thopson, Dennis Ritchie, Douglas Mcllroy e Peter Weiner eram funcionários da AT&T. • Em 1973, Dennis Ritchie, rescreveu todo o sistema Unix numa linguagem de alto nivel, chamada de C, linguagem esta que foi desenvolvida por ele mesmo. Sistemas Operacionais • Têm o objetivo de organizar e controlar o hardware (parte física do computador) e o software (programas) para tornar sua utilizaçãomais eficiente e mais conveniente de modo que todos os recursos do computador sejam utilizados da melhor maneira possível. Sistemas Operacionais • O sistema operacional também funciona como uma plataforma onde demais aplicativos podem ser executados. • Tal plataforma possibilita que os programadores desenvolvam suas aplicações de maneira mais fácil, sem se preocupar com as complexidades do hardware. • O sistema operacional é uma camada intermediaria entre os programas e o hardware. Sistemas Operacionais • Um computador moderno consiste em um ou mais processadores, memoria principal (memoria RAM), discos, impressoras, interfaces de rede e outros dispositivos de entrada/saída. O sistema operacional controla e gerencia todos esses equipamentos, lidando com o modo de funcionamento de cada um sem deixar que o usuário perceba a complexidade envolvida neste gerenciamento. Sistemas Operacionais • Vamos então entender melhor a função de um sistema operacional a partir do seguinte exemplo: imagine três programas em um computador tentando utilizar a impressora simultaneamente. • Sem o sistema operacional isto seria o caos, pois cada programa iria imprimir parte de suas linhas na mesma página. • Com o sistema operacional é possível trazer ordem a este tipo de situação, armazenando todas as solicitações destinadas para a impressora no disco. • Quando um programa tiver terminado, o sistema operacional envia a próxima solicitação para a impressora. Sistemas Operacionais • Dessa maneira, podemos considerar um sistema operacional como um alocador de recursos. • Um sistema de computação possui muitos recursos (hardware e software) que podem ser necessários para resolver um problema: tempo de CPU, espaço na memória, espaço de armazenamento de arquivos, dispositivos de entrada/saída, entre outros. • O sistema operacional atua como gerente desses recursos e os aloca a programas e usuários específicos, conforme necessário, para a execução das tarefas. • Como pode haver muitos pedidos de recursos, possivelmente conflitantes entre si, o sistema operacional deve decidir em que pedidos serão alocados recursos para que ele possa operar o de forma eficiente e justa. Sistemas Operacionais Sistemas Operacionais • Observe que o sistema operacional e responsável por muitas tarefas. Logo, é mais fácil definir um sistema operacional pelo que ele faz do que pelo que ele é. • O principal objetivo de um sistema operacional e a conveniência do usuário. Os sistemas operacionais existem porque tem como missão tornar a tarefa computacional mais fácil. Sistemas Operacionais Monotarefa / Multitarefa • Monotarefa (Monoprogramável): – Só consegue executar uma atividade de cada vez. – Ex: MS-DOS • Multitarefa (Multiprogramável): – Gerencia a execução de mais de uma tarefa ao mesmo tempo, seja pela execução simultânea ou pelo compartilhamento do tempo entre as tarefas, dando a impressão de simultaneidade. – Ex: Windows, Unix, Linux Monotarefa (Monoprogramável) • Os primeiros sistemas operacionais eram tipicamente voltados para a execução de um único programa (job). Qualquer outro programa, para ser executado, deveria aguardar o término do programa corrente. • Os sistemas se caracterizam por permitir que o processador, a memória e os periféricos permaneçam exclusivamente dedicados à execução de um único programa. Monotarefa • Neste tipo de sistema, enquanto um programa aguarda por um evento, como a digitação de um dado, o processador permanece ocioso, sem realizar qualquer tipo de processamento. A memória é subutilizada caso o programa não a preencha totalmente, e os periféricos, como discos e impressoras, estão dedicados a um único usuário, nem sempre utilizados de forma integral. • Permitem que todos os recursos do sistema fiquem exclusivamente dedicados a uma única tarefa. Monotarefa • Os processos, como mostrado na figura abaixo, são executados em sequência e um só inicia após o término do anterior. Os espaços em branco representam os períodos de ociosidade da CPU, enquanto aguarda a realização ou execução de um evento externo qualquer solicitado pelo programa. Multitarefa (Multiprogramável) • Os sistemas multiprogramáveis, que vieram a substituir os monoprogramáveis, são mais complexos e eficientes. Enquanto em sistemas monoprogramáveis existe apenas um programa utilizando seus diversos recursos, nos multiprogramáveis vários programas dividem esses mesmos recursos. Multitarefa • Por exemplo, enquanto um programa espera por uma operação de leitura ou gravação em disco, outros programas podem estar sendo processados neste mesmo intervalo de tempo. Nesse caso, podemos observar o compartilhamento da memória e do processador. • O sistema operacional se preocupa em gerenciar o acesso concorrente aos seus diversos recursos, como memória, processador e periféricos, de forma ordenada e protegida, entre os diversos programas. Multitarefa • Nestes Sistemas, enquanto uma tarefa aguarda a ocorrência de um evento externo a CPU, esta pode atender outra tarefa qualquer, que esteja em condições de ser executada. O sistema operacional se encarrega de gerenciar o acesso concorrente das diversas tarefas aos diversos recursos, de forma ordenada e protegida Multitarefa • As vantagens do uso de sistemas multiprogramáveis são o aumento da produtividade dos seus usuários e a redução de custos, a partir do compartilhamento dos diversos recursos do sistema. • Nos sistemas monoprogramáveis, apenas um único usuário pode interagir com o sistema, enquanto nos multiprogramáveis é permitido que mais de um usuário o utilize. Monousuário / Multiusuário • A partir do número de usuários que interagem com o sistema, podemos classificar os sistemas multiprogramáveis como monousuário e multiusuário. • O conceito de sistema multiprogramável está tipicamente associado à ideia do sistema sendo utilizado por vários usuários (multiusuário). • No mundo dos computadores pessoais e estações de trabalho, apesar de existir apenas um único usuário interagindo com o sistema (monousuário), é possível que ele execute diversas tarefas concorrentemente ou mesmo simultaneamente. Os sistemas multitarefa, como também são chamados, se caracterizam por permitir que o usuário edite um texto, imprima um arquivo, copie um arquivo pela rede e calcule uma planilha. Monousuário / Multiusuário Monousuário / Multiusuário • SISTEMA MONOUSUÁRIO – CPU somente pode ser utilizada por um único usuário por vez. – Possui processamento centralizado. – Ex: MS-DOS • SISTEMA MULTIUSUÁRIO – Permite que eu tenha mais de um usuário utilizando uma mesma CPU ao “mesmo tempo”, através de terminais ligados ao computador – Programa e os arquivos de dados estão em um único computador que gerencia o uso dos seus recursos. – Ex: Unix, Windows, Linux Multiusuário Multiusuário Multiusuário Multiusuário Multiusuário • Os sistemas multiprogramáveis / multitarefa podem ser classificados pela forma com que suas aplicações são gerenciadas, podendo ser divididos em: sistemas batch, de tempo compartilhado ou de tempo real. Um sistema operacional pode suportar um ou mais desses tipos de processamento. Sistemas Batch (lote) • Foram os primeiros sistemas multiprogramáveis a serem implementados e caracterizam-se por terem seus programas executados de forma sequencial. Neste tipo de sistema, os programas não exigem interação do usuário, lendo e gravando dados em discos (ou as antigas fitas magnéticas). Sistemas Batch (lote) • Essas máquinas - então denominadas de computadores de grande porte (mainframes). • Para um job (isto é, um programa ou um conjunto de programas) ser executado, o programador primeiramente escrevia o programa no papel (em FORTRAN ou em linguagem demontagem) e depois o perfurava em cartões. • Ele então levava o maço de cartões para a sala de entradas, entregava-o a um dos operadores e esperava até que a saída impressa estivesse pronta. Sistemas Batch (lote) • Por causa do alto custo do equipamento, era natural que se começasse a buscar maneiras de reduzir o desperdício de tempo no uso da máquina. A solução geralmente adotada era a do sistema em lote (batch). • A ideia era gravar vários jobs em fita magnética usando um computador relativamente mais barato, como o IBM 1401, que era muito bom para ler cartões, copiar fitas e imprimir saídas, mas não tão eficiente em cálculos numéricos. • Outras máquinas mais caras, como a IBM 7094, eram usadas para a computação propriamente dita. Essa situação é mostrada na Figura. Sistemas Batch (lote) • Um sistema em lote (batch) antigo. (a) Os programadores levavam os cartões para o IBM 1401,. (b) O 1401 gravava o lote de jobs em fita. (c) O operador levava a fita de entrada para o IBM 7094. (d) O 7094 executava o processamento. (e) O operador levava a fita de saída para o 1401. (f) O 1401 imprimia as saídas. Sistemas Batch (lote) • Esses sistemas, quando bem projetados, podem ser bastante eficientes, devido à melhor utilização do processador. Entretanto, podem oferecer tempos de respostas longos, em face do processamento puramente sequencial. Sistemas de Tempo Compartilhado (Time-Sharing) • Permitem a interação do usuário com o sistema. O usuário pode interagir diretamente com o sistema em cada fase do desenvolvimento de suas aplicações e, se preciso, modificá-las imediatamente. Devido a esse tipo de interação, os sistemas de tempo compartilhado também ficaram conhecidos como sistemas on-line. • Esses sistemas possuem uma linguagem de controle que permite ao usuário comunicar-se diretamente com o sistema operacional para obter informações. Sistemas de Tempo Compartilhado • Eram usados os chamados terminais "burros" por serem desprovidos de qualquer capacidade de processamento local, que era todo executado pela CPU do sistema central. • Para que cada usuário tenha chances equilibradas de utilizar os recursos, o sistema aloca uma fatia de tempo ("time slice") do processador para cada terminal ativo e os atende num esquema de fila circular. • Esgotado o "time slice" de um usuário, ele perde automaticamente o controle da CPU, que passa para o usuário seguinte da fila. • Alguns sistemas permitem a adoção de níveis de prioridade que altera a sequência de atendimento da fila ou o tamanho do "time slice" adotado para um usuário. • Não somente o processador é compartilhado nesse sistema, mas também a memória e os periféricos, como discos e impressoras. O sistema cria para o usuário um ambiente de trabalho próprio, dando a impressão de que todo o sistema está dedicado, exclusivamente a ele. Sistemas de Tempo Compartilhado Sistemas de Tempo Real (Real-Time) • Esses sistemas são caracterizados por terem o tempo como um parâmetro fundamental. • Por exemplo, em sistemas de controle de processos industriais, computadores de tempo real devem coletar dados sobre o processo de produção e usá-los para controlar as máquinas na fábrica. Sistemas de Tempo Real (Real-Time) • É bastante comum a existência de prazos rígidos para a execução de determinadas tarefas. • Por exemplo, se um carro está se movendo por uma linha de montagem, certas ações devem ser realizadas em momentos específicos. • Se um robô soldador realiza seu trabalho - soldar - muito cedo ou muito tarde, o carro está perdido. • Se as ações precisam necessariamente ocorrer em determinados instantes (ou em determinado intervalo de tempo), tem-se então um sistema de tempo real crítico. Sistemas com Múltiplos Processadores • Caracterizam-se por possuir duas ou mais CPUs interligadas, trabalhando em conjunto. • Os sistemas multiprocessados permitem que vários programas sejam executados em paralelo ou que um programa tenha duas ou mais de suas instruções executadas em paralelo. • Um fator importante no desenvolvimento de sistemas operacionais com múltiplos processadores é a forma de comunicação entre as CPUs e o grau de compartilhamento da memória e dos dispositivos de entrada e saída. Em função desses fatores, podemos classificar os sistemas em fortemente acoplados ou fracamente acoplados. Sistemas com Múltiplos Processadores Sistemas com Múltiplos Processadores • Três multiprocessadores baseados em barramentos. (a) Sem a utilização da cache. (b) Com a utilização da cache. (c) Com memórias privadas e utilização de caches. Sistemas com Múltiplos Processadores Sistemas com Múltiplos Processadores • Em Sistemas Fortemente Acoplados existem dois ou mais processadores compartilhando uma única memória e controlados por apenas um único sistema operacional. Tais sistemas são geralmente utilizados no processamento de aplicações que fazem uso intensivo da CPU, onde o processamento é voltado para a solução de um único problema. Sistemas com Múltiplos Processadores • Os Sistemas Fracamente Acoplados caracterizam-se por possuir dois ou mais sistemas de computação, conectados através de linhas de comunicação. Cada sistema funciona de forma independente, possuindo seus próprios processadores, memória e dispositivos. A utilização de sistemas fracamente acoplados já é caracterizada pelo processamento distribuído entre os diversos processadores. Sistemas com Múltiplos Processadores • A grande diferença entre os dois tipos de sistemas é que em sistemas fortemente acoplados existe apenas um espaço de endereçamento (memória) compartilhado por todos os processadores, enquanto nos fracamente acoplados cada sistema tem sua própria memória individual. Sistemas em Rede • Se caracterizam pela existência de vários computadores independentes interligados em rede e compartilhando alguns recursos tais como disco, impressora, scanner e outros. Um sistema operacional de rede se encarrega de propiciar o protocolo para comunicação e transferência de dados entre os usuários e servidores da rede. Cada nó da rede é independente e capaz de executar sua própria aplicação. Sistemas Distribuídos • A computação distribuída, ou sistema distribuído, é uma referência à computação paralela e descentralizada, realizada por dois ou mais computadores conectados através de uma rede, cujo objetivo é concluir uma tarefa em comum.
Compartilhar