Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Elementos de Software, Resumos de Sistemas Operacionais

Nesse resumo, abordaremos de forma abrangente os principais aspectos relacionados a elementos de softwares, também processos e threads, escalonamento, gerenciamento de memória e gerenciamento de arquivos em sistemas operacionais. Inicialmente, discutiremos Processos e Threads, diferenciando-os quanto à natureza e contexto de execução, além de explorar os métodos de comunicação e sincronização entre eles, como pipes e semáforos. Analisaremos o Escalonamento de processos/threads, detalhando os principais algoritmos de escalonamento, como FIFO, Round Robin e escalonamento por prioridade, e discutindo critérios de desempenho. Abordaremos o Gerenciamento de Memória, explicando o conceito de memória virtual e suas técnicas, como paginação e segmentação. E também, exploraremos o Gerenciamento de Arquivos, discutindo as estruturas e tipos de sistemas de arquivos, como FAT e NTFS, bem como as operações básicas de arquivos, como criação, leitura, escrita e exclusão, gerenciamento de diretórios

Tipologia: Resumos

2024

À venda por 17/07/2024

fernanda-ester-1
fernanda-ester-1 🇧🇷

2 documentos

1 / 23

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
1
Sistemas Operacionais
Elementos de Software para Sistemas Operacionais
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17

Pré-visualização parcial do texto

Baixe Elementos de Software e outras Resumos em PDF para Sistemas Operacionais, somente na Docsity!

Sistemas Operacionais

Elementos de Software para Sistemas Operacionais

Sumário

  • Resumo:
  • Elementos de Software para Sistemas Operacionais
  • Escalonamento de Processos/Threads:
  • Gerenciamento de Memória:
  • Gerenciamento de Arquivos:
  • Operações de Arquivos:
  • Referências:

Elementos de Software para Sistemas Operacionais

1. Processos e Threads:

Um processo, nos termos mais simples, é um programa em execução. Um ou mais threads são executados no contexto do processo. Um thread é a unidade básica para a qual o sistema operacional aloca o tempo do processador. O processo é controlado pelo sistema operacional tanto o tempo de processador que ele tem à disposição quanto à memória disponível (que pode ir sendo solicitada pelo processo). Além, é claro, de permissões de acesso a outros recursos que ficam vinculados ao processo como um todo. Um processo tem um espaço de endereçamento de memória virtual só para ele. É como se ele rodasse sozinho no computador. Claro que isso não ocorre na realidade, mas ele se comporta como se fosse. Mas isso é outro assunto. O mesmo executável pode rodar em vários processos

Thread:

A/O thread se assemelha ao processo porque ele tem uma nova linha de execução (e tudo que está relacionado a isto) e o sistema operacional o trata de forma igual ao processo para alocação de tempo de processamento. Mas em termos de memória é responsabilidade da aplicação controlar o acesso compartilhado por todo o processo.

É comum que as aplicações possuam uma stack para cada thread, mas apenas um (já vi casos de ter mais que um) espaço de heap para todo processo. Por isso costuma-se dizer que é complicado programar com threads, compartilhar estado é difícil. Threads estão vinculadas ao processo, até porque o processo principal em si não deixa de ser uma thread. Algumas aplicações possuem um controle próprio de threads internas não controladas pelo processador/sistema operacional. Isso tem algumas vantagens (principalmente evitar troca de contexto do sistema operacional que é algo relativamente caro) e desvantagens (principalmente não podem usar outros processadores). Costumam ser chamadas de soft, light ou green threads.

- Diferença entre Processos e Threads: Comparação entre a natureza dos processos e threads, incluindo contexto de execução e recursos compartilhados. Qual é a diferença entre thread e processo? Um processo é uma sequência de instruções que corresponde a um software ativo. Cada processo ocupa um espaço individual de memória que contém os dados necessários para a sua execução. Um software pode gerar mais de um processo, com todos eles sendo vinculados a um processo principal. Já um thread é um segmento de um processo, como se formasse uma subtarefa. Nos sistemas operacionais convencionais, um processo sempre tem um ou mais threads. Essa abordagem melhora o aproveitamento de recursos da CPU e otimiza o fluxo de execução de instruções, dando mais eficiência à operação.

