Sistemas Operacionais

Sistema Operacional é um programa que gerencia os dispositivos (Placa de vídeo, som, modem, teclado, cdrom, mouse, etc) e arquivos (aplicativos, textos, figuras, etc) da maquina(computador), como, por exemplo, o Windows e o , ele, também, é quem traduz o que o usuário quer fazer para a linguagem que o computador entende, números binários( 0 "zeros"e 1 "uns").

História

Pode parecer, atualmente, difícil de imaginar um computador monotarefa que apenas permita utilizar uma aplicação mas, de fato, houve um percurso histórico notável até se atingir o nível atual de paralelização de processos. Com efeito, os primeiros computadores apenas permitiam executar uma única tarefa de cada vez. O DOS é um excelente exemplo disso, já que foi um primeiros sistemas operativos para computadores pessoais. O passo seguinte para a multitarefa foi a criação dos TSR's (Terminate and Stay Resident), que eram pequenos programas que permaneciam em memória enquanto se executava outro programa, e que eram ativados mediante combinações de tecla. Ou seja, estando o utilizador a escrever um texto num processador de texto, por exemplo, podia chamar uma agenda pessoal para tirar notas mediante uma combinação de teclas (que dependia do programa usado). Assim, do ponto de vista do processador, o processo do processador de texto era bloqueado e passava-se o controlo para a agenda. Quando o utilizador terminasse, voltava-se ao processador. Ambos programas coexistiam, mas não podiam ser executados em simultâneo. O seguinte passo foi a emulação de multitarefa. Exemplos disto eram as primeiras versões de Windows, em que este corria sobre DOS (monotarefa), mas o núcleo do programa tratava de fazer a sua própria gestão dos processos. Curiosamente, se um processo bloqueasse o Windows, todas as aplicações teriam que ser terminadas pois eram todas dependentes. Posteriormente, surgiu uma das principais componentes dos SO atuais: o escalonador de processos, ou (em inglês) scheduler, que faria a gestão, qualificação e o gerenciamento de prioridade dos processos sem afetar o núcleo do sistema operativo. Ou seja, todas as tarefas kernel são críticas, e todo o tempo que sobrar é legado aos processos. Adivinha-se, portanto, a necessidade de estabilizar o kernel, por forma a minimizar o tempo de execução de tarefas internas. O escalonador de processos é uma componente muito polemica em termos de inovação e de aplicações. Dependendo das situações, um escalonador de processos deve gerir os seus processos por forma a diminuir a latência entre aplicações interativas, ou assegurar a coerência em termos de critérios no escalonamento: se uma tarefa não é crítica, então não devia estar a ser executada. Kernel

Na informática o kernel (conhecido também como núcleo) é a parte fundamental de um sistema operacional. É o software responsável em facilitar acesso seguro ao hardware por programas diferentes. Como existem vários programas e o acesso do hardware é limitado, o núcleo também se encarrega de decidir qual programa poderá usar de um dispositivo de hardware especifico e durante quanto tempo este poderá ser usado (o que é conhecido como multiplexação). Necessariamente não se precisa de um núcleo para usar um computador. Os programas podem ser carregados e executados diretamente em um computador «vazio», sempre que seus autores queiram desenvolvê- los sem usar nenhuma abstração de hardware nem nenhuma ajuda do sistema operacional. Esta era a forma normal de se usar muitos dos primeiros computadores: para usar programas diferentes era preciso reiniciar e reconfigurar o computador cada vez. Com o tempo, se começou a deixar em memória (ainda entre distintas execuções) pequenos programas auxiliares, como o Carregador e o depurador, ou se carregavam apartir memoria_somente_de_leitura. A medida que foram se desenvolvendo, se converteram na base do que chegariam a ser os primeiros núcleos do sistema operacional. Existem quatro tipos principais de núcleos: -Os ''núcleos monolíticos'' facilitam abstrações do hardware subjacente realmente potentes e variadas. -Os ''micronúcleos'' (ou ) proporcionam um pequeno conjunto de abstrações simples do hardware e usam as aplicações chamadas servidores para oferecer maior função. -Os ''híbridos'' (''micronúcleos modificados'') são muito parecidos com os micronúcleos puros, com a exceção de incluírem um código adicional no espaço do núcleo para que se execute com maior velocidade. -Os ''exonúcleos'' não facilitam nenhuma abstração, mas permitem o uso de bibliotecas que proporcionam maior função graças ao acesso direto ou quase direto ao hardware.

