Sistema operacional - Guia rápido

Um sistema operacional (SO) é uma interface entre um usuário de computador e o hardware do computador. Um sistema operacional é um software que executa todas as tarefas básicas, como gerenciamento de arquivos, gerenciamento de memória, gerenciamento de processos, manipulação de entrada e saída e controle de dispositivos periféricos, como unidades de disco e impressoras.

Alguns sistemas operacionais populares incluem sistema operacional Linux, sistema operacional Windows, VMS, OS / 400, AIX, z / OS, etc.

Definição

Um sistema operacional é um programa que atua como uma interface entre o usuário e o hardware do computador e controla a execução de todos os tipos de programas.

A seguir estão algumas funções importantes de um sistema operacional.

  • Gestão de Memória
  • Gestão do Processador
  • Gerenciamento de dispositivo
  • Gerenciamento de arquivos
  • Security
  • Controle sobre o desempenho do sistema
  • Contabilidade de trabalho
  • Erro ao detectar ajudas
  • Coordenação entre outro software e usuários

Gestão de Memória

O gerenciamento de memória refere-se ao gerenciamento da Memória Primária ou Memória Principal. A memória principal é um grande array de palavras ou bytes onde cada palavra ou byte tem seu próprio endereço.

A memória principal fornece um armazenamento rápido que pode ser acessado diretamente pela CPU. Para que um programa seja executado, ele deve estar na memória principal. Um sistema operacional realiza as seguintes atividades para gerenciamento de memória -

  • Mantém registros da memória primária, ou seja, que parte dela está em uso por quem e que parte não está em uso.

  • Na multiprogramação, o sistema operacional decide qual processo obterá memória, quando e quanto.

  • Aloca a memória quando um processo solicita isso.

  • Desaloca a memória quando um processo não precisa mais dela ou é encerrado.

Gestão do Processador

Em um ambiente de multiprogramação, o SO decide qual processo obtém o processador, quando e por quanto tempo. Esta função é chamadaprocess scheduling. Um sistema operacional realiza as seguintes atividades para gerenciamento de processador -

  • Mantém registros do processador e do status do processo. O programa responsável por esta tarefa é conhecido comotraffic controller.

  • Aloca o processador (CPU) para um processo.

  • Desaloca o processador quando um processo não é mais necessário.

Gerenciamento de dispositivo

Um sistema operacional gerencia a comunicação do dispositivo por meio de seus respectivos drivers. Ele faz as seguintes atividades para gerenciamento de dispositivos -

  • Mantém o controle de todos os dispositivos. O programa responsável por esta tarefa é conhecido como oI/O controller.

  • Decide qual processo obtém o dispositivo, quando e por quanto tempo.

  • Aloca o dispositivo de maneira eficiente.

  • Desaloca dispositivos.

Gerenciamento de arquivos

Um sistema de arquivos normalmente é organizado em diretórios para facilitar a navegação e o uso. Esses diretórios podem conter arquivos e outras instruções.

Um sistema operacional realiza as seguintes atividades para gerenciamento de arquivos -

  • Mantém o controle de informações, localização, usos, status, etc. As instalações coletivas são frequentemente conhecidas como file system.

  • Decide quem obtém os recursos.

  • Aloca os recursos.

  • Desaloca os recursos.

Outras Atividades Importantes

A seguir estão algumas das atividades importantes que um sistema operacional executa -

  • Security - Por meio de senha e outras técnicas semelhantes, impede o acesso não autorizado a programas e dados.

  • Control over system performance - Atrasos de registro entre a solicitação de um serviço e a resposta do sistema.

  • Job accounting - Manter o controle do tempo e recursos usados ​​por vários empregos e usuários.

  • Error detecting aids - Produção de dumps, rastreios, mensagens de erro e outros auxiliares de depuração e detecção de erros.

  • Coordination between other softwares and users - Coordenação e atribuição de compiladores, intérpretes, montadores e outros softwares aos diversos usuários dos sistemas informáticos.

Os sistemas operacionais existem desde a primeira geração de computadores e continuam evoluindo com o tempo. Neste capítulo, discutiremos alguns dos tipos importantes de sistemas operacionais que são mais comumente usados.

Sistema operacional em lote

Os usuários de um sistema operacional em lote não interagem diretamente com o computador. Cada usuário prepara seu trabalho em um dispositivo off-line, como cartões perfurados, e o envia ao operador do computador. Para acelerar o processamento, os trabalhos com necessidades semelhantes são agrupados e executados como um grupo. Os programadores deixam seus programas com o operador e o operador então classifica os programas com requisitos semelhantes em lotes.

Os problemas com sistemas em lote são os seguintes -

  • Falta de interação entre o usuário e o trabalho.
  • A CPU geralmente está ociosa, porque a velocidade dos dispositivos de E / S mecânicos é mais lenta do que a da CPU.
  • É difícil fornecer a prioridade desejada.

Sistemas operacionais de compartilhamento de tempo

Time-sharing é uma técnica que permite que muitas pessoas, localizadas em vários terminais, usem um determinado sistema de computador ao mesmo tempo. Compartilhamento de tempo ou multitarefa é uma extensão lógica da multiprogramação. O tempo do processador, que é compartilhado entre vários usuários simultaneamente, é denominado tempo compartilhado.

A principal diferença entre os sistemas de lote multiprogramados e os sistemas de compartilhamento de tempo é que, no caso dos sistemas de lote multiprogramados, o objetivo é maximizar o uso do processador, ao passo que nos sistemas de compartilhamento de tempo, o objetivo é minimizar o tempo de resposta.

Múltiplos trabalhos são executados pela CPU alternando entre eles, mas as alternâncias ocorrem com muita frequência. Assim, o usuário pode receber uma resposta imediata. Por exemplo, em um processamento de transação, o processador executa cada programa do usuário em uma curta rajada ou quantum de computação. Ou seja, senos usuários estão presentes, então cada usuário pode obter um quantum de tempo. Quando o usuário envia o comando, o tempo de resposta é de alguns segundos no máximo.

O sistema operacional usa escalonamento de CPU e multiprogramação para fornecer a cada usuário uma pequena parte do tempo. Os sistemas de computador que foram projetados principalmente como sistemas em lote foram modificados para sistemas de compartilhamento de tempo.

As vantagens dos sistemas operacionais de compartilhamento de tempo são as seguintes -

  • Oferece a vantagem de uma resposta rápida.
  • Evita duplicação de software.
  • Reduz o tempo ocioso da CPU.

As desvantagens dos sistemas operacionais de compartilhamento de tempo são as seguintes -

  • Problema de confiabilidade.
  • Questão de segurança e integridade de programas e dados do usuário.
  • Problema de comunicação de dados.

Sistema operacional distribuído

Os sistemas distribuídos usam vários processadores centrais para atender a vários aplicativos em tempo real e vários usuários. Os trabalhos de processamento de dados são distribuídos entre os processadores de acordo.

Os processadores se comunicam por meio de várias linhas de comunicação (como barramentos de alta velocidade ou linhas telefônicas). Estes são referidos comoloosely coupled systemsou sistemas distribuídos. Os processadores em um sistema distribuído podem variar em tamanho e função. Esses processadores são chamados de sites, nós, computadores e assim por diante.

As vantagens dos sistemas distribuídos são as seguintes -

  • Com a facilidade de compartilhamento de recursos, um usuário em um site pode ser capaz de usar os recursos disponíveis em outro.
  • Acelere a troca de dados entre si via correio eletrônico.
  • Se um site falhar em um sistema distribuído, os sites restantes podem continuar operando.
  • Melhor serviço aos clientes.
  • Redução da carga no computador host.
  • Redução de atrasos no processamento de dados.

Sistema operacional de rede

Um sistema operacional de rede é executado em um servidor e fornece ao servidor a capacidade de gerenciar dados, usuários, grupos, segurança, aplicativos e outras funções de rede. O objetivo principal do sistema operacional de rede é permitir o acesso a arquivos e impressoras compartilhados entre vários computadores em uma rede, normalmente uma rede local (LAN), uma rede privada ou outras redes.

Exemplos de sistemas operacionais de rede incluem Microsoft Windows Server 2003, Microsoft Windows Server 2008, UNIX, Linux, Mac OS X, Novell NetWare e BSD.

As vantagens dos sistemas operacionais de rede são as seguintes -

  • Os servidores centralizados são altamente estáveis.
  • A segurança é gerenciada pelo servidor.
  • As atualizações para novas tecnologias e hardware podem ser facilmente integradas ao sistema.
  • O acesso remoto aos servidores é possível a partir de diferentes locais e tipos de sistemas.

As desvantagens dos sistemas operacionais de rede são as seguintes -

  • Alto custo de compra e operação de um servidor.
  • Dependência de um local central para a maioria das operações.
  • Manutenção regular e atualizações são necessárias.

Sistema operacional em tempo real

Um sistema de tempo real é definido como um sistema de processamento de dados no qual o intervalo de tempo necessário para processar e responder às entradas é tão pequeno que controla o ambiente. O tempo que o sistema leva para responder a uma entrada e exibir as informações atualizadas necessárias é denominado comoresponse time. Portanto, neste método, o tempo de resposta é muito menor em comparação com o processamento online.

Os sistemas de tempo real são usados ​​quando há requisitos de tempo rígidos na operação de um processador ou o fluxo de dados e os sistemas de tempo real podem ser usados ​​como um dispositivo de controle em um aplicativo dedicado. Um sistema operacional de tempo real deve ter restrições de tempo fixas e bem definidas, caso contrário, o sistema falhará. Por exemplo, experimentos científicos, sistemas de imagens médicas, sistemas de controle industrial, sistemas de armas, robôs, sistemas de controle de tráfego aéreo, etc.

Existem dois tipos de sistemas operacionais em tempo real.

Sistemas duros em tempo real

Os sistemas de tempo real hard garantem que as tarefas críticas sejam concluídas no prazo. Em sistemas de tempo real hard, o armazenamento secundário é limitado ou ausente e os dados são armazenados em ROM. Nestes sistemas, a memória virtual quase nunca é encontrada.

Sistemas soft em tempo real

Os sistemas soft em tempo real são menos restritivos. Uma tarefa crítica em tempo real obtém prioridade sobre outras tarefas e retém a prioridade até que seja concluída. Os sistemas soft real-time têm utilidade limitada do que os sistemas hard real-time. Por exemplo, multimídia, realidade virtual, projetos científicos avançados como exploração submarina e rovers planetários, etc.

Um sistema operacional fornece serviços aos usuários e aos programas.

  • Ele fornece aos programas um ambiente para execução.
  • Ele fornece aos usuários os serviços para executar os programas de maneira conveniente.

A seguir estão alguns serviços comuns fornecidos por um sistema operacional -

  • Execução do programa
  • Operações de I / O
  • Manipulação do sistema de arquivos
  • Communication
  • Detecção de erro
  • Alocação de recursos
  • Protection

Execução do programa

Os sistemas operacionais lidam com muitos tipos de atividades, de programas de usuário a programas de sistema, como spooler de impressora, servidores de nomes, servidor de arquivos, etc. Cada uma dessas atividades é encapsulada como um processo.

Um processo inclui o contexto de execução completo (código para executar, dados para manipular, registros, recursos do sistema operacional em uso). A seguir estão as principais atividades de um sistema operacional com relação ao gerenciamento de programas -

  • Carrega um programa na memória.
  • Executa o programa.
  • Lida com a execução do programa.
  • Fornece um mecanismo para sincronização de processos.
  • Fornece um mecanismo para comunicação do processo.
  • Fornece um mecanismo para tratamento de deadlock.

