MultiVerso Linux

  • Home
  • Assinar RSS
  • Comments RSS
  • Log in
  • Register
  • About

26

May

Estrutura básica de diretórios no GNU/Linux

Publicado por gmazk  Publicado em Introdução, Linux

Neste tópico, vou falar um pouco sobre a estrutura básica de diretórios dos sistemas operacionais GNU/Linux.

Como você já sabe, um diretório é uma separação lógica dentro de um filesystem. Com o surgimento dos gerenciadores de janelas (window managers) como o Gnome, KDE e outros, muitos usuários passaram a chamar os diretórios de “pastas”, já que os mesmos normalmente são representados por ícones de pastas (bem óbvio ;-)). Bom, chame como quiser. O importante é que você tenha em mente a importância fundamental de conhecer a estrutura básica de diretórios do sistema GNU/Linux, pra saber configurá-lo e utilizá-lo corretamente.

A estrutura primária (ou básica) de diretórios engloba todos os diretórios que estão diretamente ligados ao diretório raiz do sistema, ou seja, o diretório / , que é o ponto de origem de todos os subdiretórios do sistema.

Num próximo post, vou falar mais profundamente sobre a importância de um planejamento de particionamento correto para que o usuário possa configurar seu sistema para tipos específicos de utilização, otimizando seu desempenho, flexibilidade, organização e segurança. Para que você possa compreender esse tema, é muito importante que você já tenha uma noção da função e conteúdo de cada um dos diretórios básicos do sistema GNU/Linux.

