Mrk16 (discussão | contribs)
Pesquisa referente ao tema Sistemas operacionais
Etiqueta: visualeditor
 
(26 revisões intermediárias por 4 usuários não estão sendo mostradas)
Linha 1: Linha 1:
Esta pesquisa deve fornecer um conteúdo atualizado sobre o tema acima. Não esqueça de incluir as 
*'''1 Conceito'''
referëncias (fontes) no último item, reforçando que não deve ser um Copy/Paste e sim uma síntese
 
das pesquisas que fizer.
Sistemas operacionais são uma área de pesquisa importantíssima no âmbito da computação, pois permitem que nos comuniquemos de maneira mais efetiva com os recursos do computador, sem o sistema operacional intermediando o nosso acesso seria necessário um profundo conhecimento a respeito do hardware para operar o computador e até mesmo tarefas corriqueiras (como copiar e colar um arquivo), seriam extremamente complicadas, demoradas e sujeitas a erros.
 
O sistema operacional é uma estrutura de software ampla e complexa, que incorpora aspectos de baixo nível (como drivers de dispositivos e gerência de memória física) e de alto nível (como programas utilitários e a própria interface gráfica).
 
<br>
<br>
*'''2 Estrutura'''
Apesar de ser constantemente retratado como tal, é errado pensar no sistema operacional como apenas uma camada que executa acima do Hardware, ele na verdade é composto de diversos componentes com seus
objetivos e funcionalidades. Alguns dos componentes mais relevantes de um
sistema operacional são:
Núcleo : é o coração do sistema operacional, responsável pela gerência dos recursos do hardware usados pelas aplicações. Ele também implementa as principais abstrações utilizadas pelos programas ou aplicativos.
Drivers : módulos de código específicos para acessar os dispositivos físicos. Existe um driver para cada tipo de dispositivo, como discos rígidos IDE, SCSI, portas USB, placas de vídeo, etc. Muitas vezes o driver é construído pelo próprio fabricante do hardware e em forma compilada (em linguagem de máquina) para ser acoplado ao restante do sistema operacional.
Código de inicialização : a inicialização do hardware requer uma série de tarefas complexas, como reconhecer os dispositivos instalados, testá-los e configurá-los adequadamente para seu uso posterior. Outra tarefa importante é carregar o núcleo do sistema operacional em memória e iniciar sua execução.
Programas utilitários : são programas que facilitam o uso do sistema computacional, fornecendo funcionalidades complementares ao núcleo, como formatação de discos e mídias, configuração de dispositivos, manipulação de arquivos (mover, copiar, apagar), interpretador de comandos, terminal, interface gráfica, gerência de janelas, etc.


= Conceito =
<br>
<br>
*'''2.1 Sistemas monolíticos'''
Um sistema operacional de estrutura monolítica é escrito através de diversas rotinas que interagem entre si para garantir o funcionamento das funções desejadas no
Neste tipo de arquitetura é importante que cada função/rotina do sistema tenhas seus parÂmetros e resultados bem definidos, para que dessa forma possam interagir livremente e integrar o programa sem que uma falha comprometa todo o funcionamento do sistema operacional. 


Sistema Operacional é uma coleção de programas que que tem como principais funções, inicializar o hardware do computador, fornece rotinas básicas para controle de dispositivos, fornece e gerencia escalonamento interações de tarefas e também mantem a integridade de sistema.
Suas principal vantagem é o tempo de resposta, como as funções que o sistema desempenha são implementadas diretamente no núcleo a eficácia do software é uma das melhores dentre as arquiteturas, mas como não há módulos para segmentar a aplicação, todas as informações e rotinas são visíveis às outras o que pode comprometer a confidencialidade do software e a fácil comunicação entre todas as rotinas faz com que uma falha em qualquer uma das rotinas possa comprometer o funcionamento do software como um todo.


= Estrutura =
<br>
<br>
*'''2.2 Sistemas em camadas'''
Como o próprio nome sugere nessa arquitetura o sistema operacional é segmentado em camadas. Visto que os sistemas são divididos, as implementações de um módulo do sistema, podem referenciar apenas as implementações do módulo atual ou das camadas inferiores à ela.


