Características Linux - CentOS

Documentos relacionados
Prof. Kleber R. Rovai

Sistemas Operacionais: Escalonamento de processos

Organização e Arquitetura de Computadores I

Memória virtual. Sistemas de Computação

Fundamentos de Sistemas Operacionais de Arquitetura Aberta. CST em Redes de Computadores

Gerência de memória III

Gerenciamento de Memória

Notas da Aula 7 - Fundamentos de Sistemas Operacionais

Gerência do Processador. Adão de Melo Neto

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)

Informática Sistemas Operacionais Aula 5. Cleverton Hentz

Sistemas Operacionais. Rodrigo Rubira Branco

Sistemas Distribuídos Capítulo 3 - Aula 3

Introdução aos Sistemas Operacionais

16/8/2010. A arquitetura de um sistema computacional representa o modelo da organização e funcionamento de um sistema de processamento

FACULDADE DE TECNOLOGIA SENAC GOIÁS Gestão da Tecnologia da Informação. Daniel Augusto, Rodrigo Damasceno, Andrey Castro LINUX CENTOS

Exercícios Cap I. 1.1, 1.2, 1.3 (somente letras (a), (b) e (c)) , 1.8 e 1.12 IC - UFF

Sistemas Operacionais. Escalonamento de Processo. Prof. Dr. Márcio Andrey Teixeira

Microcontrolador Assembly UTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Prof. Leonardo Augusto Casillo

Disciplina: Arquitetura de Computadores

ATIVIDADE EXTRA COMPONENTE CURRICULAR (AEC)

Arquitetura e Organização de Computadores

Sistemas Operacionais II. Prof. Gleison Batista de Sousa Aula 01

Modelagem Analítica. Profa. Jussara M. Almeida 1 o Semestre de 2011

Sincronização e Comunicação entre Processos. Adão de Melo Neto

4.3 - DMA & Chipset. CEFET-RS Curso de Eletrônica. Profs. Roberta Nobre & Sandro Silva. e

Gestão de memória - Memory Management Unit (MMU)

Aula 4 TECNOLOGIA EM JOGOS DIGITAIS JOGOS MASSIVOS DISTRIBUÍDOS. Marcelo Henrique dos Santos

Organização e Arquitetura de Computadores. Leslier S. Corrêa

Introdução à Ciência da Computação

Introdução a Tecnologia da Informação

4. Modelo de Programação do DLX Introdução

Informática I. Aula Aula 19-20/06/06 1

Sistemas Operativos. Um conjunto de rotinas de software que. virtualizando-o. diversos como o sistema de ficheiros e.

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

Sistemas Operacionais

3. Engenharia dos requisitos de software

Sistemas Operacionais Aula 12: Gerência de Memória. Ezequiel R. Zorzal

Tipos Abstratos de Dados. Estrutura de Dados

Introdução a Sistemas Operacionais. Carlos Eduardo Ba8sta

Curso: Banco de Dados I. Conceitos Iniciais

2ª Lista de Exercícios de Arquitetura de Computadores

DOCUMENTO DE REGRAS DE NEGÓCIO

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

Memória virtual. Sistemas Segmentados

Guia do Processo de Teste Metodologia Celepar

CAPA... 1 ÍNDICE... 2 BOAS VINDAS... 3 APRESENTAÇÃO... 4 CONCEITO... 4 INSTALAÇÃO DO APLICATIVO... 5 ACESSANDO O SISTEMA... 6

Sistemas Operacionais. Rodrigo Rubira Branco

William Stallings Arquitetura e Organização de Computadores 8 a Edição

LISTA DE EXERCÍCIOS 02

O que é um sistema distribuído?

Professor: Vlademir de Oliveira Disciplina: Microcontroladores e DSP. Memórias de Dados e de Programa

Comandos TOP, PS e PSTREE

S12 - Software e Engenharia de Software

Professor Léo Matos TI para Concursos

Redes wireless PRO. WiseFi. Software de gerenciamento centralizado. Características

Hierarquia de Memória