Exonúcleos Os exonúcleos, também conhecidos como sistemas operacionais verticalmente estruturados, representam uma aproximação radicalmente nova ao desenvolvimento de sistemas operacionais. A idéia é permitir que o desenvolvedor tome todas as decisões relativas ao rendimento do hardware. Os exonúcleos são extremamente pequenos, já que sua função se limita à proteção e à multiplexação dos recursos. Os desenvolvimentos de núcleos clássicos (tanto o monolítico como o micronúcleo) abstraem o hardware, escondendo os recursos através da abstração do hardware, ou detrás dos controladores do dispositivo. Nos sistemas clássicos, usando a memória física, ninguém poderá afirmar qual é sua real localização, por exemplo. A finalidade de um exonúcleo é permitir uma aplicação que solicite uma região específica da memória, simplesmente assegurar que os recursos pedidos estão disponíveis e que o programa tem direito a acessá-los. Pelo fato do exonúcleo proporcionar uma interface de baixo nível ao hardware, carecendo de todas as funções de alto nível dos outros sistemas operacionais, ele é complementado por uma «biblioteca de sistema operacional». Esta biblioteca se comunica com o exonúcleo subjacente e facilita aos programadores de aplicativos com funções que são comuns em outros sistemas operacionais. Algumas das implicações teóricas de um sistema exonúcleo é que é possível ter distintos tipos de sistemas operacionais (p.e. Windows, ) sendo executado em apenas um exonúcleo e que os desenvolvedores podem escolher prescindir ou incrementar funções por motivos de rendimento. Tipos de multitarefa

Existem dois tipos de sistemas operativos de multitarefa: Antecipação e Cooperação.

-Antecipação Os sistemas operativos com esta qualidade de multitarefa esforçam-se por conseguir uma "democratização" dentro do processador. Os seus kernels mantêm em memória um registro de todos os processos em execução (esse registro chama-se árvore de processos, em virtude de os processos estarem ligados uns aos outros como os ramos de uma árvore). Entre outros atributos acerca de cada processo, essa "árvore" inclui uma informação de prioridade (chamada "nice" nos sistemas Unix- like e simplesmente "Priority" nos Windows NT), com a qual o kernel calcula o tempo de CPU que deve dar a cada processo. Quando esse tempo acaba, o kernel tira o controlo da CPU ao processo e dá-o ao processo que vem a seguir na fila. Quando a fila acaba, o kernel volta a dar o controlo da CPU ao primeiro processo, fechando assim o ciclo.

Exemplos:

Unix Linux BSD Mac OS X Windows NT4 e posteriores Hurd ReactOS

-Cooperação A multitarefa de cooperação pouco difere do outro sistema, a única diferença é que nesta não há controlo sobre o tempo de CPU que cada processo consome: é dado o controlo da CPU ao processo, e ele só o devolve quando estiver pronto... Quase nenhum sistema operativo moderno utiliza este modelo de multiprocessamento, atualmente é mais utilizado o sistema descrito acima pois assim consegue-se evitar que um processo que bloqueie leve o sistema todo consigo, incluindo eventuais documentos não guardados. Os sistemas operativos com este modelo de multitarefa são freqüentemente chamados sistemas operativos com alternância de tarefas (em inglês, task-switching).

Alguns Sistemas Operacionais

O que muitos não sabem é q existem outros Sistemas Operacionais além do Windows e Linux, assim como: Tron

Ken Sakamura, até agora desconhecido engenheiro japonês desenvolveu um sistema operacional mais adotado do que o Windows, o Tron que está presente em quatro bilhões de equipamentos. Tron é usado para garantir o funcionamento de uma gama enorme de aparelhos (de câmeras digitais a motores de automóveis) da mesma forma como o Windows controla os computadores. O que coloca Tron e Windows - e as fortunas de Sakamura e Gates - em lados completamente diferentes é que, ao contrário do Windows, que precisa ser comprado da Microsoft, o Tron é gratuito. Se o desenvolvedor japonês tivesse cobrado um centavo por cada uso do Tron, ele seria bilionário, possivelmente comparado ao fundador da Microsoft, que tem sua fortuna estimada em US$ 43 bilhões, segundo a revista Forbes. Storm

Software feito por dois adolescentes franceses. É um software bem simples, se compararmos com os mais atuais, e com idéias bem simples também, mas consistente. O usuário não precisa conhecer nada, exceto instalação de programas. Ele roda junto com o Windows, mas necessita do DOS; por isso, seu objetivo é simplesmente dar uma nova interface para seu computador. Não é necessário particionar o disco, pois só ocupa 10Mb, mas não há nada sobre suporte a programas. Nenhuma palavra, também, sobre a licença. OpenVMS

O OpenVMS é um sistema operacional multiprogramável e multiusuário utilizado em ambientes de processamento comercial e científico que suporta diversos estilos de operação, incluindo tempo compartilhado, tempo real e até mesmo processamento de transações on- line. O sistema foi projetado para operar em plataformas VAX (CISC) e Alpha AXP (RISC) e possui como principais características: • implementação em ambientes cliente-servidor; • processamento em modo batch; • processamento de aplicações em tempo real; • interface de comandos e Windows; • compatibilidade de códigos fonte interplataformas; • linguagem de controle sofisticada; • implementação em sistemas com multiprocessamento simétrico (SMP); • implementação de sistemas tolerantes à falha; • funcionalidades de sistemas abertos; • kernel do sistema operacional suportado por system services.