Operação I / O

Um subsistema de E / S é composto por dispositivos de E / S e seu software de driver correspondente. Os drivers escondem as peculiaridades de dispositivos de hardware específicos dos usuários.

Um sistema operacional gerencia a comunicação entre o usuário e os drivers de dispositivo.

  • Operação de E / S significa operação de leitura ou gravação com qualquer arquivo ou qualquer dispositivo de E / S específico.
  • O sistema operacional fornece acesso ao dispositivo de E / S necessário, quando necessário.

Manipulação do sistema de arquivos

Um arquivo representa uma coleção de informações relacionadas. Os computadores podem armazenar arquivos no disco (armazenamento secundário), para fins de armazenamento de longo prazo. Exemplos de mídia de armazenamento incluem fita magnética, disco magnético e unidades de disco óptico como CD, DVD. Cada uma dessas mídias tem suas próprias propriedades, como velocidade, capacidade, taxa de transferência de dados e métodos de acesso a dados.

Um sistema de arquivos normalmente é organizado em diretórios para facilitar a navegação e o uso. Esses diretórios podem conter arquivos e outras instruções. A seguir estão as principais atividades de um sistema operacional com relação ao gerenciamento de arquivos -

  • O programa precisa ler um arquivo ou gravar um arquivo.
  • O sistema operacional dá permissão ao programa para operação no arquivo.
  • A permissão varia de somente leitura, leitura e gravação, negada e assim por diante.
  • O sistema operacional fornece uma interface para o usuário criar / excluir arquivos.
  • O sistema operacional fornece uma interface para o usuário criar / excluir diretórios.
  • O sistema operacional fornece uma interface para criar o backup do sistema de arquivos.

Comunicação

No caso de sistemas distribuídos que são uma coleção de processadores que não compartilham memória, dispositivos periféricos ou um relógio, o sistema operacional gerencia as comunicações entre todos os processos. Vários processos se comunicam por meio de linhas de comunicação na rede.

O sistema operacional lida com as estratégias de roteamento e conexão e os problemas de contenção e segurança. A seguir estão as principais atividades de um sistema operacional com relação à comunicação -

  • Dois processos geralmente exigem que os dados sejam transferidos entre eles
  • Ambos os processos podem estar em um computador ou em computadores diferentes, mas são conectados por meio de uma rede de computadores.
  • A comunicação pode ser implementada por dois métodos, por memória compartilhada ou por passagem de mensagem.

Manipulação de erros

Os erros podem ocorrer a qualquer hora e em qualquer lugar. Pode ocorrer um erro na CPU, nos dispositivos de E / S ou no hardware da memória. A seguir estão as principais atividades de um sistema operacional com relação ao tratamento de erros -

  • O sistema operacional verifica constantemente possíveis erros.
  • O sistema operacional toma as medidas adequadas para garantir uma computação correta e consistente.

Gestão de recursos

No caso de ambiente multiusuário ou multitarefa, recursos como memória principal, ciclos de CPU e armazenamento de arquivos devem ser alocados para cada usuário ou trabalho. A seguir estão as principais atividades de um sistema operacional com relação ao gerenciamento de recursos -

  • O sistema operacional gerencia todos os tipos de recursos usando planejadores.
  • Os algoritmos de escalonamento da CPU são usados ​​para melhor utilização da CPU.

Proteção

Considerando um sistema de computador com vários usuários e execução simultânea de vários processos, os vários processos devem ser protegidos das atividades uns dos outros.

Proteção refere-se a um mecanismo ou forma de controlar o acesso de programas, processos ou usuários aos recursos definidos por um sistema de computador. A seguir estão as principais atividades de um sistema operacional com relação à proteção -

  • O SO garante que todo o acesso aos recursos do sistema seja controlado.
  • O sistema operacional garante que os dispositivos de E / S externos sejam protegidos contra tentativas de acesso inválidas.
  • O sistema operacional oferece recursos de autenticação para cada usuário por meio de senhas.

Processamento em lote

O processamento em lote é uma técnica na qual um sistema operacional coleta os programas e dados juntos em um lote antes do início do processamento. Um sistema operacional realiza as seguintes atividades relacionadas ao processamento em lote -

  • O SO define um trabalho que possui uma sequência predefinida de comandos, programas e dados como uma única unidade.

  • O sistema operacional mantém vários trabalhos na memória e os executa sem nenhuma informação manual.

  • Os trabalhos são processados ​​na ordem de envio, ou seja, na ordem de chegada.

  • Quando um trabalho conclui sua execução, sua memória é liberada e a saída do trabalho é copiada em um spool de saída para impressão ou processamento posterior.

Vantagens

  • O processamento em lote leva muito do trabalho do operador para o computador.

  • Desempenho aprimorado quando um novo trabalho é iniciado assim que o trabalho anterior é concluído, sem qualquer intervenção manual.

Desvantagens

  • Difícil de depurar o programa.
  • Um trabalho pode entrar em um loop infinito.
  • Devido à falta de esquema de proteção, um trabalho em lote pode afetar os trabalhos pendentes.

Multitarefa

Multitarefa é quando vários trabalhos são executados pela CPU simultaneamente, alternando entre eles. As trocas ocorrem com tanta frequência que os usuários podem interagir com cada programa enquanto ele está sendo executado. Um sistema operacional realiza as seguintes atividades relacionadas à multitarefa -

  • O usuário dá instruções ao sistema operacional ou a um programa diretamente e recebe uma resposta imediata.

  • O sistema operacional lida com multitarefa da maneira que pode lidar com várias operações / executar vários programas ao mesmo tempo.

  • Os sistemas operacionais multitarefa também são conhecidos como sistemas de compartilhamento de tempo.

  • Esses sistemas operacionais foram desenvolvidos para fornecer o uso interativo de um sistema de computador a um custo razoável.

  • Um sistema operacional de tempo compartilhado usa o conceito de escalonamento e multiprogramação de CPU para fornecer a cada usuário uma pequena parte de uma CPU de tempo compartilhado.

  • Cada usuário tem pelo menos um programa separado na memória.

  • Um programa que é carregado na memória e está em execução é comumente referido como process.

  • Quando um processo é executado, ele normalmente executa apenas por um curto período de tempo antes de terminar ou precisar realizar E / S.

  • Como o I / O interativo normalmente funciona em velocidades mais lentas, pode levar muito tempo para ser concluído. Durante esse tempo, uma CPU pode ser utilizada por outro processo.

  • O sistema operacional permite que os usuários compartilhem o computador simultaneamente. Como cada ação ou comando em um sistema de tempo compartilhado tende a ser curto, apenas um pouco de tempo de CPU é necessário para cada usuário.

  • Como o sistema muda rapidamente a CPU de um usuário / programa para o próximo, cada usuário tem a impressão de que possui sua própria CPU, enquanto na verdade uma CPU está sendo compartilhada entre vários usuários.

Multiprogramação

Compartilhar o processador, quando dois ou mais programas residem na memória ao mesmo tempo, é referido como multiprogramming. A multiprogramação pressupõe um único processador compartilhado. A multiprogramação aumenta a utilização da CPU, organizando as tarefas de forma que a CPU sempre tenha uma para executar.

A figura a seguir mostra o layout da memória para um sistema de multiprogramação.

Um sistema operacional executa as seguintes atividades relacionadas à multiprogramação.

  • O sistema operacional mantém vários trabalhos na memória ao mesmo tempo.

  • Este conjunto de trabalhos é um subconjunto dos trabalhos mantidos no pool de trabalhos.

  • O sistema operacional seleciona e começa a executar uma das tarefas na memória.

  • Os sistemas operacionais de multiprogramação monitoram o estado de todos os programas ativos e recursos do sistema usando programas de gerenciamento de memória para garantir que a CPU nunca fique ociosa, a menos que não haja trabalhos para processar.

Vantagens

  • Utilização elevada e eficiente da CPU.
  • O usuário sente que muitos programas recebem CPU quase simultaneamente.

Desvantagens

  • O agendamento da CPU é necessário.
  • Para acomodar muitos trabalhos na memória, é necessário gerenciamento de memória.

Interatividade

Interatividade refere-se à capacidade dos usuários de interagir com um sistema de computador. Um sistema operacional realiza as seguintes atividades relacionadas à interatividade -

  • Fornece ao usuário uma interface para interagir com o sistema.
  • Gerencia os dispositivos de entrada para obter entradas do usuário. Por exemplo, teclado.
  • Gerencia os dispositivos de saída para mostrar as saídas ao usuário. Por exemplo, Monitor.

O tempo de resposta do SO precisa ser curto, pois o usuário submete e aguarda o resultado.

Sistema em tempo real

Os sistemas de tempo real geralmente são sistemas embarcados dedicados. Um sistema operacional executa as seguintes atividades relacionadas à atividade do sistema em tempo real.

  • Em tais sistemas, os sistemas operacionais normalmente leem e reagem aos dados do sensor.
  • O sistema operacional deve garantir a resposta aos eventos dentro de períodos fixos de tempo para garantir o desempenho correto.

Ambiente Distribuído

Um ambiente distribuído refere-se a várias CPUs ou processadores independentes em um sistema de computador. Um sistema operacional realiza as seguintes atividades relacionadas ao ambiente distribuído -

  • O SO distribui lógicas de computação entre vários processadores físicos.

  • Os processadores não compartilham memória ou relógio. Em vez disso, cada processador possui sua própria memória local.

  • O SO gerencia as comunicações entre os processadores. Eles se comunicam por meio de várias linhas de comunicação.

Spool

Spool é um acrônimo para operações periféricas simultâneas on-line. Spool se refere a colocar dados de vários trabalhos de E / S em um buffer. Este buffer é uma área especial na memória ou no disco rígido acessível aos dispositivos de E / S.

Um sistema operacional realiza as seguintes atividades relacionadas ao ambiente distribuído -

  • Lida com o spool de dados do dispositivo de E / S, pois os dispositivos têm diferentes taxas de acesso a dados.

  • Mantém o buffer de spool que fornece uma estação de espera onde os dados podem descansar enquanto o dispositivo mais lento o recupera.

  • Mantém computação paralela devido ao processo de spool, pois um computador pode realizar E / S em paralelo. Torna-se possível fazer com que o computador leia dados de uma fita, grave dados no disco e grave em uma impressora de fita enquanto executa sua tarefa de computação.

Vantagens

  • A operação de spool usa um disco como um buffer muito grande.
  • O spool é capaz de sobrepor a operação de E / S para um trabalho com as operações do processador para outro trabalho.

Processo

Um processo é basicamente um programa em execução. A execução de um processo deve progredir de forma sequencial.

Um processo é definido como uma entidade que representa a unidade básica de trabalho a ser implementada no sistema.

Simplificando, escrevemos nossos programas de computador em um arquivo de texto e quando executamos este programa, ele se torna um processo que realiza todas as tarefas mencionadas no programa.

Quando um programa é carregado na memória e se torna um processo, ele pode ser dividido em quatro seções ─ pilha, heap, texto e dados. A imagem a seguir mostra um layout simplificado de um processo dentro da memória principal -

SN Descrição do componente
1

Stack

A pilha do processo contém os dados temporários, como parâmetros de método / função, endereço de retorno e variáveis ​​locais.

2

Heap

Esta é a memória alocada dinamicamente para um processo durante seu tempo de execução.

3

Text

Isso inclui a atividade atual representada pelo valor do Contador do Programa e o conteúdo dos registros do processador.

4

Data