As distribuições baseadas no Debian seguem basicamente a estrutura padrão de diretórios Unix, regulada pela norma FHS (Filesystem Hierarchy Standard - http://www.pathname.com/fhs), sendo que existe também uma adaptação específica para os sistemas operacionais GNU/Linux… a LFH (Linux Filesystem Hierarchy - http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/) que não tem tanta atenção por parte dos desenvolvedores como a FHS em virtude do nível de padronização que a mesma atingiu.

Como sempre, chega de blá blá blá e vamos logo ao mais importante… Seguem abaixo os diretórios básicos do sistema GNU/Linux e a descrição de sua função/conteúdo:

.

/bin - É o diretório onde ficam armazenados os arquivos executáveis que podem ser executados por qualquer usuário do sistema;

.

/boot - É o diretório que contem a imagem do Kernel Linux e os arquivos de boot do sistema, bem como o gerenciador de boot que você usa em sua máquina. Esta pasta deve ser estudada com especial atenção, pois qualquer alteração feita indevidamente em seu conteúdo pode comprometer a inicialização do sistema. É dentro desse diretório que se localiza o grub (gerenciador de boot utilizado pela grande maioria dos usuários de distribuições GNU/Linux atuais);

.

/cdrom - Não é propriamente um diretório, mas sim um link para o diretório /media/cdrom (ponto de montagem do dispositivo leitor de CD/DVD da máquina;

.

/dev - É o diretório que contém os device drivers de que falei no segundo post do blog (introdução ao sistema GNU/Linux), ou seja, contém os arquivos que servem de ligação com os dispositivos de hardware da máquina;

.

/etc - É o diretório que contém quase todos os arquivos de configuração do sistema operacional GNU/Linux.

.

/home - Como o próprio nome já diz, é a “casa” do usuário dentro do sistema. Ou melhor, eu chamaria de condomínio dos usuários no sistema, já que dentro dele estão os subdiretórios individuais dos usuários do sistema, onde se encontram todas configurações e documentos pessoais de cada usuário. Ele é a base para os diretórios próprios de cada usuário. Se o seu nome de usuário no sistema é abigobaldo, por exemplo, seu diretório pessoal é /home/abigobaldo . Cabe ressaltar que ao logar-se no sistema, você pode acessar seu diretório pessoal no terminal simplesmente com o comando cd ~ , já que o sistema interpreta o ~ (tio) como /home/seudiretóriopessoal;

.

/initrd - Este diretório é utilizado pelo Kernel Linux durante o boot como um HD virtual criado na memória RAM da máquina (um RAM disk);

.

/lib - Neste diretório estão os módulos e libraries (bibliotecas) do Kernel Linux utilizadas durante o boot do sistema e também utilizadas por arquivos executáveis do sistema após o boot.

.

/lost+found - Este diretório pode não estar presente na sua máquina se você procurar por ele agora, e isso é um bom sinal. Esse diretório é criado apenas quando sistemas que utilizam filesystems jornalados (leia mais a respeito no post de Introdução ao sistema GNU/Linux) tem que fazer uma recuperação de filesystem após um problema (normalmente desligamento abrupto da máquina por queda de energia). É nesse diretório que são colocados os arquivos que puderam ser encontrados e recuperados após um problema com o filesystem, porém, eles são colocados lá sem seu nome original, que possuíam antes da falha.

.

/media - É o diretório base de todos os mount-points (pontos de montagem) de mídias removíveis do sistema, tais como disquetes, HDs USB portáteis, Pendrives e CDs;

.

/mnt - É um outro diretório base de pontos de montagem, porém para este existe a convenção de se montar dispositivos fixos da máquina nele, como seu HD interno, por exemplo. Mas nada impede que você monte uma mídia removível ou até mesmo um diretório qualquer de outra máquina da sua rede local neste diretório;

.

/opt - Se verificar o conteúdo deste diretório, MUITO provavelmente ele estará vazio. A idéia inicial deste diretório era armazenar programas que não fizessem parte da distribuição GNU/Linux instalada em seu sistema, porém, esse método de separação quase não é utilizado;

.

/proc - Não é bem um diretório. Trata-se de um filesystem virtual, cheio de arquivos virtuais, que na verdade são apenas referências dinâmicas dos procedures (procedimentos) do Kernel Linux, que são alteradas constantemente durante a utilização do sistema;

.

/root - O diretório do mandachuva… do big boss do sistema. Esse é o diretório do superusuário do sistema (pode chamar de administrador se quiser). O único usuário do sistema com permissão para realizar qualquer modificação no sistema. Aí você me pergunta: “Mas gmazk, se é uma pasta de usuário, porque não está dentro de /home ?”. E eu explico: conforme você vai ver na minha próxima publicação (a respeito de planejamento do particionamento da maquina e instalação do sistema), é conveniente durante a instalação do sistema, determinar que o diretório /home seja montado em uma partição separada da partição principal (onde estão os demais diretórios do sistema). Se o diretório root estivesse nessa partição separada (dentro de /home) e ocorresse com essa partição, o que costumo chamar de um “momento PUTZ… FODEU!”, a pasta /root também estaria inacessível, e como você já sabe, certas coisas só podem ser feitas no sistema pelo usuário root… Então você não poderia, por exemplo, inicializar o sistema para realizar uma recuperação nessa partição;

.

/sbin - O nome vem de System BINnaries. Este diretório, assim como o /bin, armazena arquivos executáveis, porém nele ficam os executáveis relacionados com a manutenção e administração do sistema, sendo que a grande maioria deles só podem ser executados pelo superusuário (root), salvos alguns casos, como o ifconfig, por exemplo, que pode ser executado por outros usuários, porém com a especificação completa de localização (ou seja, incluindo o endereço completo - /sbin/ifconfig) já que nas variáveis de PATH (variável que indica ao sistema onde procurar por arquivos cujos endereços completos não são especificados pelo usuário no momento da execução do comando) dos usuários comuns não estão os diretórios /sbin e /usr/sbin;

.

/srv - É um diretório que sofre do mesmo problema de esquecimento e solidão que o diretório opt, pois não é utilizado nunca… A idéia inicial era usá-lo para armazenar dados que seriam disponibilizados por qualquer programa servidor que você utilizasse no sistema, mas foi outra idéia que “não pegou”;

.

/sys - O nome vem do sysfs (sys filesystem). É o diretório usado pelo Kernel Linux para manter dados atualizados sobre os dispositivos de hardware da máquina (não confunda, não é a mesma coisa que /dev, já que no /dev estão arquivos que servem de ligação com os dispositivos, e não informações sobre eles);

.

/tmp - É um diretório utilizado pelo sistema para armazenar informações temporárias, que são apagadas quando você reinicia o sistema. Portanto, não arrisque colocar sua pasta de documentos profissionais ai dentro ;-) ;

.

/usr - É o diretório que armazena todos os dados “não críticos” (entenda-se não essenciais para o funcionamento da base do sistema) do sistema operacional. Ele também contem arquivos executáveis nos subdiretórios /usr/bin e /usr/sbin, porém, não são arquivos necessários para uma inicialização mínima do sistema num momento “putz… fodeu!”, e por isso, podem ser armazenados nestes diretórios. O termo usr não vem de users como muitos pensam, mas sim de Unix Shared Resources (Recursos Compartilhados Unix);

.

/var - Este diretório armazena os dados VARiáveis do sistema (não confunda com dados temporários do /tmp pois estes não são apagados a cada inicialização do sistema). Dentro deste diretório estão todos os logs do sistema (no subdiretório /var/log), assim como o spool de impressoras do sistema. Caso você tenha um WebServer ou um MailServer ativo em seu sistema, é dentro do diretório /var que vão ficar os dados acessíveis. Por exemplo, se você instalar o servidor web Apache2, as páginas que serão disponibilizadas (servidas) pelo programa estarão em /var/www.

.

Pronto… Agora você já conhece toda a estrutura básica de diretórios do sistema operacional GNU/Linux, e já deve estar bem mais familiarizado com o sistema. Cabe ressaltar que dos diretórios mencionados, os seguintes são utilizados diretamente durante o boot do sistema, e por isso tem que estar “íntegros”:

bin, boot, dev, etc, initrd, lib, proc, root, sbin

Portanto não permita nunca que ocorra um momento “putz… fodeu!” com nenhum desses diretórios, pois se ocorrer, você vai enfrentar na verdade um momento “PUTZ… fodeu MESMO!!!”.

Espero ter esclarecido mais um pouco sobre nosso fantástico sistema operacional para os usuários iniciantes do mundo Linux. Pretendo fazer minhas próximas publicações falando de particionamento, planejamento de instalação, e também um post exclusivo sobre boot e seus intermináveis problemas para o iniciante (e até mesmo para o usuário experiente).

Até logo!

Grande abraço a todos!

 
icon for podpress  Chank - John Scofield [6:47m]: Play Now | Play in Popup | Download
no comment

19

May

Entendendo tecnicamente o GNU/Linux.

Publicado por gmazk  Publicado em Introdução, Linux

Continuando a parte de contextualização, pretendo com este post passar alguns conceitos técnicos introdutórios sobre os sistemas operacionais GNU/Linux.

Vou abordar neste tópico os seguintes temas:

- características e estrutura básica do sistema;

- características e modo de funcionamento do Kernel;

- filesystems (sistemas de arquivos);

- outros aspectos importantes para o usuário iniciante ou que desconhece o mundo Linux, e até mesmo usuários já experientes que iniciaram sua utilização do GNU/Linux com foco em aspectos específicos do sistema e ainda não tiveram a oportunidade de vislumbrá-lo como um todo.

Um de meus objetivos com este website é desmistificar um pouco o mundo Linux, ainda visto por muitos que não conhecem o sistema, ou por iniciantes, como um amontoado confuso de recursos que exigem habilidades técnicas excepcionais por parte do utilizador, o que não é verdade… Pra desmistificar temos que explicar, e ao contrário do que todos fazem, vou começar com a parte mais técnica de funcionamento do sistema, e com o tempo ir abordando os aspectos práticos e publicando meus tutoriais e dicas no bom e velho estilo HOW-TO. Quero organizar e publicar meus posts no website dando prioridade para temas que permitam que usuários iniciantes e corporativos possam migrar de forma indolor para o sistema GNU/Linux sabendo exatamente o que estão fazendo ao invés de simplesmente seguir instruções inexplicadas que podem trazer pânico quando algo dá errado, e também para que usuários intermediários e avançados que só tiveram até hoje foco específico em certos recursos do sistema operacional possam estudá-lo “como um todo”, aprimorar seus conhecimentos e contribuir de forma participativa com suas próprias experiências, somando força a uma das principais e mais empolgantes características do Mundo Linux, que é a colaboração ativa que ocorre na comunidade.

Meu objetivo neste tópico não é me aprofundar muito nas explicações técnicas a respeito do funcionamento do sistema operacional, porém vou citar superficialmente alguns pontos importantes, que apesar de desnecessários para conhecimento de usuários iniciantes, são importantes para a compreensão do sistema operacional como um todo.

Bom, vamos ao que realmente interessa…

Se você já leu meu primeiro post no website, que trata da história do GNU/Linux (recomendo que leia caso ainda não o tenha feito), já teve a oportunidade de perceber que quando falamos em Linux de maneira abrangente, estamos nos referindo ao Sistema Operacional GNU/Linux, que é fundamentalmente um conjunto de aplicativos e funcionalidades (normalmente de código aberto, sejam eles feitos para o projeto GNU pela Free Software Fundation ou não) trabalhando sob o controle do Kernel Linux (cérebro ou núcleo - representa a camada mais baixa de interface com o hardware, sendo responsável por gerenciar os recursos do sistema como um todo), que trabalha da seguinte maneira:

O Kernel Linux é um Kernel monolítico, ou seja, todas as suas funções (acesso e gravação nos filesystems (sistemas de arquivos), operações de entrada e saída, gerenciamento de memória, e agendamento de processos) são realizadas no espaço do próprio Kernel, ou seja, são todas realizadas em um único bloco com todas as funcionalidades básicas carregadas na memória.

A grande vantagem do Kernel Linux é que muitas funções podem ser compiladas e executadas como módulos (LKM - Loadable Kernel Modules ou Módulos Carregáveis do Kernel), que são bibliotecas compiladas separadamente da parte principal do Kernel e podem ser carregadas e descarregadas pelo sistema mesmo com o Kernel já estando em execução (pra quem não sabe, compilar um programa ou módulo é basicamente “interpretá-lo” para transformar as instruções de alto nível - ou linguagem humana - nele contidas em instruções de baixo nível - ou “linguagem de máquina” - para que não ocorram, durante a execução do mesmo, perdas de tempo com a necessidade de interpretar as instruções uma a uma utilizando um interpretador qualquer).

Outra característica fantástica do Kernel Linux é sua incomparável portabilidade, que permite que o mesmo seja utilizado em sistemas mínimos (como celulares e palmtops) até sistemas de enorme porte, como densos mainframes. Por outro lado, temos também a enorme portabilidade no sentido do Kernel ser extremamente compatível com uma imensa variedade de fontes que podem ser compiladas e utilizadas em Linux.

.

Como funciona o Kernel…

1- Os filesystems (sistemas de arquivos)

Filesystem, ou sistema de arquivos, é o sistema utilizado pelo Kernel Linux para organizar, acessar e escrever os arquivos nos discos ou mídia de armazenamento disponível no sistema. Ou seja, é um artifício usado pelo Kernel para controlar a gravação e leitura dos dados (no seu disco rígido, por exemplo).

Existem vários tipos de filesystems, sendo que os mais conhecidos para GNU/Linux são:

- os baseados em discos -> Ext2, Ext3, ReiserFS, XFS, JFS e ISO 9660;

- os baseados em rede -> NFS, SMBfs, Coda e AFS;

- os filesystems especiais -> Utilizados em diretórios como o /proc, ramfs e devfs.

Cada filesystem tem suas especificações, tais como tamanho de blocos (ou espaços delimitados destinados ao recebimento dos arquivos) e técnicas especiais de recuperação em caso de falhas.

- Filesystems “jornalados” ou journaling filesystems, são filesystems que utilizam técnicas de recuperações em caso de falhas (como desligamentos abruptos, queda de energia e outros tipos de desastre de sistemas de arquivos). A expressão “journal” está ligada à ideia de se manter um log ou registro de eventos realizados no filesystem.

Os sistemas de arquivos com journaling mais utilizados atualmente em sistemas operacionais GNU/Linux são: o ReiserFS (criado por Hans Reiser), o Ext3 (criado por Stephen Tweedie), o XFS (criado pela Silicon Graphics) e o JFS (criado pela IBM). Minha opção pessoal é o ReiserFS, que além de muito seguro e de fácil recuperação em caso de desastres, se mostra atualmente mais eficiente ao trabalhar com arquivos pequenos e tão eficiente quanto aos demais ao trabalhar com arquivos grandes, por realizar a distribuição dos arquivos nos blocos de uma maneira mais inteligente sob meu ponto de vista.

O sistema GNU/Linux atualmente também é capaz de ler e escrever no sistema de arquivos NTFS (sistema de arquivos proprietário da empresa microsoft).

Em meu próximo post, irei explicar detalhadamente a estrutura de diretórios usada pelos sistemas operacionais GNU/Linux, porém, ainda neste tópico, falarei um pouco sobre o diretório /dev (responsável pela ligação entre o Kernel Linux e os dispositivos de hardware do sistema) e quero agora também explicar o que contem o diretório /proc -> diretório de um filesystem especial virtual que contém referências a informações dinâmicas dos processos do sistema, geradas constantemente pelo Kernel Linux.

.

2 - Operações I/O ou E/S (In/Out ou Entrada/Saída)

São as operações de comunicação do Kernel Linux com os dispositivos de hardware da máquina. As operações de entrada e saída realizadas pelo Kernel Linux são implementadas através dos device drivers, ou seja, para cada dispositivo de hardware da máquina, existe um device do Kernel (arquivo que serve de ligação com os dispositivos de hardware, criado pelo Kernel no diretório /dev do filesystem (sistema de arquivos)).

O Kernel Linux realiza todas as operações de E/S com uma sequëncia de bytes, sem qualquer conceito de registro ou métodos de acesso. Dessa forma, ocorre uma comunicação mais direta com os dispositivos de hardware, de maneira uniforme. O Kernel pode acessar e escrever nos arquivos de ligação do diretório /dev (ou devices do Kernel) da mesma forma que ocorre em qualquer outro arquivo do filesystem, utilizando chamadas do sistema (system calls) de leitura e gravação.

O Kernel Linux trabalha com dois tipos de operações de E/S: orientadas a blocos e orientadas a caracter. As operações orientadas a bloco são geralmente utilizadas em dispositivos com uma taxa alta de transferência de dados (como por exemplo discos rígidos) fazendo com que seja reduzido o número de transferências necessárias entre o device do Kernel e a memória, já que em cada tranferência de dados são enviadas várias informações simultaneamente em blocos (agrupamentos). Já os dispositivos de hardware mais lentos, ou que demandam uma transferência menor de dados, são orientados a caracter, ou seja, a transferência entre o dispositivo e a memória são realizadas caracter a caracter.

.

3- Gerenciamento de memória

Entenda que quando executamos aplicativos ou funções do sistema operacional, o processador da máquina executa trocas dinâmicas com a memória principal do sistema (memória RAM). Isto ocorre pois o processador precisa armazenar as informações que recebeu para processá-las aos poucos de acordo com sua capacidade. O subsistema de gerenciamento de memória do Kernel Linux, preocupa-se especialmente com alguns fatores responsáveis pelo correto e eficaz gerenciamento dessas trocas dinâmicas.

Os principais aspectos do gerenciamento de memória são:

- Utilização de memória e swapping: O Kernel Linux sempre utiliza a maior quantidade de memória RAM possível, já que quando executamos um programa qualquer, tornando-o um processo do sistema, ele armazena temporariamente na memória RAM os dados necessários à sua execução, e esses dados não são apagados imediatamente após o encerramento de sua execução. Eles permanecem carregados na memória o máximo de tempo possível, pois caso o mesmo processo seja executado novamente em breve, os dados ainda estarão lá disponíveis, agilizando muito a execução. Essa técnica de manter os dados de programas executados na memória RAM chama-se Buffer Cache, e é utilizada para os dados que são utilizados pelos device drivers (drivers de dispositivos de hardware de que falamos acima em operações E/S). O Buffer Cache só é apagado parcialmente ou totalmente da memória RAM quando não há mais espaço suficiente para carregar um novo programa, e os dados escolhidos a serem apagados são aqueles que estão há mais tempo sem serem acessados, o que mostra ao Kernel que eles provavelmente não serão mais utilizados tão breve. Esse método de escolha é chamado de swapping, que utiliza um conceito de “envelhecimento” de informações conforme as mesmas não são utilizadas, e “rejuvenecimento” de informações conforme as mesmas são acessadas (não confundir swapping com memória virtual ou swap).

- Proteção: O Kernel Linux divide e separa os processos carregados na memória RAM da máquina como processos do kernel e processos do usuário

- Mapeamento de memória: Os processos em execução no sistema são divididos em páginas e somente algumas dessas páginas estão realmente na memória física do computador. Outras delas são “endereços virtuais” que agilizam o processo de acesso da memória. A utilização de endereços virtuais com endereços reais (físicos) de memória é chamada de mapeamento de memória. Todos os processos tem referências em uma estrutura de dados chamada pelo Kernel Linux de “mm_struct”. Esta estrutura contém informações sobre o que está sendo executado no momento e possui apontamentos para uma outra estrutura de dados chamada “vm_area_structure”, que contém “o endereço” de todos os PFN (Page Frame Numbers - que podemos entender de maneira menos técnica como o “endereço” ou localização exata de onde estão realmente as informações na memória do computador).

- Alocação: O Kernel Linux utiliza o algoritmo Buddy (Companheiro - nome pelo qual é conhecido o algoritmo de alocação) para alocar e desalocar páginas de memória utilizando blocos de páginas. O gerenciamento de memória do Kernel aloca e desaloca páginas de memória com extremo dinamismo, causando assim uma fragmentação de memória, que é resolvida pelo Kernel com um processo de desfragmentação que junta espaços preenchidos de memória que são categoricamente semelhantes.

Memória Cache: É utilizada para otimizar e agilizar o acesso a informações. Exemplos de Cache utilizadas pelo Kernel Linux: Buffer Cache (vimos acima quando falei de operações E/S - são blocos de tamanho fixo usados por device drivers que agilizam o acesso a informações que já estejam nesse buffer, tornando desnecessário o acesso direto ao dispositivo de hardware), o Page Cache (usado para tornar mais rápido o acesso a vários tipos de informação no disco), e o Swap Cache (que faz com que apenas páginas de memória modificadas sejam salvas na memória virtual física (que veremos abaixo) sendo que as páginas de memória inalteradas com seu acesso podem ser descartadas sem a necessidade de gravá-las fisicamente).

Memória Virtual: Memória virtual ou memória SWAP é um recurso utilizado pelo Kernel Linux que consiste em reservar uma parte da memória secundária da máquina (o disco rígido), especificada pelo usuário, para ser uma extensão da memória primária (memória RAM). O conceito de memória virtual está, ao contrário do que muitos pensam, ligado ao produto final da junção entre a memória primária e o espaço reservado da memória secundária. Ou seja… A memória virtual = Memória RAM + Memória SWAP. O processador transfere os dados do processo que está executando diretamente para a memória RAM (primária). Quando surge a necessidade de esvaziamento de parte da RAM para executar outro processo (e surge mesmo, pois lembre-se que o Kernel Linux utiliza sempre o máximo de memória possível devido ao Buffer Cache, para agilizar os processos), alguns processos existentes, mais envelhecidos (pelo swapping) que estiverem esperando para continuar sua execução, são transferidos para a o disco rígido, para a parte reservada à memória SWAP. Para que esse recurso possa ser utilizado, uma partição deve ser criada no disco durante a instalação do sistema operacional e especificada (reservada) como partição SWAP. O tamanho ideal para uma partição swap é um assunto que merece atenção exclusiva, e por isso, falarei sobre isso e sobre planejamento de particionamento num próximo post.

.

4- Agendamento de processos

Primeiramente vamos esclarecer de uma ver por todas o que é processo. Processo é uma instância de um programa em execução. Todo processo tem um pai (ou processo criador) e um número único atribuído pelo Kernel no momento de sua execução, que o identifica no sistema… o PID (Process Identifier). Para fazer um planejamento e compartilhamento adequado do tempo do processador, o Kernel Linux usa um sistema de 2 tipos de classificação, que avalia cada processo e lhe atribui qualidades que permitem que seja determinada uma prioridade de execução para cada processo avaliado. Os processos são classificados pelo Kernel quanto a sua responsividade (ou seja, se o processo responde em tempo real, interativo ou em segundo plano) e quanto a sua intensidade de atividade (ou seja, se o processo utiliza muito tempo de processador (CPU-Bound ou Limite de CPU) e se faz muitas operações de E/S (I/O-Bound ou Limite de Entrada e Saída)). Essas duas classificações são relativamente independentes, ou seja, um processo pode, por exemplo, ter uma baixa responsividade (como um daemon por exemplo, executado em segundo plano) e ao mesmo tempo ter uma grande intensidade de atividade (ou seja, ter um grande consumo de operações de E/S)… Podemos citar como o exemplo o caso do Servidor Web Apache2 servindo um banco de dados MySQL. Avaliadas essas classificações, o Kernel Linux utiliza seu sistema de prioridades e organiza os processos. A identificação da prioridade de um processo pode ser estática ou dinâmica, e varia de 1 (maior prioridade) a 139 (menor prioridade), sendo que os números de 1 a 99 são atribuídos a processos executados em tempo real, e de 100 a 139 são atribuidos a processos tradicionais (processos interativos ou processos executados em segundo plano).

Os processos executados em tempo real são classificados como FIFO (First-In, First-Out) ou RR (Round-Robin), e eles somente passam a ser excluídos do processamento atual nos casos de: fim de sua execução; para ser substituído por um processo que possua prioridade ainda maior; executar uma operação de bloqueio; espontaneamente pelo próprio processo; quando o processo é RR (Round-Robing) e esgotou seu quantum de processamento.

Um processo tradicional (processos interativos e os executados em segundo plano) tem inicialmente uma prioridade estática atribuída (normalmente 120) que determina o seu quantum de processamento, mas pode ter uma prioridade dinâmica, que é o valor analisado pelo agendador de processos do Kernel quando percorrer a lista de processos para determinar de qual processo é a vez de utilizar o processador. A prioridade dinâmica pode alterar o valor da prioridade estática em + ou - 5 pontos dependendo do passado do processo (lembre-se que quando menor a pontuação, maior a prioridade do processo). Ou seja, o passado do processo irá beneficiá-lo caso o mesmo tenha ficado muito tempo esperando por sua execução fora do processador (sleep time). Caso o sleep time seja pequeno, o processo irá ser penalizado, ou seja, seu número de prioridade irá aumentar, tornando sua prioridade de execução menor.

.

Bom, pudemos ver neste post algumas características básicas do funcionamento e da estrutura do sistema operacional GNU/Linux. Como sempre, comentários, sugestões, correções e acréscimos são extremamente bem vindos.

Em meus próximos posts, continuando as explicações técnicas, vou falar sobre a estrutura básica de diretórios do GNU/Linux. Quanto a informações menos técnicas, vou falar um pouco sobre as distribuições GNU/Linux disponíveis atualmente e sobre assuntos relacionados ao Licenciamento.

Até breve.

Grande abraço a todos!

 
icon for podpress  Freedie Freeloader - Miles Davis [9:33m]: Play Now | Play in Popup | Download
no comment

Pesquisar no site

Categorias

  • .Software Livre (1)
    • Conceito (1)
  • ISP (1)
    • Banda Larga no Brasil (1)
  • Linux (7)
    • História (2)
    • Introdução (2)
    • OpenBox (1)
    • Openbox Themes (1)
    • Particionamento (1)

Arquivos

  • July 2008 (1)
  • June 2008 (4)
  • May 2008 (4)

Geeks

  • andre_gondim - Ubuntu
  • brunner - da fronteira
  • coringao - Ubuntu Games
  • crimeboy - celo wordpress
  • freakcode - Freak’s Blog
  • geek - GeeK’s Podcast
  • guigouz - Linux e tech.
  • KurtKraut - Um professor usando SL
  • OgMaciel - Open Source Guy
  • pibarnas - Na pata da Esfinge
  • sryche - Tec. Info. e Linux

Páginas

  • About
September 2008
S M T W T F S
« Jul    
 123456
78910111213
14151617181920
21222324252627
282930  

MultiVerso Linux

Linux for EAP advancing knowledge for mankind.

By gmazk

Go FireFox

Google AdSense

Tópicos Recentes

  • Usa banda larga no Brasil? Então peça agora mesmo seu nariz vermelho ao seu provedor!
  • O futuro do Linux e a conquista dos usuários.
  • gmazk Blue - Meu primeiro tema para Openbox
  • Openbox - rápido, flexível e bonito a gosto do freguês!
  • Esquemas de particionamento para o GNU/Linux
  • Estrutura básica de diretórios no GNU/Linux
  • Entendendo tecnicamente o GNU/Linux.
  • O conceito de Software Livre.
  • Um pouco de história…

Comentários recentes

  • capoten em Um pouco de história...
  • Cash Loan Advance em O conceito de Software Livre.
  • gmazk em Usa banda larga no Brasil? Então peça agora mesm…
  • Anônimo em Usa banda larga no Brasil? Então peça agora mesm…
  • Danilo Cesar em Usa banda larga no Brasil? Então peça agora mesm…
  • Xpf em gmazk Blue - Meu primeiro tema para Openbox
  • Xpf em gmazk Blue - Meu primeiro tema para Openbox
  • José Carlos em gmazk Blue - Meu primeiro tema para Openbox
  • pibarnas em gmazk Blue - Meu primeiro tema para Openbox
© 2007 MultiVerso Linux
Valid XHTML | Valid CSS 3.0
Powered by Wordpress
Podcast Powered by podPress (v8.2)