Semáforos: Em modo de exclusividade o semáforo apenas permite um utilizador do recurso. A parte do código do processo delimitada pela ativação do semáforo e sua libertação denomina-se secção crítica. Esta deverá ser o mais pequena e rápida possível, a fim de minimizar o tempo de espera dos processos concorrentes. Este mecanismo é bloqueante, em oposição aos sinais. Um dos primeiros mecanismos de comunicação interprocessos disponíveis em sistemas UNIX. • São interrupções de software que notificam ao processo que um evento ocorreu, são utilizados pelo núcleo. Permitem somente o envio de uma palavra de dados (código do sinal (1 a 64)) para outros processos. Não permitem que processos especifiquem dados para trocar com outros processos. Dependem do SO e das interrupções geradas por software suportadas pelo processador do sistema. Quando ocorre um sinal, o SO determina qual processo deve receber o sinal e como esse processo responderá ao sinal. Quando sinais são gerados Criados pelo núcleo em resposta a interrupções e exceções, os sinais são enviados a um processo ou thread. Em consequência da execução de uma instrução (como falha de segmentação) Em um outro processo (como quando um processo encerra outro) ou em um evento assíncrono.

Escalonamento de Processos/Threads: O escalonamento de processos ou agendador de tarefas (em inglês scheduling) é uma atividade organizacional feita pelo escalonador (scheduler) da CPU ou de um sistema distribuído, possibilitando executar os processos mais viáveis e concorrentes, priorizando determinados tipos de processos, como os de I/O Bound e os CPU Bound. O escalonador de processo é um processo que deve ser executado quando da mudança de contexto (troca de processo), ao passo que ele escolhe o processo que será executado pela CPU, sendo o escalonamento realizado com o auxílio do hardware. São utilizados algoritmos de escalonamento para determinar qual processo será executado em determinado momento e por quanto tempo. O escalonador de processos de 2 níveis escolhe o processo que tem mais prioridade e menos tempo e coloca-o na memória principal, ficando os outros alocados em disco; com essa execução o processador evita ficar ocioso. O escalonador deve ainda se preocupar com a eficiência da CPU, pois o chaveamento de processos é complexo e custoso, uma vez que ele afeta o desempenho do sistema e por sua vez a satisfação do usuário.

O método run() termina Em sistemas com time-slicing, a fatia de tempo acabou para o thread

  • Algoritmos de Escalonamento: Descrição de algoritmos como FIFO (First In, First Out), Round Robin, Prioridade, e Filas Múltiplas.

Fifo:

É um algoritmo de escalonamento para estruturas de dados do tipo fila. Apresenta o seguinte critério: o primeiro elemento a ser retirado é o primeiro que tiver sido inserido, é um algoritmo de escalonamento não preemptivo que entrega a CPU os processos pela ordem de chegada. Ele executa o processo como um todo do inicio ao fim não interrompendo o processo executado até ser finalizado, então quando um novo processo chega e existe um ainda em execução ele vai para uma fila de espera. Esta fila de espera nada mais é do que uma fila que organiza os processos que chegam até eles serem atendidos pela CPU.[3]

Round Robin:

O algoritmo de escalonamento Round-Robin é um dos mais antigos e simples algoritmos, além de ser totalmente imune a problemas de starvation que são tarefas que nunca são executadas em função de ter prioridade inferior as demais. É usado em projetos de sistemas operacionais multitarefa, e foi projetado especialmente para sistemas time-sharing (tempo compartilhado), pois este algoritmo depende de um temporizador (Timer).

Funcionamento:

O funcionamento que determina o período de tempo entre cada sinal de interrupção. Todos os processos são armazenados em uma fila circular. O agendamento round-robin geralmente emprega tempo compartilhado, dando a cada tarefa um tempo definido chamado quantum. A tarefa é interrompida se esgotado o quantum e retomará de onde parou no próximo agendamento. Sem o tempo compartilhado, tarefas grandes poderiam ser favorecidas em detrimento de tarefas menores. Exemplo: Se o quantum é 100 milisegundos e a tarefa leva 250 milisegundos para completar, o agendamento round-robin suspenderá a tarefa após os primeiros 100 milisegundos e dara a outra tarefa da fila, o mesmo tempo. Essa tarefa sera executada portanto após 3 agendamentos a saber (100 ms + 100 ms + 50 ms). A interrupção da tarefa é conhecida como preempção. Tarefa1 = Tempo de execução igual a 250 ms (quantum 100 ms).

  1. Primeiro agendamento = excecuta tarefa durante 100 ms.
  2. Segundo agendamento = mais 100 ms de execução da tarefa.
  3. Terceiro agendamento = 100 ms, mas a tarefa termina após os primeiros 50 ms.
  4. Total de tempo que a CPU levou para a tarefa1 = 250 mS Um melhoramento desse agendamento é dividir todos os processos em números iguais de frações de tempo e proporcionais ao tamanho da tarefa, assim todos os processos terminam ao mesmo tempo