Esta seção contém as variáveis ​​globais e estáticas.

Programa

Um programa é um pedaço de código que pode ter uma única linha ou milhões de linhas. Um programa de computador é geralmente escrito por um programador de computador em uma linguagem de programação. Por exemplo, aqui está um programa simples escrito em linguagem de programação C -

#include <stdio.h>

int main() {
   printf("Hello, World! \n");
   return 0;
}

Um programa de computador é uma coleção de instruções que executa uma tarefa específica quando executada por um computador. Quando comparamos um programa com um processo, podemos concluir que um processo é uma instância dinâmica de um programa de computador.

Uma parte de um programa de computador que executa uma tarefa bem definida é conhecida como um algorithm. Uma coleção de programas de computador, bibliotecas e dados relacionados são referidos como umsoftware.

Ciclo de Vida do Processo

Quando um processo é executado, ele passa por diferentes estados. Esses estágios podem ser diferentes em diferentes sistemas operacionais e os nomes desses estados também não são padronizados.

Em geral, um processo pode ter um dos cinco estados a seguir por vez.

SN Estado e descrição
1

Start

Este é o estado inicial quando um processo é iniciado / criado pela primeira vez.

2

Ready

O processo está esperando para ser atribuído a um processador. Os processos prontos estão esperando que o processador lhes seja alocado pelo sistema operacional para que possam ser executados. O processo pode entrar neste estado apósStart estado ou durante a execução, mas interrompido pelo agendador para atribuir CPU a algum outro processo.

3

Running

Uma vez que o processo tenha sido atribuído a um processador pelo escalonador do SO, o estado do processo é definido como running e o processador executa suas instruções.

4

Waiting

O processo passa para o estado de espera se precisar esperar por um recurso, como aguardar a entrada do usuário ou aguardar que um arquivo fique disponível.

5

Terminated or Exit

Quando o processo termina sua execução ou é encerrado pelo sistema operacional, ele é movido para o estado encerrado, onde aguarda para ser removido da memória principal.

Bloco de controle de processo (PCB)

Um Bloco de Controle de Processo é uma estrutura de dados mantida pelo Sistema Operacional para cada processo. O PCB é identificado por um ID de processo inteiro (PID). Um PCB mantém todas as informações necessárias para manter o controle de um processo, conforme listado abaixo na tabela -

SN Informação e descrição
1

Process State

O estado atual do processo, ou seja, se está pronto, em execução, em espera ou qualquer outra coisa.

2

Process privileges

Isso é necessário para permitir / proibir o acesso aos recursos do sistema.

3

Process ID

Identificação única para cada processo no sistema operacional.

4

Pointer

Um ponteiro para o processo pai.

5

Program Counter

Contador de programa é um ponteiro para o endereço da próxima instrução a ser executada para este processo.

6

CPU registers

Vários registros de CPU onde o processo precisa ser armazenado para execução para o estado de execução.

7

CPU Scheduling Information

Prioridade do processo e outras informações de agendamento necessárias para agendar o processo.

8

Memory management information

Isso inclui as informações da tabela de páginas, limites de memória, tabela de segmentos dependendo da memória usada pelo sistema operacional.

9

Accounting information

Isso inclui a quantidade de CPU usada para a execução do processo, limites de tempo, ID de execução etc.

10

IO status information

Isso inclui uma lista de dispositivos de E / S alocados para o processo.

A arquitetura de um PCB é totalmente dependente do sistema operacional e pode conter informações diferentes em sistemas operacionais diferentes. Aqui está um diagrama simplificado de um PCB -

O PCB é mantido por um processo ao longo de sua vida útil e é excluído quando o processo termina.

Definição

O escalonamento de processos é a atividade do gerenciador de processos que trata da remoção do processo em execução da CPU e da seleção de outro processo com base em uma estratégia particular.

A programação de processos é uma parte essencial de sistemas operacionais de multiprogramação. Esses sistemas operacionais permitem que mais de um processo seja carregado na memória executável por vez e o processo carregado compartilha a CPU usando multiplexação de tempo.

Filas de agendamento de processos

O sistema operacional mantém todos os PCBs nas filas de agendamento de processos. O sistema operacional mantém uma fila separada para cada um dos estados de processo e os PCBs de todos os processos no mesmo estado de execução são colocados na mesma fila. Quando o estado de um processo é alterado, seu PCB é desvinculado de sua fila atual e movido para sua nova fila de estado.

O sistema operacional mantém as seguintes filas de agendamento de processos importantes -

  • Job queue - Esta fila mantém todos os processos do sistema.

  • Ready queue- Esta fila mantém um conjunto de todos os processos residentes na memória principal, prontos e aguardando para serem executados. Um novo processo é sempre colocado nesta fila.

  • Device queues - Os processos que são bloqueados devido à indisponibilidade de um dispositivo de E / S constituem esta fila.

O SO pode usar políticas diferentes para gerenciar cada fila (FIFO, Round Robin, Priority, etc.). O agendador do sistema operacional determina como mover processos entre as filas de prontidão e de execução, que podem ter apenas uma entrada por núcleo de processador no sistema; no diagrama acima, ele foi mesclado com a CPU.

Modelo de Processo de Dois Estados

O modelo de processo de dois estados refere-se aos estados de execução e não execução, descritos abaixo -

SN Estado e descrição
1

Running

Quando um novo processo é criado, ele entra no sistema como no estado de execução.

2

Not Running

Os processos que não estão em execução são mantidos na fila, aguardando sua vez de execução. Cada entrada na fila é um ponteiro para um processo específico. A fila é implementada usando uma lista vinculada. O uso do despachante é como segue. Quando um processo é interrompido, esse processo é transferido para a fila de espera. Se o processo foi concluído ou abortado, o processo é descartado. Em qualquer um dos casos, o despachante seleciona um processo da fila para execução.

Schedulers

Agendadores são softwares de sistema especiais que tratam da programação de processos de várias maneiras. Sua principal tarefa é selecionar as tarefas a serem enviadas ao sistema e decidir qual processo executar. Os agendadores são de três tipos -

  • Agendador de longo prazo
  • Agendador de curto prazo
  • Agendador de médio prazo

Long Term Scheduler

Também é chamado de job scheduler. Um planejador de longo prazo determina quais programas são admitidos no sistema para processamento. Ele seleciona processos da fila e os carrega na memória para execução. O processo é carregado na memória para agendamento da CPU.

O objetivo principal do agendador de tarefas é fornecer uma combinação balanceada de tarefas, como limite de E / S e limite de processador. Ele também controla o grau de multiprogramação. Se o grau de multiprogramação for estável, a taxa média de criação do processo deve ser igual à taxa média de partida dos processos que saem do sistema.

Em alguns sistemas, o agendador de longo prazo pode não estar disponível ou ser mínimo. Os sistemas operacionais de compartilhamento de tempo não têm agendador de longo prazo. Quando um processo muda de estado de novo para pronto, há o uso de um planejador de longo prazo.

Agendador de curto prazo

Também é chamado de CPU scheduler. Seu principal objetivo é aumentar o desempenho do sistema de acordo com o conjunto de critérios escolhido. É a mudança do estado de pronto para o estado de execução do processo. O escalonador de CPU seleciona um processo entre os processos que estão prontos para executar e aloca CPU para um deles.

Agendadores de curto prazo, também conhecidos como despachantes, tomam a decisão de qual processo executar em seguida. Agendadores de curto prazo são mais rápidos do que agendadores de longo prazo.

Agendador de médio prazo

A programação de médio prazo faz parte do swapping. Ele remove os processos da memória. Reduz o grau de multiprogramação. O escalonador de médio prazo é responsável por lidar com os processos de saída trocados.

Um processo em execução pode ser suspenso se fizer uma solicitação de E / S. Um processo suspenso não pode progredir em direção à conclusão. Nessa condição, para remover o processo da memória e liberar espaço para outros processos, o processo suspenso é movido para o armazenamento secundário. Este processo é chamadoswapping, e o processo será trocado ou implementado. A troca pode ser necessária para melhorar a combinação do processo.

Comparação entre Scheduler

SN Agendador de longo prazo Agendador de curto prazo Agendador de médio prazo
1 É um programador de tarefas É um agendador de CPU É um agendador de troca de processo.
2 A velocidade é menor do que o agendador de curto prazo A velocidade é a mais rápida entre outras duas A velocidade está entre o agendador de curto e longo prazo.
3 Ele controla o grau de multiprogramação Ele fornece menos controle sobre o grau de multiprogramação Reduz o grau de multiprogramação.
4 É quase ausente ou mínimo no sistema de compartilhamento de tempo Também é mínimo no sistema de compartilhamento de tempo É uma parte dos sistemas de compartilhamento de tempo.
5 Ele seleciona processos do pool e os carrega na memória para execução Ele seleciona os processos que estão prontos para executar Ele pode reintroduzir o processo na memória e a execução pode continuar.

Mudança de contexto

Uma troca de contexto é o mecanismo para armazenar e restaurar o estado ou contexto de uma CPU no bloco de Controle de Processo para que a execução de um processo possa ser retomada do mesmo ponto em um momento posterior. Usando essa técnica, um alternador de contexto permite que vários processos compartilhem uma única CPU. A troca de contexto é uma parte essencial dos recursos de um sistema operacional multitarefa.

Quando o escalonador muda a CPU de executar um processo para executar outro, o estado do processo em execução atual é armazenado no bloco de controle de processo. Depois disso, o estado do próximo processo a ser executado é carregado de seu próprio PCB e usado para definir o PC, registros, etc. Nesse ponto, o segundo processo pode começar a ser executado.

As alternâncias de contexto são computacionalmente intensivas, pois o registro e o estado da memória devem ser salvos e restaurados. Para evitar a quantidade de tempo de comutação de contexto, alguns sistemas de hardware empregam dois ou mais conjuntos de registros de processador. Quando o processo é alternado, as seguintes informações são armazenadas para uso posterior.

  • Contador de programa
  • Informação de agendamento
  • Valor de registro base e limite
  • Registro usado atualmente
  • Estado alterado
  • Informações de estado de E / S
  • Informação contábil

Um Process Scheduler agenda diferentes processos a serem atribuídos à CPU com base em algoritmos de agendamento específicos. Existem seis algoritmos de escalonamento de processos populares que iremos discutir neste capítulo -

  • Programação por ordem de chegada (FCFS)
  • Programação Shortest-Job-Next (SJN)
  • Agendamento prioritário
  • Menor Tempo Restante
  • Agendamento de Round Robin (RR)
  • Agendamento de filas de vários níveis

Esses algoritmos são non-preemptive or preemptive. Algoritmos não preemptivos são projetados para que, uma vez que um processo entre no estado de execução, ele não possa ser interrompido até que complete seu tempo alocado, enquanto o agendamento preemptivo é baseado na prioridade, onde um planejador pode antecipar um processo em execução de baixa prioridade a qualquer momento quando for de alta prioridade processo entra em um estado pronto.

Primeiro a chegar, primeiro a servir (FCFS)

  • Os trabalhos são executados por ordem de chegada.
  • É um algoritmo de escalonamento preventivo e não preemptivo.
  • Fácil de entender e implementar.
  • Sua implementação é baseada na fila FIFO.
  • Baixo desempenho porque o tempo médio de espera é alto.

Wait time de cada processo é o seguinte -

Processo Tempo de espera: Tempo de serviço - Tempo de chegada
P0 0 - 0 = 0
P1 5 - 1 = 4
P2 8 - 2 = 6
P3 16 - 3 = 13