Sistemas Operacionais Processos e Threads

Proteção. Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa. Fernando Ramos, Nuno Neves, Sistemas Operativos,

INSTALANDO E CONFIGURANDO O WINDOWS SERVER 2012

Instalando o CENTOS 6.6 Minimal

AULA 14 - Memória Virtual

Processos. Adão de Melo Neto

Introdução à Computação: Máquinas Multiníveis

Estrutura e Funcionamento dos Computadores (Conceitos Básicos)

SO - Conceitos Básicos. Introdução ao Computador 2010/01 Renan Manola

AULA: Introdução à Informática I

PROGRAMAÇÃO I. Introdução

Os computadores ditigais podem ser classificados em 5 grupos distintos:

Tribunal Superior Eleitoral

Estudo do Ambiente de Programação Arduino Software (IDE) com Intel Galileo Gen2. Apostila de acompanhamento para o aluno.

Na segunda aula vamos falar sobre o Processador, funcionamento e seus tipos.

Sistemas de Troca de Mensagens

FACULDADE PITÁGORAS PRONATEC

Projeto Físico e Lógico de Redes de Processamento. Kleber A. Ribeiro

Memória Interna. Prof. Leonardo Barreto Campos 1

COMPUTADORES PC 20/9/2010 CRONOGRAMA INFORMÁTICA PREF. MUNICIPAL DE JAGUARÃO - RS O COMPUTADOR, INDEPENDENTE DO TIPO: MAINFRAME NOTEBOOK PALMTOP

Programação Concorrente Processos e Threads

Manual do Professor AVA - Moodle/Unesp (versão 3.0) Grupos e agrupamentos

Estudo de Caso 2: Windows Vista

Transcrição:

FACULDADE DE TECNOLOGIA SENAC GOIÁS Sistemas Operacionais Leandro Soares, Rodrigo Mascarenhas, Pedro Henrique, Jonatas Edward Características Linux - CentOS Lucília Ribeiro GOIÂNIA, 2015

Leandro Soares, Rodrigo Mascarenhas, Pedro Henrique, Jonatas Edward Características Linux - CentOS Relatório apresentado como requisito parcial para obtenção de aprovação na disciplina Sistemas Operacionais, no Curso de Gestão da Tecnologia da Informação, na Faculdade de Tecnologia Senac Goiás. Lucília Ribeiro GOIÂNIA, 2015 2

RESUMO Este trabalho apresenta as características exigíveis para a apresentação dos relatórios nas disciplinas ministradas pela Lucília. O objetivo e disponibilizar aos alunos um modelo de apresentação de relatório te cnico-científico para ser utilizado nestas disciplinas. Omitiram-se alguns elementos opcionais descritos nas normas da ABNT, bem como alguns itens mais específicos, simplificando-o. 3

SUMÁRIO 1 INTRODUÇÃO 2 OBJETIVO 3 PROCESSOS LINUX 3.1 Implementação de processos no Linux 3.2 Threads no Linux 3.3 Escalonamento em Linux 3.4 Gerência de Memória 3.5 Sistema de arquivos do Linux 4 RESULTADOS 5 CONCLUSÃO 6 REFERENCIAS 4