anteriores. Ex: quando o sistema percebe que um processo efetua muita E/S, o escalonador aumenta sua prioridade (operações de E/S são realizadas independentemente da UCP, pois o processo faz uma chamada para o SO e fica bloqueado e enquanto isso a UCP pode estar alocada a outro processo que efetua cálculos

Filas múltiplas:

Filas Múltiplas: devemos estabelecer classes de prioridades. Os processos de classes mais altas são escolhidos para execução mais freqüentemente que os de classe mais baixas (recebem um número maior de quanta para processamento). Os processos da classe mais alta existente recebem 1 quantum, a classe abaixo recebe 2, a outra 4 e assim sucessivamente na potência de 2. Quando o processo utiliza todos os quanta que recebeu, ele é abaixado de uma classe (fazendo com que seja escolhido menos freqüentemente, mas execute durante mais tempo). Ex: num processo que necessita de 100 quanta para executar, teremos execuções de 1, 2, 4, 8, 16, 32, 37 (totalizando 100), isto é, ele é selecionado para execução 7 vezes (7 chaveamentos para este processo). Se fosse no método Round-Robin ele seria selecionado 100 vezes até acabar. Surgiu um inconveniente: se um processo começa com grande quantidade de cálculos, mas depois se torna interativo (comunicação com o usuário), teríamos um tempo de resposta ruim. Para eliminar este problema, foi implementado mais um método que seria o seguinte: cada vez que um é teclado no terminal de um processo, este processo é transferido para a classe de prioridade mais alta (pois se tornou interativo). Mas depois um usuário descobriu que durante a execução de um processo grande, bastava teclar no terminal aleatoriamente para ter o tempo de execução melhorado. OBS: As estratégias 1, 2 e 3 são úteis para sistemas de time-sharing.

Gerenciamento de Memória: O Gerenciamento de Memória é uma função crítica do sistema operacional que permite que vários programas e processos sejam executados simultaneamente em um computador. Ele controla a alocação e desalocação de memória, garantindo que cada processo tenha acesso apenas à quantidade necessária de memória para sua execução. O Gerenciamento de Memória é responsável por dividir a memória disponível em diferentes áreas, como a memória do kernel e a memória do usuário. Ele também gerencia a memória virtual, que é uma extensão da memória física disponível no disco rígido. Isso permite que os programas acessem mais memória do que realmente está disponível fisicamente.

- Memória Virtual: Conceitos de paginação, segmentação Também conhecida como arquivos de paginação, a memória virtual consiste em um espaço que é reservado no momento em que o sistema operacional é instalado em um computador. Essa ação independe do fato do SO ser Linux ou Windows. A memória virtual é importante porque, assim que o SO percebe que a memória RAM está sem espaço, ele passa a executar os programas nela. Ou seja, a memória virtual pode ser considerada uma reserva da memória RAM. Dessa forma, ela estende a quantidade de memória disponível para dados temporários. Estes costumam ser usados pelos programas em execução. Com isso, o usuário não precisa realizar upgrades de hardware para usar vários aplicativos simultaneamente.

Em termos de execução, cada uma dessas secções vai ocupar um segmento da memória. Gerenciamento de Arquivos: Gerenciador de arquivos fornece uma maneira simples e integrada de gerenciar arquivos e aplicativos. É possível usar o gerenciador de arquivos para executar as seguintes ações:

  • Criar pastas e documentos
  • Exibir arquivos e pastas
  • Pesquisar e gerenciar arquivos
  • Executar scripts e iniciar aplicativos
  • Personalizar a aparência de arquivos e pastas
  • Abrir locais especiais no computador
  • Gravar dados em um CD ou DVD
  • Instalar e remover fontes O gerenciador de arquivo gerencia a área de trabalho. A área de trabalho fica atrás de todos os itens visíveis na tela. Todo usuário possui uma pasta Home, que contém todos os arquivos relacionados ao usuário. A área de trabalho contém ícones especiais que facilitam o acesso à pasta Home do usuário e à Lixeira, e também a mídias removíveis, cmo disquetes, CDs e unidades flash USB.

O gerenciador de arquivos fornece dois modos nos quais é possível interagir com o sistema de arquivos. Você pode escolher o modo no qual o gerenciador de arquivos deverá ser usado selecionando (ou cancelando a seleção) de Always Open In Browser Windows (Sempre abrir em janelas de navegador) na guia Behavior (Comportamento) da caixa de diálogo de preferências do gerenciador de arquivos.

- Sistemas de Arquivos: Estrutura e tipos de sistemas de

arquivos, como FAT, e NTFS

Um sistema de arquivos é uma estrutura usada por um sistema operacional para organizar e gerenciar arquivos em um dispositivo de armazenamento, como um disco rígido, unidade de estado sólido (SSD) ou pendrive. Ele define como os dados são armazenados, acessados e organizados no dispositivo de armazenamento. Diferentes sistemas de arquivos têm caraterísticas variáveis e frequentemente são específicos para determinados sistemas operacionais ou dispositivos. Aqui estão alguns dos sistemas de arquivos comuns e seus prós e contras. FAT: FAT é um dos sistemas de arquivos mais antigos e mais simples. Foi inicialmente desenvolvido para MS-DOS e ainda é usado em muitos dispositivos de armazenamento removíveis. As duas principais versões deste sistema são FAT16 e FAT32. FAT usa uma tabela de alocação de arquivos para acompanhar as localizações de arquivos no disco. No entanto, ele não possui alguns recursos avançados, como permissões de arquivos e journaling, tornando-o menos adequado para sistemas operacionais modernos. O FAT 16 foi introduzido em 1987 com DOS 3.31, enquanto o FAT32 foi introduzido com o Windows 95 OSR2 (MS-DOS 7.1) em 1996.

NTFS (Sistema de Arquivos de Nova Tecnologia)

NTFS é o sistema de arquivos padrão usado pelos sistemas operacionais baseados no Windows NT, começando em 1993 com o Windows NT 3.1, até e incluindo o Windows 11. Ele oferece recursos avançados, como permissões de arquivos, criptografia, compactação e journaling. NTFS suporta grandes tamanhos de arquivo e partição, tornando-o adequado para dispositivos de armazenamento modernos. No entanto, ele tem compatibilidade limitada com sistemas operacionais que não são do Windows. Vantagens: Segurança e permissões: NTFS fornece um modelo de segurança sólido com permissões de nível de arquivo. Ele permite que você defina permissões para arquivos e pastas individuais, controlando os direitos de acesso para usuários e grupos. Suporte TRIM em unidades de estado sólido (SSDs): TRIM informa o drive sobre dados não utilizados, o que permite que o SSD apague e prepare o espaço para futuras gravações. TRIM é ativado por padrão, quando o sistema de arquivos NTFS é escolhido para manter seu desempenho. Desvantagens: Erros de disco e reparos: Embora o NTFS seja projetado para ser confiável, erros de disco ainda podem ocorrer. Ao encontrar erros de disco, os reparos NTFS podem ser demorados e podem exigir ferramentas especiais.

Operações de Arquivos: As operações básicas realizadas sobre um arquivo são abertura, leitura, escrita e fechamento. A abertura de arquivos corresponde à ação de se associar o arquivo declarado no programa com o arquivo físico. O primeiro registro do arquivo fica disponível para leitura através do seguinte comando: reset(nome-do-arquivo); Caso o arquivo já exista, para começar a escrever novamente no arquivo, ignorando-se os registros anteriores, utiliza-se o seguinte comando: rewrite(nome-do-arquivo); O nome-do-arquivo é o identificador do arquivo no programa. Para se fazer uma associação desta identificação interna com a identificação externa, usa-se o comando assign, cuja forma é: assign(nome-do-arquivo,'nome-externo'); nome-externo é o nome pelo qual o arquivo é conhecido externamente ao programa. O comando assign deve anteceder a abertura do arquivo e nunca deve ser utilizado quando o arquivo já estiver sendo manipulado. O fechamento do arquivo desvincula o arquivo do programa, atualizando as informações do arquivo no ambiente do sistema operacional. Para se fechar um arquivo, usa-se o comando: close(nome-do-arquivo);