Tempo médio de espera: (0 + 4 + 6 + 13) / 4 = 5,75

Shortest Job Next (SJN)

  • Isso também é conhecido como shortest job first, ou SJF

  • Este é um algoritmo de escalonamento não preemptivo e preventivo.

  • Melhor abordagem para minimizar o tempo de espera.

  • Fácil de implementar em sistemas Batch onde o tempo de CPU necessário é conhecido com antecedência.

  • Impossível de implementar em sistemas interativos onde o tempo de CPU necessário não é conhecido.

  • O processador deve saber com antecedência quanto tempo o processo levará.

Dado: Tabela de processos, e seu tempo de chegada, tempo de execução

Processo Tempo de chegada Tempo de execução Tempo de serviço
P0 0 5 0
P1 1 3 5
P2 2 8 14
P3 3 6 8

Waiting time de cada processo é o seguinte -

Processo Tempo de espera
P0 0 - 0 = 0
P1 5 - 1 = 4
P2 14 - 2 = 12
P3 8 - 3 = 5

Tempo médio de espera: (0 + 4 + 12 + 5) / 4 = 21/4 = 5,25

Agendamento com base em prioridade

  • O escalonamento prioritário é um algoritmo não preemptivo e um dos algoritmos de escalonamento mais comuns em sistemas em lote.

  • Cada processo recebe uma prioridade. O processo com prioridade mais alta deve ser executado primeiro e assim por diante.

  • Os processos com a mesma prioridade são executados por ordem de chegada.

  • A prioridade pode ser decidida com base nos requisitos de memória, requisitos de tempo ou qualquer outro requisito de recurso.

Dado: Tabela de processos e sua hora de chegada, tempo de execução e prioridade. Aqui, estamos considerando que 1 é a prioridade mais baixa.

Processo Tempo de chegada Tempo de execução Prioridade Tempo de serviço
P0 0 5 1 0
P1 1 3 2 11
P2 2 8 1 14
P3 3 6 3 5

Waiting time de cada processo é o seguinte -

Processo Tempo de espera
P0 0 - 0 = 0
P1 11 - 1 = 10
P2 14 - 2 = 12
P3 5 - 3 = 2

Tempo médio de espera: (0 + 10 + 12 + 2) / 4 = 24/4 = 6

Menor Tempo Restante

  • O menor tempo restante (SRT) é a versão preemptiva do algoritmo SJN.

  • O processador é alocado para o trabalho mais próximo da conclusão, mas pode ser eliminado por um trabalho pronto mais recente com tempo de conclusão mais curto.

  • Impossível de implementar em sistemas interativos onde o tempo de CPU necessário não é conhecido.

  • Geralmente é usado em ambientes em lote onde trabalhos curtos precisam dar preferência.

Agendamento de Round Robin

  • Round Robin é o algoritmo de escalonamento de processo preventivo.

  • Cada processo recebe um tempo fixo para execução, chamado de quantum.

  • Depois que um processo é executado por um determinado período de tempo, ele é interrompido e outro processo é executado por um determinado período de tempo.

  • A comutação de contexto é usada para salvar estados de processos antecipados.

Wait time de cada processo é o seguinte -

Processo Tempo de espera: Tempo de serviço - Tempo de chegada
P0 (0 - 0) + (12 - 3) = 9
P1 (3 - 1) = 2
P2 (6 - 2) + (14 - 9) + (20 - 17) = 12
P3 (9 - 3) + (17 - 12) = 11

Tempo médio de espera: (9 + 2 + 12 + 11) / 4 = 8,5

Agendamento de filas de vários níveis

As filas de vários níveis não são um algoritmo de programação independente. Eles fazem uso de outros algoritmos existentes para agrupar e agendar trabalhos com características comuns.

  • Várias filas são mantidas para processos com características comuns.
  • Cada fila pode ter seus próprios algoritmos de agendamento.
  • As prioridades são atribuídas a cada fila.

Por exemplo, os trabalhos vinculados à CPU podem ser agendados em uma fila e todos os trabalhos vinculados a E / S em outra fila. O Process Scheduler então seleciona alternadamente os trabalhos de cada fila e os atribui à CPU com base no algoritmo atribuído à fila.

O que é Thread?

Um thread é um fluxo de execução através do código do processo, com seu próprio contador de programa que mantém o controle de qual instrução executar a seguir, registros do sistema que mantêm suas variáveis ​​de trabalho atuais e uma pilha que contém o histórico de execução.

Um thread compartilha com seus threads pares algumas informações, como segmento de código, segmento de dados e arquivos abertos. Quando um thread altera um item de memória de segmento de código, todos os outros threads percebem isso.

Um tópico também é chamado de lightweight process. Threads fornecem uma maneira de melhorar o desempenho do aplicativo por meio do paralelismo. Threads representam uma abordagem de software para melhorar o desempenho do sistema operacional, reduzindo a sobrecarga do thread que é equivalente a um processo clássico.

Cada thread pertence a exatamente um processo e nenhum thread pode existir fora de um processo. Cada thread representa um fluxo de controle separado. Threads foram usados ​​com sucesso na implementação de servidores de rede e servidor web. Eles também fornecem uma base adequada para a execução paralela de aplicativos em multiprocessadores de memória compartilhada. A figura a seguir mostra o funcionamento de um processo single-threaded e um multithread.

Diferença entre processo e thread

SN Processo Fio
1 O processo é pesado ou exige muitos recursos. Thread é leve, consumindo menos recursos do que um processo.
2 A comutação de processos precisa de interação com o sistema operacional. A troca de thread não precisa interagir com o sistema operacional.
3 Em vários ambientes de processamento, cada processo executa o mesmo código, mas tem sua própria memória e recursos de arquivo. Todos os threads podem compartilhar o mesmo conjunto de arquivos abertos, processos filhos.
4 Se um processo for bloqueado, nenhum outro processo poderá ser executado até que o primeiro seja desbloqueado. Enquanto um encadeamento está bloqueado e esperando, um segundo encadeamento na mesma tarefa pode ser executado.
5 Vários processos sem usar threads usam mais recursos. Vários processos encadeados usam menos recursos.
6 Em vários processos, cada processo opera independentemente dos outros. Um thread pode ler, escrever ou alterar os dados de outro thread.

Vantagens da linha

  • Threads minimizam o tempo de troca de contexto.
  • O uso de threads fornece simultaneidade dentro de um processo.
  • Comunicação eficiente.
  • É mais econômico criar e alternar threads de contexto.
  • Threads permitem a utilização de arquiteturas de multiprocessadores em maior escala e eficiência.

Tipos de linha

Threads são implementados de duas maneiras -

  • User Level Threads - Tópicos gerenciados pelo usuário.

  • Kernel Level Threads - Threads gerenciados pelo sistema operacional que atuam no kernel, um núcleo do sistema operacional.

Threads de nível de usuário

Nesse caso, o kernel de gerenciamento de encadeamentos não está ciente da existência de encadeamentos. A biblioteca de threads contém código para criar e destruir threads, para passar mensagens e dados entre threads, para agendar a execução de threads e para salvar e restaurar contextos de threads. O aplicativo começa com um único thread.

Vantagens

  • A troca de threads não requer privilégios de modo Kernel.
  • O thread de nível de usuário pode ser executado em qualquer sistema operacional.
  • O agendamento pode ser específico do aplicativo no segmento de nível do usuário.
  • Os threads no nível do usuário são rápidos de criar e gerenciar.

Desvantagens

  • Em um sistema operacional típico, a maioria das chamadas do sistema são bloqueadas.
  • O aplicativo multithread não pode tirar vantagem do multiprocessamento.

Threads de nível de kernel

Nesse caso, o gerenciamento do thread é feito pelo Kernel. Não há código de gerenciamento de encadeamento na área de aplicativo. Threads de kernel são suportados diretamente pelo sistema operacional. Qualquer aplicativo pode ser programado para ser multithread. Todos os threads em um aplicativo são suportados em um único processo.

O kernel mantém informações de contexto para o processo como um todo e para threads individuais dentro do processo. O agendamento pelo Kernel é feito com base em threads. O Kernel realiza a criação, programação e gerenciamento de threads no espaço do Kernel. Os threads do kernel geralmente são mais lentos para criar e gerenciar do que os threads do usuário.

Vantagens

  • O kernel pode agendar simultaneamente vários threads do mesmo processo em vários processos.
  • Se um thread em um processo for bloqueado, o Kernel pode agendar outro thread do mesmo processo.
  • As próprias rotinas do kernel podem ser multithread.

Desvantagens

  • Os threads do kernel geralmente são mais lentos para criar e gerenciar do que os threads do usuário.
  • A transferência de controle de um thread para outro dentro do mesmo processo requer uma mudança de modo para o Kernel.

Modelos de multithreading

Alguns sistemas operacionais fornecem um encadeamento de nível de usuário combinado e um recurso de encadeamento de nível de kernel. Solaris é um bom exemplo dessa abordagem combinada. Em um sistema combinado, vários threads no mesmo aplicativo podem ser executados em paralelo em vários processadores e uma chamada de sistema de bloqueio não precisa bloquear todo o processo. Modelos de multithreading são três tipos

  • Relacionamento de muitos para muitos.
  • Muitos para um relacionamento.
  • Relacionamento um para um.

Modelo muitos para muitos

O modelo muitos-para-muitos multiplexa qualquer número de threads de usuário em um número igual ou menor de threads de kernel.

O diagrama a seguir mostra o modelo de encadeamento muitos para muitos em que 6 encadeamentos de nível de usuário são multiplexados com 6 encadeamentos de nível de kernel. Neste modelo, os desenvolvedores podem criar quantos threads de usuário forem necessários e os threads de Kernel correspondentes podem ser executados em paralelo em uma máquina com multiprocessador. Este modelo fornece a melhor precisão em simultaneidade e quando um thread executa uma chamada de sistema de bloqueio, o kernel pode agendar outro thread para execução.

Modelo Muitos para Um

O modelo muitos para um mapeia muitos encadeamentos de nível de usuário para um encadeamento de nível de kernel. O gerenciamento de threads é feito no espaço do usuário pela biblioteca de threads. Quando o thread faz uma chamada de sistema de bloqueio, todo o processo será bloqueado. Apenas um thread pode acessar o Kernel por vez, portanto, vários threads não podem ser executados em paralelo em multiprocessadores.

Se as bibliotecas de thread em nível de usuário forem implementadas no sistema operacional de forma que o sistema não as suporte, então as threads do Kernel usarão os modos de relacionamento muitos para um.

Modelo Um para Um

Há um relacionamento um a um do encadeamento no nível do usuário com o encadeamento no nível do kernel. Este modelo oferece mais simultaneidade do que o modelo muitos para um. Ele também permite que outro thread seja executado quando um thread faz uma chamada de sistema de bloqueio. Ele oferece suporte a vários threads para executar em paralelo em microprocessadores.

A desvantagem desse modelo é que a criação de thread do usuário requer o thread do Kernel correspondente. OS / 2, Windows NT e Windows 2000 usam um modelo de relacionamento um para um.

Diferença entre Thread de Nível de Usuário e Nível de Kernel

SN Tópicos em nível de usuário Thread de nível de kernel
1 Threads no nível do usuário são mais rápidos de criar e gerenciar. Threads no nível do kernel são mais lentos para criar e gerenciar.
2 A implementação é feita por uma biblioteca de threads no nível do usuário. O sistema operacional oferece suporte à criação de threads de kernel.
3 O thread no nível do usuário é genérico e pode ser executado em qualquer sistema operacional. O encadeamento no nível do kernel é específico para o sistema operacional.
4 Aplicativos multithread não podem tirar proveito do multiprocessamento. As próprias rotinas do kernel podem ser multithread.