1 INTRODUÇÃO O CentOS é uma distribuição Linux Enterprise derivada dos códigos fonte disponibilizados pela Red Hat (empresa que fornece o RHEL, Red Hat Enterprise Linux) e mantida pelo CentOS Project. CentOS proporciona um grande acesso aos softwares padrão da indústria, incluindo total compatibilidade com os pacotes de softwares preparados especificamente para os sistemas da Red Hat Enterprise Linux. Isso lhe dá o mesmo nível de segurança e suporte, através de updates, que outras soluções Linux Enterprise, porém sem custo. Suporta tanto ambientes de servidores para aplicações de missão crítica quanto ambientes de estações de trabalho e ainda possui uma versão Live CD. Escolhemos CentOS por possui varias vantagens: por ter uma comunidade activa e crescente, um rápido desenvolvimento e teste de pacotes, uma extensa rede para downloads, desenvolvedores acessíveis, múltiplos canais de suporte incluindo suporte em português e suporte comercial através de parceiros. 2 OBJETIVO A escolha do Sistema Operacional Linux foi feita pelo melhor atendimento aos servidores, e pontos positivos na área da segurança, dos métodos de tratamento dos processos e sua gerencia de memória. 3 PROCESSOS LINUX O Linux é um sistema multiprogramado, de modo que múltiplos processos independentes podem executar ao mesmo tempo. Nele para cada usuário é possível haver centenas ou talvez milhares de processos executando. No Linux os processos são criados com a chamada ao sistema fork que cria uma cópia exata do processo original. Pai é o nome dado ao processo criador. O novo processo é chamado de processo filho. Cada um tem sua própria imagem da memória privada. Se ocorrer qualquer alteração em suas variáveis após o processo pai criado, essas não serão visíveis pelo processo filho ou vice e versa. 3.1 Implementação de processos no Linux Cada processo apresenta uma parte do usuário, que executa o programa do usuário. No entanto, quando um de seus threads faz uma chamada ao sistema, ele troca o modo de execução e passa a executar no contexto do núcleo, com um diferente mapa da memória e acesso a todos os recursos da máquina. Embora continue sendo o mesmo thread, agora ele tem mais poder e também sua própria pilha e seu próprio contador de programa no modo núcleo. Esses recursos são importantes porque uma chamada ao sistema pode ser bloqueada até que uma operação de disco se complete, por exemplo. O contador de programa e os registradores são então salvos, de modo que o thread possa ser reiniciado no modo núcleo posteriormente. O núcleo mantém duas estruturas de dados principais relacionadas aos processos: a tabela de processos e a estrutura do usuário. A tabela de processos permanece residente todo o 5

tempo e contém as informações necessárias a todos os processos, ainda que eles não estejam presentes atualmente na memória. A estrutura do usuário é paginada ou trocada para o disco quando o processo associado não está na memória, pois desse modo não há desperdício de memória com informações que não estejam sendo necessárias. As informações contidas na tabela de processos se enquadram nas seguintes categorias: Parâmetros de escalonamento. Prioridade do processo, quantidade de tempo de CPU consumida recentemente, quantidade de tempo gasto dormindo recentemente. Juntos, esses parâmetros são usados para determinar qual processo será o próximo a executar. Imagem da memória. Ponteiros para os segmentos de código, dados e pilhas, ou, caso seja usada à paginação, ponteiros para suas tabelas de páginas. Se o segmento de texto é compartilhado, o ponteiro do código aponta para a tabela de código compartilhada. Quando um processo não está localizado na memória, informações sobre como encontrar suas partes no disco também estão aqui na imagem da memória. Sinais. Mascaras que mostram quais sinais estão sendo ignorados, quais estão sendo capturados, quais estão sendo bloqueados e quais estão em procedimento de ser entregue. Miscelâneas. Estado do processo atual, evento sendo esperado caso exista, tempo que resta até disparar o relógio do alarme, PID, PID do processo pai e identificação de grupo e usuário. As informações sobre os descritores de arquivos podem ser mantidas na estrutura do usuário e buscadas somente quando o processo se encontrar na memória e em execução. As informações contidas na estrutura do usuário incluem os seguintes itens: Registradores da máquina. Quando ocorre um desvio de execução para o espaço do núcleo, os registradores da máquina são salvos aqui nesse item da estrutura (incluindo os de ponto flutuante, caso sejam usados). Estado da chamada ao sistema. Informações sobre a chamada ao sistema atual, incluindo parâmetro e resultados. Tabela de descritor de arquivos. Quando e feita uma chamada ao sistema que envolva o descritor de arquivo, o descritor de arquivo é usado como um índice para essa tabela, a fim de localizar a estrutura de dados na memória correspondente a esse arquivo. Contabilidade. Ponteiro para uma tabela que guarda o caminho do usuário e o tempo de CPU do sistema usado pelo processo. Alguns sistemas também mantêm aqui nesse item da estrutura os limites sobre a quantidade de tempo de CPU que um processo pode usar, o tamanho máximo de sua pilha, o número de molduras de página que ele pode consumir e outros itens. Pilha do núcleo. Uma pilha fixa a ser usada pela parte do núcleo do processo. 6