O processo no OpenVMS pode ser dividido em quatro partes distintas: imagem, contexto de software, contexto de hardware e espaço de endereçamento virtual. Na terminologia da Digital, uma imagem é o resultado da compilação de um programa fonte em qualquer linguagem de alto nível, ou seja, é um programa executável. Para que uma imagem possa ser executada, ela necessita de recursos do sistema, como privilégios e quotas. A totalidade desses recursos pode ser entendida como sendo o processo. A imagem é sempre executada no contexto de um processo. O contexto de software identifica o processo, seu dono, privilégios e quotas de recursos do sistema. Neste ambiente é determinado o que o processo pode ou não fazer, como, por exemplo, o número máximo de arquivos abertos simultaneamente. O contexto de hardware armazena o conteúdo dos registradores gerais e do registrador de status. Com estas informações é possível que um processo tenha sua execução interrompida temporariamente, retornando posteriormente sem nenhum problema. O espaço de endereçamento virtual consiste em uma seqüência de endereços que uma imagem pode referenciar no intervalo entre 0 e 2³² nos processadores VAX e de 0 a 2^64 nos Alpha AXP. O mecanismo de memória virtual implementa todo esse espaço de endereçamento utilizando a memória principal e a secundária. Um processo pode criar outros processos, dependentes ou não de seu criador. Quando depende do seu criador, um processo é definido como subprocesso; no caso de ser independente, é chamado detached. Um subprocesso compartilha quotas com o processo pai. Além disso, caso o processo pai deixe de existir, o subprocesso também é eliminado. Diferentemente do subprocesso, processos detached não dependem da existência permanente do processo criador. Mit Exokernel Os

Sistema Operacional criado com um conceito diferente, o de exokernel. Quer dizer, o kernel acaba se tornando somente uma aplicação, a que é responsável pela segurança do sistema. O gerenciamento do Hardware acaba sendo feito pelos próprios aplicativos. A vantagem seria um aumento importante na rapidez de processamento. O mais novo exokernel desenvolvido pelo MIT chama-se XOK, roda em computador e usa uma biblioteca chamada ExOS. Essa biblioteca permite que aplicativos Unix, como GCC, Pearl e Telnet, funcionem normalmente. Os desenvolvedores falam até em ganhos de 8 vezes de performance em comparação com outros tipos de kernel. OS/2

O OS/2 tem arquivos de configuração semelhantes ao DOS, um Config.sys e um Autoexec.bat (usado apenas para as sessões DOS). Ele tem uma linha de comando com Dir, Copy, Del e outros comandos. Sua interface gráfica é muito parecida com a do Windows à primeira. Ele se parece superficialmente com o DOS principalmente em virtude do seu objetivo inicial de ser o substituto da IBM/Microsoft para o velho DOS. A bem da verdade, os sistemas de tecnologia de ponta são todos muito parecidos, no Unix os comandos são diferentes, mas a sintaxe é praticamente a mesma. As diferenças estão nos detalhes e talvez por isso o usuário final (atento apenas à superfície) tenha ficado tanto tempo do lado de fora da tecnologia. O OS/2 tem 150 comandos de linha de comando próprios (além do 150 que existem no DOS) usados para controlar multitarefa e certas configurações que não podem existir no DOS e que sua interface gráfica é orientada a objetos de fato. Na linha de comando do OS/2 a memória é plana até 512 MB. Não vai a 4 GB por motivos de compatibilidade. Esta linha de comando conta com uma linguagem batch muito usada em mainframes.Esta linguagem é semelhante em poder e facilidade ao Pascal. A sua integração aos recursos avançados do sistema é grande sendo capaz não só de funcionar em multithreading (em modo texto) com também pode usar objetos da interface gráfica e interagir com esta (estes recursos estão plenamente disponíveis desde 1992). Nem mesmo o Unix dispõe de uma linha de comando tão poderosa, uma vez que esta não é integrada satisfatoriamente à interface orientada a objetos (da qual a interface gráfica é apenas a parte visível). Os sistema de arquivos usa o HPFS (embora possa usar normalmente e ao mesmo tempo a FAT) que é parcialmente orientado a objetos, capaz de se auto-desfragmentar e tem grande capacidade de recuperação a falhas e velocidade de localização de arquivos. Utiliza nomes longos reais. A próxima versão poderá ainda usar um JFS (Journaled ) semelhante ao do AIX (Unix da IBM) que permite ainda maior capacidade de recuperação de falhas e mais orientação a objetos. Existe ainda versão do OS/2 que usa a tecnologia Micro Kernel (das universidades Berkley/Carnegie Mellow) sendo capaz de realizar multiprocessamento até 64 processadores, alcançando uma escalabilidade apenas comparável ao do Unix.