O gerenciamento de memória é a funcionalidade de um sistema operacional que manipula ou gerencia a memória primária e move os processos para frente e para trás entre a memória principal e o disco durante a execução. O gerenciamento de memória rastreia cada local de memória, independentemente de estar alocado para algum processo ou de estar livre. Ele verifica quanta memória deve ser alocada para os processos. Ele decide qual processo obterá memória em que momento. Ele rastreia sempre que alguma memória é liberada ou não alocada e, correspondentemente, atualiza o status.

Este tutorial ensinará conceitos básicos relacionados ao gerenciamento de memória.

Espaço de Endereço do Processo

O espaço de endereço do processo é o conjunto de endereços lógicos que um processo faz referência em seu código. Por exemplo, quando o endereçamento de 32 bits está em uso, os endereços podem variar de 0 a 0x7fffffff; ou seja, 2 ^ 31 números possíveis, para um tamanho teórico total de 2 gigabytes.

O sistema operacional se encarrega de mapear os endereços lógicos para endereços físicos no momento da alocação de memória para o programa. Existem três tipos de endereços usados ​​em um programa antes e depois da alocação da memória -

SN Endereços de memória e descrição
1

Symbolic addresses

Os endereços usados ​​em um código-fonte. Os nomes de variáveis, constantes e rótulos de instrução são os elementos básicos do espaço de endereço simbólico.

2

Relative addresses

No momento da compilação, um compilador converte endereços simbólicos em endereços relativos.

3

Physical addresses

O carregador gera esses endereços no momento em que um programa é carregado na memória principal.

Os endereços virtuais e físicos são os mesmos em esquemas de vinculação de endereços em tempo de compilação e tempo de carregamento. Os endereços virtuais e físicos diferem no esquema de vinculação de endereço em tempo de execução.

O conjunto de todos os endereços lógicos gerados por um programa é conhecido como logical address space. O conjunto de todos os endereços físicos correspondentes a esses endereços lógicos é conhecido como umphysical address space.

O mapeamento de tempo de execução do endereço virtual para o físico é feito pela unidade de gerenciamento de memória (MMU), que é um dispositivo de hardware. A MMU usa o seguinte mecanismo para converter o endereço virtual em endereço físico.

  • O valor no registro base é adicionado a cada endereço gerado por um processo do usuário, que é tratado como deslocamento no momento em que é enviado para a memória. Por exemplo, se o valor do registro base for 10000, uma tentativa do usuário de usar a localização de endereço 100 será realocada dinamicamente para a localização 10100.

  • O programa do usuário lida com endereços virtuais; ele nunca vê os endereços físicos reais.

Carregamento estático vs dinâmico

A escolha entre carregamento estático ou dinâmico deve ser feita no momento do desenvolvimento do programa de computador. Se você tiver que carregar seu programa estaticamente, então, no momento da compilação, os programas completos serão compilados e vinculados sem deixar nenhum programa externo ou dependência de módulo. O vinculador combina o programa de objeto com outros módulos de objeto necessários em um programa absoluto, que também inclui endereços lógicos.

Se você estiver escrevendo um programa carregado dinamicamente, seu compilador irá compilar o programa e para todos os módulos que você deseja incluir dinamicamente, apenas referências serão fornecidas e o resto do trabalho será feito no momento da execução.

No momento do carregamento, com static loading, o programa absoluto (e os dados) são carregados na memória para que a execução comece.

Se você estiver usando dynamic loading, as rotinas dinâmicas da biblioteca são armazenadas em um disco em formato relocável e são carregadas na memória apenas quando são necessárias para o programa.

Link estático vs dinâmico

Conforme explicado acima, quando a vinculação estática é usada, o vinculador combina todos os outros módulos necessários a um programa em um único programa executável para evitar qualquer dependência de tempo de execução.

Quando a vinculação dinâmica é usada, não é necessário vincular o módulo ou biblioteca real com o programa, em vez disso, uma referência ao módulo dinâmico é fornecida no momento da compilação e da vinculação. Bibliotecas de vínculo dinâmico (DLL) no Windows e objetos compartilhados no Unix são bons exemplos de bibliotecas dinâmicas.

Troca

A troca é um mecanismo no qual um processo pode ser trocado temporariamente da memória principal (ou movido) para o armazenamento secundário (disco) e tornar essa memória disponível para outros processos. Mais tarde, o sistema volta o processo do armazenamento secundário para a memória principal.

Embora o desempenho seja geralmente afetado pelo processo de troca, ele ajuda na execução de vários e grandes processos em paralelo e essa é a razão Swapping is also known as a technique for memory compaction.

O tempo total gasto pelo processo de troca inclui o tempo que leva para mover todo o processo para um disco secundário e, em seguida, copiar o processo de volta para a memória, bem como o tempo que o processo leva para recuperar a memória principal.

Vamos supor que o processo do usuário tenha 2.048 KB e em um disco rígido padrão onde a troca ocorrerá tenha uma taxa de transferência de dados em torno de 1 MB por segundo. A transferência real do processo de 1000K para ou da memória levará

2048KB / 1024KB per second
= 2 seconds
= 2000 milliseconds

Agora, considerando o tempo de entrada e saída, levará 4.000 milissegundos completos mais outra sobrecarga em que o processo compete para recuperar a memória principal.

Alocação de memória

A memória principal geralmente tem duas partições -

  • Low Memory - O sistema operacional reside nesta memória.

  • High Memory - Os processos do usuário são mantidos em alta memória.

O sistema operacional usa o seguinte mecanismo de alocação de memória.

SN Alocação de memória e descrição
1

Single-partition allocation

Nesse tipo de alocação, o esquema de registro de relocação é usado para proteger os processos do usuário uns dos outros e de alterar o código e os dados do sistema operacional. O registro de relocação contém o valor do menor endereço físico, enquanto o registro de limite contém o intervalo de endereços lógicos. Cada endereço lógico deve ser menor que o registro de limite.

2

Multiple-partition allocation

Nesse tipo de alocação, a memória principal é dividida em várias partições de tamanho fixo, onde cada partição deve conter apenas um processo. Quando uma partição está livre, um processo é selecionado na fila de entrada e carregado na partição livre. Quando o processo termina, a partição fica disponível para outro processo.

Fragmentação

Conforme os processos são carregados e removidos da memória, o espaço livre da memória é dividido em pequenos pedaços. Às vezes acontece que os processos não podem ser alocados aos blocos de memória, considerando seu tamanho pequeno, e os blocos de memória permanecem sem uso. Esse problema é conhecido como Fragmentação.

A fragmentação é de dois tipos -

SN Fragmentação e Descrição
1

External fragmentation

O espaço total da memória é suficiente para satisfazer uma solicitação ou para residir um processo nela, mas não é contíguo, portanto não pode ser usado.

2

Internal fragmentation

O bloco de memória atribuído ao processo é maior. Parte da memória não é usada, pois não pode ser usada por outro processo.

O diagrama a seguir mostra como a fragmentação pode causar desperdício de memória e uma técnica de compactação pode ser usada para criar mais memória livre a partir da memória fragmentada -

A fragmentação externa pode ser reduzida pela compactação ou embaralhamento do conteúdo da memória para colocar toda a memória livre em um grande bloco. Para viabilizar a compactação, a realocação deve ser dinâmica.

A fragmentação interna pode ser reduzida atribuindo efetivamente a menor partição, mas grande o suficiente para o processo.

Paging

Um computador pode endereçar mais memória do que a quantidade fisicamente instalada no sistema. Essa memória extra é, na verdade, chamada de memória virtual e é uma seção de um disco rígido que é configurado para emular a RAM do computador. A técnica de paginação desempenha um papel importante na implementação da memória virtual.

Paginação é uma técnica de gerenciamento de memória na qual o espaço de endereço do processo é dividido em blocos do mesmo tamanho chamados pages(tamanho é potência de 2, entre 512 bytes e 8192 bytes). O tamanho do processo é medido em número de páginas.

Da mesma forma, a memória principal é dividida em pequenos blocos de tamanho fixo de memória (física) chamados frames e o tamanho de um quadro é mantido igual ao de uma página para melhor utilização da memória principal e para evitar fragmentação externa.

Tradução de endereços

O endereço da página é chamado logical address e representado por page number e a offset.

Logical Address = Page number + page offset

O endereço do quadro é chamado physical address e representado por um frame number e a offset.

Physical Address = Frame number + page offset

Uma estrutura de dados chamada page map table é usado para rastrear a relação entre uma página de um processo e um quadro na memória física.

Quando o sistema aloca um quadro para qualquer página, ele traduz esse endereço lógico em um endereço físico e cria uma entrada na tabela de páginas para ser usada durante a execução do programa.

Quando um processo deve ser executado, suas páginas correspondentes são carregadas em qualquer quadro de memória disponível. Suponha que você tenha um programa de 8 KB, mas sua memória possa acomodar apenas 5 KB em um determinado ponto no tempo, então o conceito de paginação aparecerá. Quando um computador fica sem RAM, o sistema operacional (SO) move páginas ociosas ou indesejadas da memória para a memória secundária para liberar RAM para outros processos e trazê-los de volta quando necessário para o programa.

Este processo continua durante toda a execução do programa, onde o sistema operacional continua removendo páginas ociosas da memória principal e as grava na memória secundária e as traz de volta quando exigido pelo programa.

Vantagens e desvantagens do paging

Aqui está uma lista de vantagens e desvantagens do paging -

  • A paginação reduz a fragmentação externa, mas ainda sofre de fragmentação interna.

  • A paginação é simples de implementar e considerada uma técnica de gerenciamento de memória eficiente.

  • Devido ao tamanho igual das páginas e frames, a troca torna-se muito fácil.

  • A tabela de páginas requer espaço de memória extra, portanto, pode não ser boa para um sistema com pouca RAM.

Segmentação

A segmentação é uma técnica de gerenciamento de memória na qual cada trabalho é dividido em vários segmentos de tamanhos diferentes, um para cada módulo que contém peças que executam funções relacionadas. Cada segmento é, na verdade, um espaço de endereço lógico diferente do programa.

Quando um processo deve ser executado, sua segmentação correspondente é carregada na memória não contígua, embora cada segmento seja carregado em um bloco contíguo de memória disponível.

O gerenciamento de memória de segmentação funciona de maneira muito semelhante à paginação, mas aqui os segmentos são de comprimento variável, enquanto nas páginas de paginação são de tamanho fixo.

Um segmento de programa contém a função principal do programa, funções utilitárias, estruturas de dados e assim por diante. O sistema operacional mantém umsegment map tablepara cada processo e uma lista de blocos de memória livres junto com números de segmento, seu tamanho e localizações de memória correspondentes na memória principal. Para cada segmento, a tabela armazena o endereço inicial do segmento e o comprimento do segmento. Uma referência a um local de memória inclui um valor que identifica um segmento e um deslocamento.

Um computador pode endereçar mais memória do que a quantidade fisicamente instalada no sistema. Esta memória extra é realmente chamadavirtual memory e é uma seção de um disco rígido configurado para emular a RAM do computador.

A principal vantagem visível desse esquema é que os programas podem ser maiores do que a memória física. A memória virtual tem dois propósitos. Primeiro, ele nos permite estender o uso da memória física usando o disco. Em segundo lugar, permite-nos ter proteção de memória, porque cada endereço virtual é traduzido para um endereço físico.