Quanto mais superficial a camada mais próxima ela estará do usuário e quanto mais "profunda" mais perto ela estará do Hardware, A camada 0 da aplicação pode, por exemplo, gerenciar o escalonamento dos processos na CPU enquanto camadas mais superficiais ofereceriam interfaces gráficas para facilitar a utilização do usuário.<br>
*'''2.3 Sistemas Cliente-Servidor'''
Na arquitetura de sistemas Cliente-Servidor as implementações e funcionalidades são dividas em dois tipos: Os procedimentos "Cliente" e os procedimentos "Servidor". Também é comum que haja o mínimo possível de operações sendo executadas do lado do "cliente", deixando a maioria dos processos executando no servidor, dessa maneira sempre que o usuário faz uma requisição a aplicação do cliente envia uma requisição para o servidor e o servidor, por sua vez, faz o processamento necessário para resolver a requisição do cliente e devolve apenas a resposta.


= Tipos de SOs =
<br>
<br>
*'''2.4 Interação'''


Visto que a principal premissa do sistema operacional é facilitar nossa interação com a máquina, é lógico deduzir que há funções que nos permitam acessar diretamente as informações e rotinas do sistema operacional, nos exemplos a seguir é demonstrado como podemos interagir com o sistema operacional através da linguagem "C",utilizando a função System para recuperar informações do sistema.
/*
      *  exemplo uso de system: leitura com atualizacao de data
      */
    #include <stdio.h>
    #include <stdlib.h>
    int main(int argc, char *argv[]) {
      FILE *arq;
      int ch;
      char comando[60];
      /* testa se numero de argumentos correto */
      if (argc != 2) {
        printf("Uso: %s <nome arquivo>\n",argv[0]);
        return(1);
      }
      /* abre arquivo para leitura */
      arq = fopen(argv[1],"r");
      if (arq == 0) {
        perror(argv[1]);
        return(1);
      }
      /* atualiza data do arquivo */
      /*-- prepara comando */
      sprintf(comando, "touch %s", argv[1]);
      /*-- executa */
      system(comando);
      /* apresenta arquivo carater a carater */
      do {
        ch = getc(arq);
        putchar(ch);
      } while (ch != EOF);
      /* finalizacoes */
      fclose(arq);
      return(0);
    }
Nesse exemplo utilizando a linguagem C é possível acessar uma arquivo na memória do sistema e atualizar informações.


= Tipo de processamento de SOs =
<br>
<br>
*'''2.5 Classificação dos sistemas operacionais'''
<br>
'''Batch (de lote) :''' os sistemas operacionais mais antigos trabalhavam “por lote”, ou seja, todos os programas a executar eram colocados em uma fila, com seus dados e demais informações para a execução. O processador recebia os programas e os processava sem interagir com os usuários, o que permitia um alto grau de utilização do sistema. Atualmente, este conceito se aplica a sistemas que processam tarefas sem interação direta com os usuários, como os sistemas de processamento de transações em bancos de dados. Além disso, o termo “em lote” também é usado para designar um conjunto de comandos que deve ser executado em sequência, sem interferência do usuário. Exemplos desses sistemas incluem o OS/360 e VMS, entre outros.
'''De rede :''' um sistema operacional de rede deve possuir suporte à operação em rede, ou seja, a capacidade de oferecer às aplicações locais recursos que estejam localizados em outros computadores da rede, como arquivos e impressoras. Ele também deve disponibilizar seus recursos locais aos demais computadores, de forma controlada. A maioria dos sistemas operacionais atuais oferece esse tipo de funcionalidade.
'''Distribuído :''' em um sistema operacional distribuído, os recursos de cada máquina estão disponíveis globalmente, de forma transparente aos usuários. Ao lançar uma aplicação, o usuário interage com sua janela, mas não sabe onde ela está executando ou armazenando seus arquivos: o sistema é quem decide, de forma transparente. Os sistemas operacionais distribuídos já existem há tempos (Amoeba [Tanenbaum et al., 1991] e Clouds [Dasgupta et al., 1991], por exemplo), mas ainda não são uma realidade de mercado.
'''Multi-usuário :''' um sistema operacional multi-usuário deve suportar a identificação do “dono” de cada recurso dentro do sistema (arquivos, processos, áreas de memória, conexões de rede) e impor regras de controle de acesso para impedir o uso desses recursos por usuários não autorizados. Essa funcionalidade é fundamental para a segurança dos sistemas operacionais de rede e distribuídos. Grande parte dos sistemas atuais são multi-usuários. 
'''Desktop :''' um sistema operacional “de mesa” é voltado ao atendimento do usuário doméstico e corporativo para a realização de atividades corriqueiras, como edição de textos e gráficos, navegação na Internet e reprodução de mídias simples. Suas principais características são a interface gráfica, o suporte à interatividade e a operação em rede. Exemplos de sistemas desktop são os vários sistemas Windows (XP, Vista, 7, etc.), o MacOS X e Linux. 
'''Servidor :''' um sistema operacional servidor deve permitir a gestão eficiente de grandes quantidades de recursos (disco, memória, processadores), impondo prioridades e limites sobre o uso dos recursos pelos usuários e seus aplicativos. Normalmente um sistema operacional servidor também tem suporte a rede e multi-usuários.