3.2 Threads no Linux A ideia central de threads no Linux é uma nova chamada ao sistema, clone, que não está presente em nenhuma outra versão do Unix. Ela é chamada como segue: PID = clone A chamada cria um novo thread, ou no processo atual ou em um novo processo, dependendo do parâmetro sharing_flags. Se o novo thread está no processo atual, ele compartilha o espaço de endereçamento com os threads existentes e toda escrita subsequente a qualquer byte no espaço de endereçamento por qualquer thread é imediatamente visível a todos os demais threads do processo. 3.3 Escalonamento em Linux O problema básico de escalonamento em sistemas operacionais é como satisfazer simultaneamente objetivos conflitantes: tempo de resposta rápido, ter boa throughput (taxa de transferência) para processos background (antecedentes), evitar ampliação de prazo indefinida, conciliar processos de alta prioridade com de baixa prioridade, etc. O conjunto de regras utilizado para determinar como, quando e qual processo deverá ser executado é conhecido como política de escalonamento. Vamos ver agora como o Linux implementa seu escalonador e qual a política empregada para determinar quais processos recebem o processador. Tradicionalmente, os processos são divididos em três grandes classes: processos interativos, processos batch e processos tempo real. O escalonador do Linux não distingue processos interativos de processos batch, diferenciando-os apenas dos processos tempo real. Como todos os outros escalonadores UNIX, o escalonador Linux privilegia os processos I/O bound em relação aos CPU bound de forma a oferecer um melhor tempo de resposta às aplicações interativas. O escalonador do Linux é baseado em time-sharing, ou seja, o tempo do processador é dividido em fatias de tempo (quantum) as quais são alocadas aos processos. Se, durante a execução de um processo, o quantum é esgotado, um novo processo é selecionado para execução. Esse procedimento é completamente transparente ao processo e baseia-se em interrupções de tempo. Esse comportamento confere ao Linux um escalonamento do tipo preemptivo. O algoritmo de escalonamento do Linux divide o tempo de processamento em intervalos de tempos. Cada processo, no momento de sua criação, recebe um quantum calculado no início de um intervalo. Diferentes processos podem possuir diferentes valores de quantum. O valor do quantum corresponde à duração do intervalo. Outra característica do escalonador Linux é a existência de prioridades dinâmicas. O escalonador do Linux monitora o comportamento de um processo e ajusta dinamicamente sua prioridade, visando a equalizar o uso do processador entre os processos. Processos que recentemente ocuparam o processador durante um período de tempo considerado longo têm sua prioridade reduzida. De forma análoga, aquele que está há muito tempo sem executar recebe um aumento na sua prioridade, sendo então beneficiados em novas operações de escalonamento. 7