A seguir estão as situações em que não é necessário que o programa inteiro seja carregado totalmente na memória principal.

  • As rotinas de tratamento de erros escritas pelo usuário são usadas apenas quando ocorre um erro nos dados ou computação.

  • Certas opções e recursos de um programa podem ser usados ​​raramente.

  • Muitas tabelas recebem uma quantidade fixa de espaço de endereço, embora apenas uma pequena quantidade da tabela seja realmente usada.

  • A capacidade de executar um programa que está apenas parcialmente na memória prejudicaria muitos benefícios.

  • Menor número de E / S seria necessário para carregar ou trocar cada programa do usuário na memória.

  • Um programa não seria mais limitado pela quantidade de memória física disponível.

  • Cada programa do usuário poderia ocupar menos memória física, mais programas poderiam ser executados ao mesmo tempo, com um aumento correspondente na utilização e rendimento da CPU.

Microprocessadores modernos para uso geral, uma unidade de gerenciamento de memória ou MMU, são integrados ao hardware. O trabalho do MMU é traduzir endereços virtuais em endereços físicos. Um exemplo básico é dado abaixo -

A memória virtual é comumente implementada por paginação por demanda. Também pode ser implementado em um sistema de segmentação. A segmentação de demanda também pode ser usada para fornecer memória virtual.

Paging por demanda

Um sistema de paginação sob demanda é bastante semelhante a um sistema de paginação com troca, onde os processos residem na memória secundária e as páginas são carregadas apenas sob demanda, não antecipadamente. Quando ocorre uma mudança de contexto, o sistema operacional não copia nenhuma das páginas do programa antigo para o disco ou qualquer uma das páginas do novo programa para a memória principal. Em vez disso, ele apenas começa a executar o novo programa após carregar a primeira página e buscar aquele páginas do programa à medida que são referenciadas.

Ao executar um programa, se o programa faz referência a uma página que não está disponível na memória principal porque foi trocada há pouco, o processador trata esta referência de memória inválida como um page fault e transfere o controle do programa para o sistema operacional para exigir a página de volta na memória.

Vantagens

A seguir estão as vantagens do Paging por demanda -

  • Grande memória virtual.
  • Uso mais eficiente da memória.
  • Não há limite para o grau de multiprogramação.

Desvantagens

  • O número de tabelas e a quantidade de sobrecarga do processador para lidar com interrupções de página são maiores do que no caso das técnicas de gerenciamento de páginas simples.

Algoritmo de substituição de página

Os algoritmos de substituição de página são as técnicas pelas quais um sistema operacional decide quais páginas de memória trocar e gravar no disco quando uma página de memória precisar ser alocada. A paginação ocorre sempre que ocorre uma falha de página e uma página livre não pode ser usada para fins de alocação de contabilidade para justificar que as páginas não estão disponíveis ou o número de páginas livres é menor do que o necessário.

Quando a página que foi selecionada para substituição e eliminada é referenciada novamente, ela deve ser lida do disco e isso requer a conclusão de E / S. Este processo determina a qualidade do algoritmo de substituição de página: quanto menor o tempo de espera pela entrada de páginas, melhor é o algoritmo.

Um algoritmo de substituição de página analisa as informações limitadas sobre o acesso às páginas fornecidas pelo hardware e tenta selecionar quais páginas devem ser substituídas para minimizar o número total de páginas perdidas, enquanto equilibra isso com os custos de armazenamento primário e tempo de processador do algoritmo em si. Existem muitos algoritmos de substituição de página diferentes. Avaliamos um algoritmo executando-o em uma string particular de referência de memória e calculando o número de falhas de página,

String de Referência

A string de referências de memória é chamada de string de referência. As strings de referência são geradas artificialmente ou rastreando um determinado sistema e registrando o endereço de cada referência de memória. A última escolha produz um grande número de dados, onde notamos duas coisas.

  • Para um determinado tamanho de página, precisamos considerar apenas o número da página, não o endereço completo.

  • Se tivermos uma referência a uma página p, então todas as referências imediatamente seguintes à página pnunca causará uma falha de página. A página p estará na memória após a primeira referência; as referências imediatamente a seguir não irão falhar.

  • Por exemplo, considere a seguinte sequência de endereços - 123.215.600,1234,76,96

  • Se o tamanho da página for 100, a string de referência será 1,2,6,12,0,0

Algoritmo primeiro a entrar, primeiro a sair (FIFO)

  • A página mais antiga da memória principal é aquela que será selecionada para substituição.

  • Fácil de implementar, mantenha uma lista, substitua as páginas do final e adicione novas páginas ao cabeçalho.

Algoritmo de página ideal

  • Um algoritmo de substituição de página ideal tem a taxa de falha de página mais baixa de todos os algoritmos. Existe um algoritmo de substituição de página ideal, denominado OPT ou MIN.

  • Substitua a página que não será usada por um longo período de tempo. Use o tempo em que uma página deve ser usada.

Algoritmo menos usado recentemente (LRU)

  • A página que não foi usada por muito tempo na memória principal é aquela que será selecionada para substituição.

  • Fácil de implementar, mantenha uma lista, substitua páginas olhando para trás no tempo.

Algoritmo de buffer de página

  • Para que um processo comece rapidamente, mantenha um pool de frames livres.
  • Na falha de página, selecione uma página a ser substituída.
  • Escreva a nova página no quadro do pool livre, marque a tabela de páginas e reinicie o processo.
  • Agora escreva a página suja fora do disco e coloque o quadro que contém a página substituída no pool livre.

Algoritmo menos usado (LFU)

  • A página com a menor contagem é aquela que será selecionada para substituição.

  • Esse algoritmo sofre com a situação em que uma página é usada intensamente durante a fase inicial de um processo, mas nunca é usada novamente.

Algoritmo usado com mais frequência (MFU)

  • Este algoritmo é baseado no argumento de que a página com a menor contagem provavelmente acabou de ser trazida e ainda não foi usada.

Uma das tarefas importantes de um sistema operacional é gerenciar vários dispositivos de E / S, incluindo mouse, teclado, touch pad, unidades de disco, adaptadores de vídeo, dispositivos USB, tela mapeada em bits, LED, conversor analógico-digital, ligado / interruptor de desligamento, conexões de rede, E / S de áudio, impressoras etc.

Um sistema de E / S é necessário para receber uma solicitação de E / S do aplicativo e enviá-la para o dispositivo físico, em seguida, pegar qualquer resposta que vier do dispositivo e enviá-la para o aplicativo. Os dispositivos I / O podem ser divididos em duas categorias -

  • Block devices- Um dispositivo de bloco é aquele com o qual o driver se comunica enviando blocos inteiros de dados. Por exemplo, discos rígidos, câmeras USB, disco na chave etc.

  • Character devices- Um dispositivo de caractere é aquele com o qual o driver se comunica enviando e recebendo caracteres únicos (bytes, octetos). Por exemplo, portas seriais, portas paralelas, placas de som, etc.

Controladores de dispositivo

Drivers de dispositivo são módulos de software que podem ser conectados a um sistema operacional para lidar com um dispositivo específico. O sistema operacional recebe ajuda de drivers de dispositivo para lidar com todos os dispositivos de E / S.

O Controlador de dispositivo funciona como uma interface entre um dispositivo e um driver de dispositivo. As unidades de E / S (teclado, mouse, impressora, etc.) geralmente consistem em um componente mecânico e um componente eletrônico, onde o componente eletrônico é chamado de controlador de dispositivo.

Sempre há um controlador de dispositivo e um driver de dispositivo para cada dispositivo para se comunicar com os sistemas operacionais. Um controlador de dispositivo pode ser capaz de lidar com vários dispositivos. Como interface, sua principal tarefa é converter o fluxo de bits serial em bloco de bytes, realizar a correção de erros conforme necessário.

Qualquer dispositivo conectado ao computador é conectado por um plugue e soquete, e o soquete é conectado a um controlador de dispositivo. A seguir está um modelo para conectar a CPU, memória, controladores e dispositivos de E / S onde a CPU e os controladores de dispositivo usam um barramento comum para comunicação.

E / S síncrona vs assíncrona

  • Synchronous I/O - Neste esquema, a execução da CPU aguarda enquanto o I / O prossegue

  • Asynchronous I/O - I / O prossegue simultaneamente com a execução da CPU

Comunicação para dispositivos de E / S

A CPU deve ter uma maneira de passar informações de e para um dispositivo de E / S. Existem três abordagens disponíveis para se comunicar com a CPU e o dispositivo.

  • E / S de instrução especial
  • E / S mapeada por memória
  • Acesso direto à memória (DMA)

E / S de instrução especial

Isso usa instruções da CPU que são feitas especificamente para controlar dispositivos de E / S. Essas instruções normalmente permitem que os dados sejam enviados a um dispositivo de E / S ou lidos de um dispositivo de E / S.

E / S mapeada por memória

Ao usar E / S mapeada em memória, o mesmo espaço de endereço é compartilhado pela memória e dispositivos de E / S. O dispositivo é conectado diretamente a determinados locais da memória principal para que o dispositivo de E / S possa transferir blocos de dados de / para a memória sem passar pela CPU.

Ao usar o IO mapeado em memória, o SO aloca o buffer na memória e informa o dispositivo de I / O para usar esse buffer para enviar dados à CPU. O dispositivo de E / S opera de forma assíncrona com a CPU, interrompe a CPU quando concluído.

A vantagem deste método é que cada instrução que pode acessar a memória pode ser usada para manipular um dispositivo de E / S. IO mapeado por memória é usado para a maioria dos dispositivos de I / O de alta velocidade, como discos e interfaces de comunicação.

Acesso direto à memória (DMA)

Dispositivos lentos, como teclados, irão gerar uma interrupção na CPU principal após cada byte ser transferido. Se um dispositivo rápido, como um disco, gerasse uma interrupção para cada byte, o sistema operacional gastaria a maior parte do tempo tratando dessas interrupções. Portanto, um computador típico usa hardware de acesso direto à memória (DMA) para reduzir essa sobrecarga.

Acesso direto à memória (DMA) significa que a CPU concede autoridade ao módulo de E / S para ler ou gravar na memória sem envolvimento. O próprio módulo DMA controla a troca de dados entre a memória principal e o dispositivo de E / S. A CPU está envolvida apenas no início e no final da transferência e é interrompida apenas após a transferência do bloco inteiro.

O acesso direto à memória precisa de um hardware especial denominado controlador DMA (DMAC) que gerencia as transferências de dados e controla o acesso ao barramento do sistema. Os controladores são programados com ponteiros de origem e destino (onde ler / escrever os dados), contadores para rastrear o número de bytes transferidos e configurações, que incluem E / S e tipos de memória, interrupções e estados para os ciclos da CPU.

O sistema operacional usa o hardware DMA da seguinte forma -

Degrau Descrição
1 O driver do dispositivo é instruído a transferir dados do disco para um endereço de buffer X.
2 O driver de dispositivo então instrui o controlador de disco a transferir dados para o buffer.
3 O controlador de disco inicia a transferência DMA.
4 O controlador de disco envia cada byte para o controlador DMA.
5 O controlador DMA transfere bytes para o buffer, aumenta o endereço de memória, diminui o contador C até que C se torne zero.
6 Quando C torna-se zero, o DMA interrompe a CPU para sinalizar a conclusão da transferência.

Polling vs Interrupts I / O