= Funcionalidades =
'''Embarcado :''' um sistema operacional é dito embarcado (embutido ou embedded) quando é construído para operar sobre um hardware com poucos recursos de processamento, armazenamento e energia. Aplicações típicas desse tipo de sistema aparecem em telefones celulares, sistemas de automação industrial e controladores automotivos, equipamentos eletrônicos de uso doméstico (leitores de DVD, TVs, fornos-micro-ondas, centrais de alarme, etc.). Muitas vezes um sistema operacional embarcado se apresenta na forma de uma biblioteca a ser ligada ao programa da aplicação (que é fixa). LynxOS, µC/OS, Xylinx e VxWorks são exemplos de sistemas operacionais embarcados para controle e automação. Sistemas operacionais para telefones celulares inteligentes (smartphones) incluem o Symbian e o Android, entre outros.
<br>
 
 
 
'''Tempo real :''' ao contrário da concepção usual, um sistema operacional de tempo real não precisa ser necessariamente ultra-rápido; sua característica essencial é ter um comportamento temporal previsível (ou seja, seu tempo de resposta deve ser conhecido no melhor e pior caso de operação). A estrutura interna de um sistema operacional de tempo real deve ser construída de forma a minimizar esperas e latências imprevisíveis, como tempos de acesso a disco e sincronizações excessivas. 
 
Existem duas classificações de sistemas de tempo real: soft real-time systems, nos quais a perda de prazos implica na degradação do serviço prestado. Um exemplo seria o suporte à gravação de CDs ou à reprodução de músicas. Caso o sistema se atrase, pode ocorrer a perda da mídia em gravação ou falhas na música que está sendo tocada. Por outro lado, nos hard real-time systems a perda de prazos pelo sistema pode perturbar o objeto controlado, com graves consequências humanas, econômicas ou ambientais. Exemplos desse tipo de sistema seriam o controle de funcionamento de uma turbina de avião a jato ou de uma caldeira industrial. 
 
Exemplos de sistemas de tempo real incluem o QNX, RT-Linux e VxWorks. Muitos sistemas embarcados têm características de tempo real, e vice-versa.


*3 Referências