O sistema Linux trabalha com dois tipos de prioridades: estática e dinâmica. Nesse caso, a prioridade do processo tempo real é definida pelo usuário e não é modificada pelo escalonador. Somente usuários com privilégios especiais têm a capacidade de criar e definir processos tempo real. O escalonador do Linux executa os processos de prioridade dinâmica apenas quando não há processos de tempo real. Para selecionar um processo para execução, o escalonador do Linux prevê três políticas diferentes: SCHED_FIFO: Essa política é válida apenas para os processos de tempo real. Na criação, o descritor do processo é inserido no final da fila correspondente à sua prioridade. Nessa política, quando um processo é alocado ao processador, ele executa até que uma de três situações ocorra: 1. Um processo de tempo real de prioridade superior torna-se apto a executar; 2. O processo libera espontaneamente o processador para processos de prioridade igual à sua; 3. O processo termina, ou bloqueia-se, em uma operação de entrada e saída ou de sincronização. SCHED_RR: Na criação, o descritor do processo é inserido no final da fila correspondente à sua prioridade. Quando um processo é alocado ao processador, ele executa até que uma de quatro situações ocorra: 1. Seu período de execução (quantum) tenha se esgotado nesse caso o processo é inserido no final de sua fila de prioridade. 2. Um processo de prioridade superior torna-se apto a executar. 3. O processo libera espontaneamente o processador para processos de prioridade igual a sua. 4.O processo termina, ou bloqueia-se, em uma operação de entrada e saída ou de sincronização. Essa política também só é válida para processos de tempo real. SCHED_OTHER: Corresponde a um esquema de filas multi nível de prioridades dinâmicas com time-sharing. Os processos interativos e batch recaem nessa categoria. No momento da criação, o processo pai (o que fez o fork) cede metade de seu quantum restante ao processo filho. Esse procedimento é, na verdade, uma espécie de proteção que o sistema faz para evitar que um usuário, a partir de um processo pai, crie um processo filha que execute o mesmo código do pai. O escalonador do Linux é executado a partir de duas formas diferentes. A primeira é a forma direta através de uma chamada explícita à rotina que implementa o escalonador. A segunda forma, denominada de lazy (preguiçoso), também é consequência do procedimento de escalonamento, ocorrendo em uma de três situações. 8

A primeira dessas situações é a rotina de tratamento de interrupção de tempo que atualiza os temporizadores e realiza a contabilização de tempo por processo. Essa rotina, ao detectar que um processo esgotou seu quantum de execução aciona o escalonador para que seja efetuada uma troca de processo. A segunda situação ocorre quando um processo de mais alta prioridade é desbloqueado pela ocorrência do evento que esperava. A terceira, e última forma de execução lazy, são quando um processo explicitamente invoca o escalonador através de uma chamada de sistema do tipo yield. Essa chamada de sistema permite a um processo passar sua vez de execução, para isso, parece claro, e necessário executar o escalonador. 3.4 Gerência de Memória Uma das partes mais importantes e críticas dos sistemas operacionais em geral. A necessidade de utilização de mais memória que a fisicamente disponível em uma máquina tornou-se uma constante no projeto de sistemas operacionais. A memória virtual é sem dúvida o melhor. Essa técnica baseia-se, na tradução de endereços lógicos em endereços físicos auxiliados por mecanismos alocados no hardware do próprio processador. Os dois mecanismos básicos de tradução são a paginação e a segmentação. Embora alguns processadores, entre eles os da família Intel, suportem a segmentação, o Linux utiliza muito pouco. Entre as razões pelas quais o Linux não explora a segmentação, estão: A gerência da paginação é mais simples que a da segmentação. Normalmente é possível transformar a segmentação em paginação, mapeando-se todo o espaço virtual em um único segmento. 3.5 Sistema de arquivos do Linux O Linux tem como principal sistema de arquivo ext4. O Linux ainda suporta mais de uma dúzia de sistemas de arquivos por meio do sistema de arquivos NTFS. 4 RESULTADOS O Linux é um sistema operacional de código aberto e de livre distribuição mesmo não sendo muito intuitivo, ele utiliza o hardware de uma forma mais inteligente, não exige muitos upgrades. Ele é um sistema mais seguro, é mais difícil a contaminação com vírus, falhas de segurança e etc. 5 CONCLUSÃO Entendemos que o sistema possui sua estrutura e maneira de tratar a criação de um processo e threads, como acontece o escalonamento do processo ou o thread que irá rodar. 9

Compreendemos o gerenciamento de memória, assim como seus sistemas de arquivos e o mais importante que nós usuários vemos é apenas a menor parte de um sistema operacional que mais a fundo existe um sistema complexo e robusto que satisfaz nossas necessidades e de outros sistemas menores. 6 REFERENCIAS Tanenbaum, Andrews; Sistemas Operacionais Modernos. São Paulo: Pearson, 2005. 503 p. Oliveira, Rômulo Silva de; Sistemas Operacionais. Porto Alegre: 04.d, 2010. 249-265 p. 10