Um computador deve ter uma maneira de detectar a chegada de qualquer tipo de entrada. Isso pode acontecer de duas maneiras, conhecidas comopolling e interrupts. Ambas as técnicas permitem que o processador lide com eventos que podem ocorrer a qualquer momento e que não estão relacionados ao processo em execução no momento.

E / S de sondagem

O polling é a maneira mais simples de um dispositivo de E / S se comunicar com o processador. O processo de verificar periodicamente o status do dispositivo para ver se é hora da próxima operação de E / S é chamado de polling. O dispositivo de E / S simplesmente coloca as informações em um registrador de status e o processador deve vir e obter as informações.

Na maioria das vezes, os dispositivos não exigem atenção e, quando isso acontece, é necessário esperar até ser interrogado pela próxima vez pelo programa de votação. Este é um método ineficiente e muito do tempo do processador é desperdiçado em pesquisas desnecessárias.

Compare esse método com um professor perguntando continuamente a todos os alunos de uma classe, um após o outro, se eles precisam de ajuda. Obviamente, o método mais eficiente seria o aluno informar o professor sempre que precisar de ajuda.

Interrompe I / O

Um esquema alternativo para lidar com E / S é o método controlado por interrupção. Uma interrupção é um sinal para o microprocessador de um dispositivo que requer atenção.

Um controlador de dispositivo coloca um sinal de interrupção no barramento quando precisa da atenção da CPU quando a CPU recebe uma interrupção. Ele salva seu estado atual e invoca o manipulador de interrupção apropriado usando o vetor de interrupção (endereços de rotinas do sistema operacional para lidar com vários eventos). Depois de lidar com o dispositivo de interrupção, a CPU continua com sua tarefa original como se nunca tivesse sido interrompida.

O software de E / S é frequentemente organizado nas seguintes camadas -

  • User Level Libraries- Isso fornece uma interface simples para o programa do usuário realizar a entrada e saída. Por exemplo,stdio é uma biblioteca fornecida pelas linguagens de programação C e C ++.

  • Kernel Level Modules - Fornece driver de dispositivo para interagir com o controlador de dispositivo e módulos de E / S independentes de dispositivo usados ​​pelos drivers de dispositivo.

  • Hardware - Esta camada inclui o hardware real e o controlador de hardware que interagem com os drivers de dispositivo e dá vida ao hardware.

Um conceito chave no projeto de software de E / S é que ele deve ser independente de dispositivo, onde deve ser possível escrever programas que podem acessar qualquer dispositivo de E / S sem ter que especificar o dispositivo com antecedência. Por exemplo, um programa que lê um arquivo como entrada deve ser capaz de ler um arquivo em um disquete, em um disco rígido ou em um CD-ROM, sem ter que modificar o programa para cada dispositivo diferente.

Drivers de dispositivo

Drivers de dispositivo são módulos de software que podem ser conectados a um sistema operacional para lidar com um dispositivo específico. O sistema operacional recebe ajuda de drivers de dispositivo para lidar com todos os dispositivos de E / S. Os drivers de dispositivo encapsulam o código dependente do dispositivo e implementam uma interface padrão de forma que o código contenha leituras / gravações de registro específicas do dispositivo. O driver do dispositivo é geralmente escrito pelo fabricante do dispositivo e entregue junto com o dispositivo em um CD-ROM.

Um driver de dispositivo executa os seguintes trabalhos -

  • Para aceitar a solicitação do software independente do dispositivo acima.
  • Interaja com o controlador do dispositivo para obter e fornecer I / O e realizar o tratamento de erros necessário
  • Certificando-se de que a solicitação é executada com sucesso

O modo como um driver de dispositivo lida com uma solicitação é o seguinte: Suponha que uma solicitação chegue a ler um bloco N. Se o driver estiver ocioso no momento em que uma solicitação chega, ele começa a realizar a solicitação imediatamente. Caso contrário, se o driver já estiver ocupado com alguma outra solicitação, ele coloca a nova solicitação na fila de solicitações pendentes.

Manipuladores de interrupção

Um manipulador de interrupção, também conhecido como rotina de serviço de interrupção ou ISR, é um pedaço de software ou mais especificamente uma função de retorno de chamada em um sistema operacional ou mais especificamente em um driver de dispositivo, cuja execução é acionada pela recepção de uma interrupção.

Quando a interrupção acontece, o procedimento de interrupção faz tudo o que é necessário para lidar com a interrupção, atualiza as estruturas de dados e ativa o processo que estava aguardando a ocorrência de uma interrupção.

O mecanismo de interrupção aceita um endereço - um número que seleciona uma rotina / função de tratamento de interrupção específica de um pequeno conjunto. Na maioria das arquiteturas, esse endereço é um deslocamento armazenado em uma tabela chamada tabela de vetores de interrupção. Este vetor contém os endereços de memória de manipuladores de interrupção especializados.

Software de E / S independente de dispositivo

A função básica do software independente de dispositivo é realizar as funções de E / S que são comuns a todos os dispositivos e fornecer uma interface uniforme para o software de nível de usuário. Embora seja difícil escrever software totalmente independente de dispositivo, podemos escrever alguns módulos que são comuns a todos os dispositivos. A seguir está uma lista de funções de software de E / S independente de dispositivo -

  • Interface uniforme para drivers de dispositivo
  • Nomenclatura de dispositivos - Nomes mnemônicos mapeados para números de dispositivos principais e secundários
  • Proteção de dispositivo
  • Fornecendo um tamanho de bloco independente de dispositivo
  • Buffer porque os dados que saem de um dispositivo não podem ser armazenados no destino final.
  • Alocação de armazenamento em dispositivos de bloco
  • Alocação e liberação de dispositivos dedicados
  • Relatório de erros

Software de E / S do espaço do usuário

Estas são as bibliotecas que fornecem uma interface mais rica e simplificada para acessar a funcionalidade do kernel ou, em última análise, interativa com os drivers de dispositivo. A maior parte do software de E / S de nível de usuário consiste em procedimentos de biblioteca, com algumas exceções, como sistema de spool, que é uma maneira de lidar com dispositivos de E / S dedicados em um sistema de multiprogramação.

Bibliotecas de E / S (por exemplo, stdio) estão no espaço do usuário para fornecer uma interface para o SW de E / S independente de dispositivo residente do SO. Por exemplo, putchar (), getchar (), printf () e scanf () são exemplos de biblioteca de E / S de nível de usuário stdio disponível em programação C.

Subsistema de E / S do Kernel

O subsistema de E / S do kernel é responsável por fornecer muitos serviços relacionados a E / S. A seguir estão alguns dos serviços oferecidos.

  • Scheduling- O kernel agenda um conjunto de solicitações de E / S para determinar uma boa ordem de execução. Quando um aplicativo emite uma chamada de sistema de E / S de bloqueio, a solicitação é colocada na fila para esse dispositivo. O agendador de I / O do kernel reorganiza a ordem da fila para melhorar a eficiência geral do sistema e o tempo médio de resposta experimentado pelos aplicativos.

  • Buffering - Kernel I / O Subsystem mantém uma área de memória conhecida como bufferque armazena dados enquanto eles são transferidos entre dois dispositivos ou entre um dispositivo com uma operação de aplicativo. O armazenamento em buffer é feito para lidar com uma incompatibilidade de velocidade entre o produtor e o consumidor de um fluxo de dados ou para se adaptar entre dispositivos que têm tamanhos de transferência de dados diferentes.

  • Caching- Kernel mantém a memória cache, que é a região da memória rápida que contém cópias dos dados. O acesso à cópia em cache é mais eficiente do que o acesso ao original.

  • Spooling and Device Reservation- Um spool é um buffer que contém a saída de um dispositivo, como uma impressora, que não pode aceitar fluxos de dados intercalados. O sistema de spool copia os arquivos de spool enfileirados para a impressora, um de cada vez. Em alguns sistemas operacionais, o spool é gerenciado por um processo daemon do sistema. Em outros sistemas operacionais, ele é tratado por um thread no kernel.

  • Error Handling - Um sistema operacional que usa memória protegida pode proteger contra muitos tipos de erros de hardware e aplicativos.

Arquivo

Um arquivo é uma coleção nomeada de informações relacionadas que são gravadas no armazenamento secundário, como discos magnéticos, fitas magnéticas e discos ópticos. Em geral, um arquivo é uma sequência de bits, bytes, linhas ou registros cujo significado é definido pelo criador e usuário do arquivo.

Estrutura do Arquivo

Uma estrutura de arquivo deve estar de acordo com um formato necessário que o sistema operacional possa entender.

  • Um arquivo possui uma determinada estrutura definida de acordo com seu tipo.

  • Um arquivo de texto é uma sequência de caracteres organizados em linhas.

  • Um arquivo de origem é uma sequência de procedimentos e funções.

  • Um arquivo de objeto é uma sequência de bytes organizados em blocos que são compreensíveis pela máquina.

  • Quando o sistema operacional define diferentes estruturas de arquivo, ele também contém o código para oferecer suporte a essas estruturas de arquivo. Unix e MS-DOS suportam um número mínimo de estruturas de arquivos.

Tipo de arquivo

O tipo de arquivo refere-se à capacidade do sistema operacional de distinguir diferentes tipos de arquivo, como arquivos de texto, arquivos de origem e arquivos binários, etc. Muitos sistemas operacionais suportam muitos tipos de arquivos. Sistemas operacionais como MS-DOS e UNIX possuem os seguintes tipos de arquivos -

Arquivos comuns

  • Esses são os arquivos que contêm informações do usuário.
  • Podem ter texto, bases de dados ou programa executável.
  • O usuário pode aplicar várias operações em tais arquivos, como adicionar, modificar, excluir ou até mesmo remover o arquivo inteiro.

Arquivos de diretório

  • Esses arquivos contêm uma lista de nomes de arquivos e outras informações relacionadas a esses arquivos.

Arquivos especiais

  • Esses arquivos também são conhecidos como arquivos de dispositivo.
  • Esses arquivos representam dispositivos físicos como discos, terminais, impressoras, redes, unidade de fita, etc.

Esses arquivos são de dois tipos -

  • Character special files - os dados são tratados caractere por caractere, como no caso de terminais ou impressoras.

  • Block special files - os dados são tratados em blocos, como no caso de discos e fitas.

Mecanismos de acesso a arquivos

O mecanismo de acesso a arquivos refere-se à maneira como os registros de um arquivo podem ser acessados. Existem várias maneiras de acessar arquivos -

  • Acesso sequencial
  • Acesso direto / aleatório
  • Acesso sequencial indexado

Acesso sequencial

Acesso sequencial é aquele em que os registros são acessados ​​em alguma sequência, ou seja, as informações do arquivo são processadas em ordem, um registro após o outro. Este método de acesso é o mais primitivo. Exemplo: os compiladores geralmente acessam os arquivos dessa maneira.

Acesso direto / aleatório

  • Organização de arquivos de acesso aleatório fornece, acessando os registros diretamente.

  • Cada registro tem seu próprio endereço no arquivo com a ajuda do qual pode ser acessado diretamente para leitura ou escrita.

  • Os registros não precisam estar em nenhuma sequência dentro do arquivo e não precisam estar em locais adjacentes na mídia de armazenamento.

Acesso sequencial indexado

  • Este mecanismo é construído com base no acesso sequencial.
  • Um índice é criado para cada arquivo que contém ponteiros para vários blocos.
  • O índice é pesquisado sequencialmente e seu ponteiro é usado para acessar o arquivo diretamente.

Alocação de espaço