= SO Multiprocesso =
Wikipedia: h[https://pt.wikipedia.org/wiki/Sistema_operativo ttps://pt.wikipedia.org/wiki/Sistema_operativo]
<br>


Sistemas Operacionais: Conceitos e Mecanismos - Prof. Carlos Alberto Maziero : http://wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=so:so-cap01.pdf


= Referências bibliográficas =
Sistemas Operacionais - Prof. Dr. Márcio Andrey Teixeira : http://ctd.ifsp.edu.br/~marcio.andrey/images/estrutura_so-ifsp-catanduva.pdf
<br>

Edição atual tal como às 01h13min de 23 de maio de 2017

  • 1 Conceito

Sistemas operacionais são uma área de pesquisa importantíssima no âmbito da computação, pois permitem que nos comuniquemos de maneira mais efetiva com os recursos do computador, sem o sistema operacional intermediando o nosso acesso seria necessário um profundo conhecimento a respeito do hardware para operar o computador e até mesmo tarefas corriqueiras (como copiar e colar um arquivo), seriam extremamente complicadas, demoradas e sujeitas a erros.

O sistema operacional é uma estrutura de software ampla e complexa, que incorpora aspectos de baixo nível (como drivers de dispositivos e gerência de memória física) e de alto nível (como programas utilitários e a própria interface gráfica).


  • 2 Estrutura

Apesar de ser constantemente retratado como tal, é errado pensar no sistema operacional como apenas uma camada que executa acima do Hardware, ele na verdade é composto de diversos componentes com seus objetivos e funcionalidades. Alguns dos componentes mais relevantes de um sistema operacional são:

Núcleo : é o coração do sistema operacional, responsável pela gerência dos recursos do hardware usados pelas aplicações. Ele também implementa as principais abstrações utilizadas pelos programas ou aplicativos.

Drivers : módulos de código específicos para acessar os dispositivos físicos. Existe um driver para cada tipo de dispositivo, como discos rígidos IDE, SCSI, portas USB, placas de vídeo, etc. Muitas vezes o driver é construído pelo próprio fabricante do hardware e em forma compilada (em linguagem de máquina) para ser acoplado ao restante do sistema operacional.

Código de inicialização : a inicialização do hardware requer uma série de tarefas complexas, como reconhecer os dispositivos instalados, testá-los e configurá-los adequadamente para seu uso posterior. Outra tarefa importante é carregar o núcleo do sistema operacional em memória e iniciar sua execução.


Programas utilitários : são programas que facilitam o uso do sistema computacional, fornecendo funcionalidades complementares ao núcleo, como formatação de discos e mídias, configuração de dispositivos, manipulação de arquivos (mover, copiar, apagar), interpretador de comandos, terminal, interface gráfica, gerência de janelas, etc.


  • 2.1 Sistemas monolíticos

Um sistema operacional de estrutura monolítica é escrito através de diversas rotinas que interagem entre si para garantir o funcionamento das funções desejadas no

Neste tipo de arquitetura é importante que cada função/rotina do sistema tenhas seus parÂmetros e resultados bem definidos, para que dessa forma possam interagir livremente e integrar o programa sem que uma falha comprometa todo o funcionamento do sistema operacional. 

Suas principal vantagem é o tempo de resposta, como as funções que o sistema desempenha são implementadas diretamente no núcleo a eficácia do software é uma das melhores dentre as arquiteturas, mas como não há módulos para segmentar a aplicação, todas as informações e rotinas são visíveis às outras o que pode comprometer a confidencialidade do software e a fácil comunicação entre todas as rotinas faz com que uma falha em qualquer uma das rotinas possa comprometer o funcionamento do software como um todo.


  • 2.2 Sistemas em camadas

Como o próprio nome sugere nessa arquitetura o sistema operacional é segmentado em camadas. Visto que os sistemas são divididos, as implementações de um módulo do sistema, podem referenciar apenas as implementações do módulo atual ou das camadas inferiores à ela.

Quanto mais superficial a camada mais próxima ela estará do usuário e quanto mais "profunda" mais perto ela estará do Hardware, A camada 0 da aplicação pode, por exemplo, gerenciar o escalonamento dos processos na CPU enquanto camadas mais superficiais ofereceriam interfaces gráficas para facilitar a utilização do usuário.

  • 2.3 Sistemas Cliente-Servidor

Na arquitetura de sistemas Cliente-Servidor as implementações e funcionalidades são dividas em dois tipos: Os procedimentos "Cliente" e os procedimentos "Servidor". Também é comum que haja o mínimo possível de operações sendo executadas do lado do "cliente", deixando a maioria dos processos executando no servidor, dessa maneira sempre que o usuário faz uma requisição a aplicação do cliente envia uma requisição para o servidor e o servidor, por sua vez, faz o processamento necessário para resolver a requisição do cliente e devolve apenas a resposta.


  • 2.4 Interação

Visto que a principal premissa do sistema operacional é facilitar nossa interação com a máquina, é lógico deduzir que há funções que nos permitam acessar diretamente as informações e rotinas do sistema operacional, nos exemplos a seguir é demonstrado como podemos interagir com o sistema operacional através da linguagem "C",utilizando a função System para recuperar informações do sistema.

/*
     *   exemplo uso de system: leitura com atualizacao de data
     */
    #include <stdio.h>
    #include <stdlib.h>

    int main(int argc, char *argv[]) {
      FILE *arq;
      int ch;
      char comando[60];

      /* testa se numero de argumentos correto */
      if (argc != 2) {
        printf("Uso: %s <nome arquivo>\n",argv[0]);
        return(1);
      }

      /* abre arquivo para leitura */
      arq = fopen(argv[1],"r");
      if (arq == 0) {
        perror(argv[1]);
        return(1);
      }

      /* atualiza data do arquivo */
      /*-- prepara comando */
      sprintf(comando, "touch %s", argv[1]);
      /*-- executa */
      system(comando);

      /* apresenta arquivo carater a carater */
      do {
        ch = getc(arq);
        putchar(ch);
      } while (ch != EOF);

      /* finalizacoes */
      fclose(arq);
      return(0);
    }

Nesse exemplo utilizando a linguagem C é possível acessar uma arquivo na memória do sistema e atualizar informações.


  • 2.5 Classificação dos sistemas operacionais


Batch (de lote) : os sistemas operacionais mais antigos trabalhavam “por lote”, ou seja, todos os programas a executar eram colocados em uma fila, com seus dados e demais informações para a execução. O processador recebia os programas e os processava sem interagir com os usuários, o que permitia um alto grau de utilização do sistema. Atualmente, este conceito se aplica a sistemas que processam tarefas sem interação direta com os usuários, como os sistemas de processamento de transações em bancos de dados. Além disso, o termo “em lote” também é usado para designar um conjunto de comandos que deve ser executado em sequência, sem interferência do usuário. Exemplos desses sistemas incluem o OS/360 e VMS, entre outros.

De rede : um sistema operacional de rede deve possuir suporte à operação em rede, ou seja, a capacidade de oferecer às aplicações locais recursos que estejam localizados em outros computadores da rede, como arquivos e impressoras. Ele também deve disponibilizar seus recursos locais aos demais computadores, de forma controlada. A maioria dos sistemas operacionais atuais oferece esse tipo de funcionalidade.


Distribuído : em um sistema operacional distribuído, os recursos de cada máquina estão disponíveis globalmente, de forma transparente aos usuários. Ao lançar uma aplicação, o usuário interage com sua janela, mas não sabe onde ela está executando ou armazenando seus arquivos: o sistema é quem decide, de forma transparente. Os sistemas operacionais distribuídos já existem há tempos (Amoeba [Tanenbaum et al., 1991] e Clouds [Dasgupta et al., 1991], por exemplo), mas ainda não são uma realidade de mercado.


Multi-usuário : um sistema operacional multi-usuário deve suportar a identificação do “dono” de cada recurso dentro do sistema (arquivos, processos, áreas de memória, conexões de rede) e impor regras de controle de acesso para impedir o uso desses recursos por usuários não autorizados. Essa funcionalidade é fundamental para a segurança dos sistemas operacionais de rede e distribuídos. Grande parte dos sistemas atuais são multi-usuários. 


Desktop : um sistema operacional “de mesa” é voltado ao atendimento do usuário doméstico e corporativo para a realização de atividades corriqueiras, como edição de textos e gráficos, navegação na Internet e reprodução de mídias simples. Suas principais características são a interface gráfica, o suporte à interatividade e a operação em rede. Exemplos de sistemas desktop são os vários sistemas Windows (XP, Vista, 7, etc.), o MacOS X e Linux. 


Servidor : um sistema operacional servidor deve permitir a gestão eficiente de grandes quantidades de recursos (disco, memória, processadores), impondo prioridades e limites sobre o uso dos recursos pelos usuários e seus aplicativos. Normalmente um sistema operacional servidor também tem suporte a rede e multi-usuários.


Embarcado : um sistema operacional é dito embarcado (embutido ou embedded) quando é construído para operar sobre um hardware com poucos recursos de processamento, armazenamento e energia. Aplicações típicas desse tipo de sistema aparecem em telefones celulares, sistemas de automação industrial e controladores automotivos, equipamentos eletrônicos de uso doméstico (leitores de DVD, TVs, fornos-micro-ondas, centrais de alarme, etc.). Muitas vezes um sistema operacional embarcado se apresenta na forma de uma biblioteca a ser ligada ao programa da aplicação (que é fixa). LynxOS, µC/OS, Xylinx e VxWorks são exemplos de sistemas operacionais embarcados para controle e automação. Sistemas operacionais para telefones celulares inteligentes (smartphones) incluem o Symbian e o Android, entre outros.


Tempo real : ao contrário da concepção usual, um sistema operacional de tempo real não precisa ser necessariamente ultra-rápido; sua característica essencial é ter um comportamento temporal previsível (ou seja, seu tempo de resposta deve ser conhecido no melhor e pior caso de operação). A estrutura interna de um sistema operacional de tempo real deve ser construída de forma a minimizar esperas e latências imprevisíveis, como tempos de acesso a disco e sincronizações excessivas. 

Existem duas classificações de sistemas de tempo real: soft real-time systems, nos quais a perda de prazos implica na degradação do serviço prestado. Um exemplo seria o suporte à gravação de CDs ou à reprodução de músicas. Caso o sistema se atrase, pode ocorrer a perda da mídia em gravação ou falhas na música que está sendo tocada. Por outro lado, nos hard real-time systems a perda de prazos pelo sistema pode perturbar o objeto controlado, com graves consequências humanas, econômicas ou ambientais. Exemplos desse tipo de sistema seriam o controle de funcionamento de uma turbina de avião a jato ou de uma caldeira industrial. 

Exemplos de sistemas de tempo real incluem o QNX, RT-Linux e VxWorks. Muitos sistemas embarcados têm características de tempo real, e vice-versa.

  • 3 Referências

Wikipedia: https://pt.wikipedia.org/wiki/Sistema_operativo

Sistemas Operacionais: Conceitos e Mecanismos - Prof. Carlos Alberto Maziero : http://wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=so:so-cap01.pdf

Sistemas Operacionais - Prof. Dr. Márcio Andrey Teixeira : http://ctd.ifsp.edu.br/~marcio.andrey/images/estrutura_so-ifsp-catanduva.pdf