Os arquivos são espaços em disco alocados por sistema operacional. Os sistemas operacionais são implantados seguindo três maneiras principais de alocar espaço em disco para arquivos.

  • Alocação Contígua
  • Alocação vinculada
  • Alocação Indexada

Alocação Contígua

  • Cada arquivo ocupa um espaço de endereço contíguo no disco.
  • O endereço de disco atribuído está em ordem linear.
  • Fácil de implementar.
  • A fragmentação externa é um grande problema com esse tipo de técnica de alocação.

Alocação vinculada

  • Cada arquivo carrega uma lista de links para blocos de disco.
  • O diretório contém link / ponteiro para o primeiro bloco de um arquivo.
  • Sem fragmentação externa
  • Efetivamente usado em arquivo de acesso sequencial.
  • Ineficiente em caso de arquivo de acesso direto.

Alocação Indexada

  • Fornece soluções para problemas de alocação contígua e vinculada.
  • Um bloco de índice é criado com todos os ponteiros para arquivos.
  • Cada arquivo tem seu próprio bloco de índice que armazena os endereços do espaço em disco ocupado pelo arquivo.
  • O diretório contém os endereços dos blocos de índice de arquivos.

Segurança refere-se a fornecer um sistema de proteção aos recursos do sistema do computador, como CPU, memória, disco, programas de software e, mais importante, dados / informações armazenados no sistema do computador. Se um programa de computador for executado por um usuário não autorizado, ele poderá causar danos graves ao computador ou aos dados nele armazenados. Portanto, um sistema de computador deve ser protegido contra acesso não autorizado, acesso malicioso à memória do sistema, vírus, worms etc. Discutiremos os tópicos a seguir neste capítulo.

  • Authentication
  • Senhas de uso único
  • Ameaças do programa
  • Ameaças do sistema
  • Classificações de segurança de computador

Autenticação

A autenticação se refere à identificação de cada usuário do sistema e à associação dos programas em execução a esses usuários. É responsabilidade do Sistema Operacional criar um sistema de proteção que garanta que um usuário que está executando um determinado programa seja autêntico. Sistemas operacionais geralmente identificam / autenticam usuários usando as seguintes três maneiras -

  • Username / Password - O usuário precisa inserir um nome de usuário e senha registrados no sistema operacional para fazer o login no sistema.

  • User card/key - O usuário precisa perfurar o cartão no slot de cartão ou inserir a chave gerada pelo gerador de chave na opção fornecida pelo sistema operacional para fazer o login no sistema.

  • User attribute - fingerprint/ eye retina pattern/ signature - O usuário precisa passar seu atributo por meio do dispositivo de entrada designado usado pelo sistema operacional para fazer o login no sistema.

Senhas de uso único

As senhas de uso único fornecem segurança adicional junto com a autenticação normal. No sistema de Senha de uso único, uma senha exclusiva é exigida toda vez que o usuário tenta fazer o login no sistema. Depois que uma senha descartável é usada, ela não pode ser usada novamente. As senhas de uso único são implementadas de várias maneiras.

  • Random numbers- Os usuários recebem cartões com números impressos junto com os alfabetos correspondentes. O sistema pede números correspondentes a alguns alfabetos escolhidos aleatoriamente.

  • Secret key- O usuário recebe um dispositivo de hardware que pode criar uma id secreta mapeada com a id do usuário. O sistema pede por tal ID secreto que deve ser gerado sempre antes do login.

  • Network password - Alguns aplicativos comerciais enviam senhas de uso único ao usuário no celular / e-mail registrado, que devem ser inseridas antes do login.

Ameaças do programa

Os processos e o kernel do sistema operacional realizam a tarefa designada conforme as instruções. Se um programa de usuário fizer com que esses processos executem tarefas maliciosas, isso é conhecido comoProgram Threats. Um exemplo comum de ameaça de programa é um programa instalado em um computador que pode armazenar e enviar credenciais de usuário através da rede para algum hacker. A seguir está a lista de algumas ameaças de programas bem conhecidas.

  • Trojan Horse - Esse programa intercepta as credenciais de login do usuário e as armazena para enviar a usuários mal-intencionados que podem fazer login no computador posteriormente e acessar recursos do sistema.

  • Trap Door - Se um programa projetado para funcionar conforme necessário, tem uma falha de segurança em seu código e executa ações ilegais sem o conhecimento do usuário, então é chamado para ter um alçapão.

  • Logic Bomb- Bomba lógica é uma situação em que um programa se comporta mal apenas quando certas condições são atendidas, caso contrário, ele funciona como um programa genuíno. É mais difícil de detectar.

  • Virus- Os vírus, como o nome sugere, podem se replicar no sistema do computador. Eles são altamente perigosos e podem modificar / excluir arquivos do usuário, travar sistemas. Um vírus é geralmente um pequeno código embutido em um programa. Conforme o usuário acessa o programa, o vírus começa a ser incorporado em outros arquivos / programas e pode tornar o sistema inutilizável para o usuário

Ameaças do sistema

Ameaças do sistema referem-se ao uso indevido de serviços do sistema e conexões de rede para colocar o usuário em problemas. As ameaças do sistema podem ser usadas para lançar ameaças de programas em uma rede completa, chamadas de ataque de programas. As ameaças do sistema criam um ambiente em que os recursos do sistema operacional / arquivos do usuário são mal utilizados. A seguir está a lista de algumas ameaças de sistema bem conhecidas.

  • Worm- Worm é um processo que pode prejudicar o desempenho do sistema usando recursos do sistema a níveis extremos. Um processo de worm gera suas múltiplas cópias, onde cada cópia usa recursos do sistema, evita que todos os outros processos obtenham os recursos necessários. Os processos de worms podem até desligar uma rede inteira.

  • Port Scanning - A varredura de portas é um mecanismo ou meio pelo qual um hacker pode detectar vulnerabilidades do sistema para fazer um ataque ao sistema.

  • Denial of Service- Ataques de negação de serviço normalmente evitam que o usuário faça uso legítimo do sistema. Por exemplo, um usuário pode não conseguir usar a Internet se a negação de serviço atacar as configurações de conteúdo do navegador.

Classificações de segurança de computador

De acordo com os critérios de avaliação do Trusted Computer System do Departamento de Defesa dos Estados Unidos, há quatro classificações de segurança em sistemas de computador: A, B, C e D. Essas especificações são amplamente utilizadas para determinar e modelar a segurança de sistemas e soluções de segurança. A seguir está uma breve descrição de cada classificação.

SN Tipo de classificação e descrição
1

Type A

Mais alto nível. Usa especificações de projeto formais e técnicas de verificação. Concede um alto grau de garantia de segurança do processo.

2

Type B

Fornece sistema de proteção obrigatório. Possui todas as propriedades de um sistema de classe C2. Anexa um rótulo de sensibilidade a cada objeto. É de três tipos.

  • B1- Mantém a etiqueta de segurança de cada objeto do sistema. O rótulo é usado para tomar decisões de controle de acesso.

  • B2 - Estende os rótulos de sensibilidade para cada recurso do sistema, como objetos de armazenamento, oferece suporte a canais secretos e auditoria de eventos.

  • B3 - Permite a criação de listas ou grupos de usuários para controle de acesso para conceder acesso ou revogar acesso a um determinado objeto nomeado.

3

Type C

Fornece proteção e responsabilidade do usuário usando recursos de auditoria. É de dois tipos.

  • C1- Incorpora controles para que os usuários possam proteger suas informações privadas e impedir que outros usuários leiam / excluam acidentalmente seus dados. As versões do UNIX são principalmente da classe Cl.

  • C2 - Adiciona um controle de acesso de nível individual aos recursos de um sistema de nível de Cl.

4

Type D

Nível mais baixo. Proteção mínima. MS-DOS, Window 3.1 se enquadram nesta categoria.

Linux é uma das versões populares do sistema operacional UNIX. É open source, pois seu código-fonte está disponível gratuitamente. É de uso gratuito. O Linux foi projetado considerando a compatibilidade do UNIX. Sua lista de funcionalidades é bastante semelhante à do UNIX.

Componentes do sistema Linux

O sistema operacional Linux tem basicamente três componentes

  • Kernel- Kernel é a parte central do Linux. Ele é responsável por todas as principais atividades deste sistema operacional. Ele consiste em vários módulos e interage diretamente com o hardware subjacente. O kernel fornece a abstração necessária para ocultar detalhes de hardware de baixo nível para o sistema ou programas de aplicativos.

  • System Library- Bibliotecas do sistema são funções ou programas especiais que usam os programas aplicativos ou utilitários do sistema que acessam os recursos do Kernel. Essas bibliotecas implementam a maioria das funcionalidades do sistema operacional e não requerem direitos de acesso ao código do módulo do kernel.

  • System Utility - Os programas utilitários do sistema são responsáveis ​​por realizar tarefas especializadas de nível individual.

Modo Kernel vs Modo de Usuário

O código do componente do kernel é executado em um modo privilegiado especial chamado kernel modecom acesso total a todos os recursos do computador. Este código representa um único processo, é executado em um único espaço de endereço e não requer nenhuma troca de contexto e, portanto, é muito eficiente e rápido. Kernel executa cada processo e fornece serviços de sistema para processos, fornece acesso protegido ao hardware para processos.

O código de suporte que não é necessário para ser executado no modo kernel está na Biblioteca do sistema. Os programas do usuário e outros programas do sistema funcionam emUser Modeque não tem acesso ao hardware do sistema e ao código do kernel. Os programas / utilitários do usuário usam as bibliotecas do sistema para acessar as funções do Kernel para obter as tarefas de baixo nível do sistema.

Recursos básicos

A seguir estão alguns dos recursos importantes do sistema operacional Linux.

  • Portable- Portabilidade significa que o software pode funcionar em diferentes tipos de hardware da mesma maneira. O kernel do Linux e os programas de aplicativos suportam sua instalação em qualquer tipo de plataforma de hardware.

  • Open Source- O código-fonte do Linux está disponível gratuitamente e é um projeto de desenvolvimento baseado na comunidade. Várias equipes trabalham em colaboração para aprimorar a capacidade do sistema operacional Linux e ele está em constante evolução.

  • Multi-User - O Linux é um sistema multiusuário, o que significa que vários usuários podem acessar recursos do sistema como memória / memória RAM / programas de aplicativos ao mesmo tempo.

  • Multiprogramming - Linux é um sistema de multiprogramação, o que significa que vários aplicativos podem ser executados ao mesmo tempo.

  • Hierarchical File System - O Linux fornece uma estrutura de arquivos padrão na qual os arquivos do sistema / arquivos do usuário são organizados.

  • Shell- O Linux fornece um programa interpretador especial que pode ser usado para executar comandos do sistema operacional. Ele pode ser usado para fazer vários tipos de operações, chamar programas de aplicativos. etc.

  • Security - O Linux fornece segurança ao usuário usando recursos de autenticação como proteção por senha / acesso controlado a arquivos específicos / criptografia de dados.

Arquitetura

A ilustração a seguir mostra a arquitetura de um sistema Linux -

A arquitetura de um sistema Linux consiste nas seguintes camadas -

  • Hardware layer - O hardware consiste em todos os dispositivos periféricos (RAM / HDD / CPU etc).

  • Kernel - É o componente central do Sistema Operacional, interage diretamente com o hardware, fornece serviços de baixo nível aos componentes da camada superior.

  • Shell- Uma interface para o kernel, ocultando a complexidade das funções do kernel dos usuários. O shell recebe comandos do usuário e executa as funções do kernel.

  • Utilities - Programas utilitários que fornecem ao usuário a maioria das funcionalidades de um sistema operacional.