FUNDAMENTOS DE
SISTEMAS OPERACIONAIS
SISTEMAS OPERACIONAIS
Relembrando...
Sistema Operacional é um conjunto de
programas que se situa entre os
softwares aplicativos e o hardware.
Um SO gerencia recursos deste
hardware (CPU, memória, periféricos,
etc ) etc.).
Um SO fornece uma interface para o
usuário interagir com o sistema.
Um SO provê e executa serviços para
T di ti d Si t
Temos diversos tipos de Sistemas Operacionais, como: Em batch. De rede. Distribuídos. Multiusuário e multitarefa. Desktop / PCs. Servidor. Embarcados. Tempo real. Grande porte. Multiprocessadores. Portáteis.
Relembrando...
Podemos pautar a evolução dos
Sistemas Operacionais de acordo com a evolução dos próprios computadores (um determinado hardware necessita de um software que o gerencie e usufrua de todo o seu potencial)
todo o seu potencial).
Tivemos, principalmente a partir da 3ª
geração de computadores, diversos tipos de Sistemas Operacionais.
Vimos também aspectos dos hardwares
de computadores, que é função dos Sistemas Operacionais gerenciá-los.
Aspectos específicos de: Processadores. Processadores multithread e multinúcleo. Memória Memória. Disco. Fitas. Dispositivos de E/S. Barramento Barramento.
Plano da unidade III
Gerenciamento de processos: Introdução a processos. Processo. Criação de processos. Término de processos Término de processos. Comunicações entre processos. Condição de corrida.
Exclusão mútua e região crítica. Exclusão mútua com espera ociosa.Exclusão mútua com espera ociosa.
Semáforos. Monitores.
Troca de mensagens. Escalonamento.
Gerenciamento de memória:
Introdução a gerenciamento de memória. Abstração – espaços de endereçamento
da memória. Permuta de memória Permuta de memória. Memória virtual. Paginação. Segmentação.
Gerenciamento de processos
Os sistemas computacionais atuais são
capazes de desenvolver uma grande variedade de tarefas simultaneamente.
Imagine o cenário: usuários fazendo
requisições simultaneamente, antivírus está varrendo tudo que entra e sai,
software de gerenciamento de redes
monitorando e solicitando dados de desempenho do servidor e diversos discos trabalhando em RAID (além de outras tarefas)
outras tarefas).
É visível a necessidade de uma
“orquestração” para todos estes processos!
Voltemos ao conceito de “processos” (como visto na unidade II):
Processo = programa que está em
execução.
Este programa em execução requerEste programa em execução requer recursos, principalmente da CPU, e
concorre com outros processos em sua execução.
Gerenciamento de processos
Em todos os sistemas com suposto
conceito de paralelismo, a CPU trabalha por algumas dezenas, centenas de
milissegundos numa única aplicação e subsequentemente na próxima até o ciclo se completar
ciclo se completar.
Esta sequência continuará até todos os
processos terminarem, mas não podemos esquecer que outros
processos entram na fila todo momento.
Devido à rapidez dos ciclos, temos a
impressão que o sistema está atendendo às diversas aplicações simultaneamente.
Somente nos casos de sistemas com
múltiplos processadores é que temos de fato múltiplos programas sendo tendidos no mesmo instante.
Controlar múltiplas atividades em
paralelo é algo que vem sendo
desenvolvido e aprimorado com base num modelo conceitual de processos sequenciais que facilita o paralelismo que estudaremos adiante.
Gerenciamento de processos
Conforme demonstrado na figura abaixo, uma CPU pode executar um processo por vez:
Em sistemas com dois cores (equivalente a termos duas CPUs), ainda temos a mesma afirmativa – todas as CPUs podem executar um processo por vez cada uma:
Gerenciamento de processos
No núcleo dos sistemas operacionais,
temos o PCBs (Process Control Blocks) que armazenam informações referentes aos processos ativos no ambiente.
Cada processo possui um identificador
único no sistema, o PID (Process
Identifier).
Criação de processos: Processos são
criados e destruídos constantemente nos sistemas. Essas operações
disponibilizam aplicações por meio de chamadas de sistema que diferem entre sistemas operacionais.
Ao iniciar o sistema operacional,
tipicamente vários processos são
criados. Entre esses processos, temos os que estão em primeiro plano e
interagindo com o usuário e outros que estão em segundo plano portanto não estão em segundo plano, portanto não estão diretamente interagindo com o usuário.
Um exemplo é uma tarefa de
transferência de um arquivo via servidor de FTP onde este fica inativo durante de FTP, onde este fica inativo durante parte do tempo, sendo ativo somente quando um cliente FTP solicita a
Gerenciamento de processos
Usamos o termo daemons para
descrever processos que ficam em segundo plano com finalidade de lidar com alguma atividade como esta.
Processos que estão em execução
podem fazer chamadas de sistema (system calls) para criar um ou mais
novos processos. Criar novos processos é indicado quando a tarefa a ser
executada puder ser facilmente dividida em vários processos relacionados
em vários processos relacionados, interagindo, entretanto, de maneira independente.
processo principal (“pai”) são chamados de processos “filhos”, réplica do primeiro,
Gerenciamento de processos
Término de processos - Após o término, o processo é finalizado com base em quatro condições típicas:
Encerramento Normal (voluntário) –
ao término da execução e liberação dos recursos.
Por erro (voluntário) – por parâmetros
errados fornecidos por outros processos, aplicações ou pelo usuário.
Erro fatal (involuntário) – é um erro
causado pelo processo e normalmente por um erro de programa.
Cancelado por terceiros (involuntário) –
O cancelamento por outro processo
ocorre quando um processo “x” executa uma chamada de sistema determinando que o sistema operacional cancele
outro(s) processo(s) “y” outro(s) processo(s) “y”.
Processos terminados de forma
involuntária não são comuns num sistema em perfeito funcionamento!
Interatividade
O que os Sistemas Operacionais utilizam para identificar os seus processos?
a) PID. b) PCB. c) Daemons c) Daemons. d) System Calls. e) Forks.
A comunicação entre processos é algo
frequente nos sistemas atuais, havendo a necessidade de se obter uma
comunicação estruturada e sem
interrupções acontecendo entre eles.
Em linhas gerais, temos três tópicos
importantes na comunicação entre
processos: como um processo passa a informação para outro; como garantir que múltiplos processos não entrem em conflito; e como haverá uma sequência conflito; e como haverá uma sequência adequada quando existirem
Gerenciamento de processos
Condição de corrida:
Processos que trabalham juntos podem
compartilhar algum armazenamento comum e serem capazes de ler e escrever. O armazenamento
compartilhado pode estar na memória principal ou em um arquivo
compartilhado.
Condição de corrida é uma situação
onde dois ou mais processos querem partilhar um recurso (escrever e ler dados compartilhados) e o resultado final depende de quem executou quando (ordem de escalonamento).
Exclusão mútua e região crítica:
Exclusão mútua (mutual exclusion) é o
modo de assegurar que processos sejam impedidos de usar uma variável ou um arquivo compartilhado que já estiver em uso por outro processo. Pode-se evitar a condição de corrida apresentada
anteriormente aplicando a exclusão mútua ou evitando que os programas usem a região crítica simultaneamente.
Gerenciamento de processos
Exclusão mútua e região crítica:
Entende-se por região crítica a parte dos
programas em que há acesso à memória ou arquivo compartilhado.
Exclusão mútua com espera ociosa:
Em sistemas mais antigos que possuíam
somente uma CPU com um único core, a forma mais trivial e segura para evitar que mais de um processo entrem na região crítica é aplicada com a
desativação das interrupções assim que o primeiro processo entrar na região crítica e consecutivamente reabilitá-las assim que sair desta região.
Gerenciamento de processos
Exclusão mútua com espera ociosa:
Entretanto, caso tenhamos um problema
num processo que desative as
interrupções e nunca mais as reative, certamente, teremos um problema maior para lidar do que a situação decorrida, ou seja, teremos o sistema literalmente parado.
Com as novas arquiteturas de chips com
múltiplos processadores, esta técnica de desabilitar interrupções torna-se
Semáforos: Como visto anteriormente,
quando um processo está ativo e executando tarefas na região crítica,
então outros devem ficar “dormindo” até o término dessa tarefa. O semáforo é o conceito proposto por E W Dijkstra para conceito proposto por E. W. Dijkstra para um tipo de variável inteira, objetivando contar o número de sinais de “acordar” salvos para o uso futuro. Um semáforo poderia conter o valor 0, indicando que nenhum sinal de acordar foi salvo, ou nenhum sinal de acordar foi salvo, ou algum valor positivo, sinalizando que um ou mais sinais de acordar estivessem pendentes.
Gerenciamento de processos
Semáforos: Dijkstra propôs a existência
de duas operações para os semáforos: P (down) e V (up), que são mnemônicos e fazem alusão a sleep e wake up (dormir e acordar).
Simplificando = Semáforo é uma variável
especial protegida (ou tipo abstrato de dados) que tem como função o controle de acesso a recursos compartilhados (por exemplo, um espaço de
armazenamento) num ambiente armazenamento) num ambiente multitarefa.
Monitores: Podemos definir monitor
como uma coleção de rotinas, variáveis e estruturas de dados, todos agrupados em um tipo especial de pacote.
O monitor tem um papel fundamental
para realizar a exclusão mútua pelo fato de que somente um processo pode estar ativo em um monitor num determinado tempo x.
Gerenciamento de processos
Monitores: Tipicamente, quando um
processo executa uma chamada a uma determinada rotina do monitor, algumas das primeiras instruções da rotina
deverão verificar se existe outro
processo ativo dentro do monitor Caso processo ativo dentro do monitor. Caso confirme que outro processo encontra-se ativo dentro do monitor, então o
processo que realizou a chamada ficará suspenso até que o processo que estava ativo saia do monitor.
ativo saia do monitor.
Um processo que executar uma chamada
ao monitor poderá entrar somente se não houver nenhum outro ativo.
Troca de mensagens: semáforos e
monitores não permitem troca de informações entre máquinas, que é primordial no mundo dos sistemas
distribuídos. Para essa condição temos o
message passing (troca de mensagens) message passing (troca de mensagens),
que usa dois instrumentos: send e
receive (envio e recebimento).
No caso da troca de mensagens entre
máquinas, isso se dá por meio da rede e essa mensagem pode ser extraviada ao essa mensagem pode ser extraviada ao longo do percurso. Portanto, uma troca de mensagem usa o mecanismo similar ao usado no protocolo TCP.
Gerenciamento de processos
No protocolo TCP, a mensagem enviada
requer um sinal de acknowledge, ou seja, se quem enviou não receber a
confirmação, então uma nova mensagem será reenviada.
Este funcionamento do protocolo TCP é
similar ao recurso de troca de mensagem nos Sistemas Operacionais em sua
tarefa de gerenciar processos concorrentes.
Escalonamento: quando temos uma
única CPU, ou uma única CPU disponível entre as diversas existentes no sistema, e mais de um processo estiver
competindo para ser executado, então caberá ao sistema operacional escolher caberá ao sistema operacional escolher qual dos processos será privilegiado e essa escolha chama-se algoritmo de escalonamento.
O escalonamento é importante porque,
dentre vários processos é saudável que dentre vários processos, é saudável que o sistema priorize aqueles que vão gerar mais impacto ao ambiente e seus
Gerenciamento de processos
Escalonamento: processos são escalonados em quatro situações:
Quando temos os processos pai e
filho para serem executados. A
definição de qual deve ser priorizado, em muitos casos, é essencial para o perfeito funcionamento das tarefas e resultado correto.
Quando temos um processo que
terminou e já não está mais no
sistema, havendo a necessidade da escolha de um novo processo.
Escalonamento:
Quando um processo é bloqueado por
alguma razão, então outro processo deve ser selecionado para ser executado.
Processos predecessores podem ser priorizados, pois, se forem executados os sucessores, pode haver
dependências que irão gerar resultados inconsistentes.
Ao ocorrer uma interrupção de E/S, pode
ser necessário uma decisão de escalonamento.
Interatividade
Uma das funções de um Sistema Operacional é o gerenciamento de
processos. Qual das opções abaixo não é uma técnica deste tipo de gerenciamento? a) Troca de mensagens.
b) Escalonamento. c) Exclusão mútua. d) Semáforos.
A memória é um grande vetor de
palavras ou bytes (o tamanho de um palavra depende de cada máquina), cada qual com seu próprio endereço. A CPU busca instruções do programa em
memória de acordo com o valor do memória de acordo com o valor do registrador contador de programas. Estas instruções podem causar a busca ou o armazenamento adicionais para endereços específicos de memória.
Gerenciamento de memória
Nos sistemas operacionais, a parte
parcialmente responsável por gerenciar a hierarquia de memória é o gerenciador de memória, que tem como tarefa
conhecer todo espaço de memória, alocar para os processos que estão alocar para os processos que estão
necessitando e liberar as partes que não estão mais em uso pelos processos.
Contemporaneamente, programadores
necessitam de mais memória e mais programas rodando simultaneamente para que consigam tratar cada vez mais informações.
No tratamento de memória, alguns
requisitos devem ser observados para o correto funcionamento:
Segurança. Isolamento.Isolamento.
Gerenciamento de memória
Por conta dos requisitos, a tarefa de
gerenciar memória passa a ser do sistema operacional, não mais dos aplicativos.
O gerenciamento de memória baseia-se basicamente em duas tarefas essenciais:
Alocação: quando o programa requisita
um bloco de memória, o gerenciador o disponibiliza para a alocação.
Reciclagem: Quando um bloco de
memória foi alocado, mas os dados não foram requisitados por um determinado número de ciclos ou não há nenhum tipo de referência a este bloco pelo
programa esse bloco é liberado e pode programa, esse bloco é liberado e pode ser reutilizado para outra requisição.
Gerenciamento de memória
Swapping:
O swapping, é um dos métodos mais
triviais para gerir a sobrecarga de memória. Esse método vem sofrendo modificações ao longo dos anos. Ele faz a cópia completa do conteúdo da
memória (que geralmente são processos ociosos) para um arquivo no disco rígido e libera a memória para outro processo ocupá-la.
Sistemas e aplicativos atuais demandam
uma grande quantidade de memória, por conta disto, técnicas como a de
Swapping: quando os recursos de
memória estão esgotados, como por exemplo, quando uma aplicação faz uso de toda a memória RAM de um
computador e outro processo necessita de uma área nesta mesma memória
de uma área nesta mesma memória,
entre em ação a técnica de swapping, ou seja, troca de processos. Isso consiste em o sistema operacional pegar o
conteúdo completo da memória e movê-lo para um arquivo na memória em disco lo para um arquivo na memória em disco rígido e, subsequentemente, liberar a memória para o próximo processo.
Gerenciamento de memória
Swapping.
Vantagens:
Maior compartilhamento da memória. Maior throughput.
Eficiência. Desvantagens:
Elevados custos das operações de
Memória virtual: Em 1961, um método
desenvolvido por John Fotheringham ficou conhecido como memória virtual, permitindo que programas usem mais RAM do que realmente está disponível fisicamente Esse processo é possível fisicamente. Esse processo é possível porque o sistema operacional mantém rodando na memória principal somente as partes necessárias do programa e as outras, que não estão em uso, ficam no disco rígido. Quando é necessário que disco rígido. Quando é necessário que outra parte, que está no disco, seja carregada, então haverá o processo de
Gerenciamento de memória
Memória virtual:
A memória virtual possui dois aspectos
importantes: o primeiro é a quantidade de memória fisicamente instalada no equipamento, que chamamos de
memória real. O outro tem muito mais capacidade que o primeiro e chamamos de espaço de memória virtual.
No hardware, temos um componente de
extrema importância que é a Unidade de Gerenciamento de Memória (MMU).
Memória virtual:
O MMU suporta o sistema operacional na
execução do mapeamento dos endereços da memória física e endereços da memória virtual,
permitindo, assim, a eficaz maestria de mover as partes dos programas da memória virtual para o disco ou vice-versa.
Gerenciamento de memória
Paginação:
A técnica chamada paginação é usada na
maioria dos sistemas de memória virtual. A memória virtual é dividida em unidades de espaçamento de endereços
adjacentes chamadas de páginas. Estas correspondem a unidades das memórias chamadas de frames.
Gerenciamento de memória
Paginação:
A paginação é implementada
normalmente por unidades dedicadas de
hardware integradas nos processadores.
No caso dos processadores da família
Intel x86, esta funcionalidade está
atribuída à MMU. A paginação é obtida através de consulta a tabelas que
relacionam os endereços lineares das páginas de memória com os endereços físicos das frames de memória
físicos das frames de memória respectivas.
Paginação:
Neste sistema, cada processo no
computador tem a sua própria tabela de páginas, em que a cada endereço virtual corresponde o endereço físico em que a informação está efetivamente
armazenada. Visto que a informação está dividida em pequenas unidades, o seu armazenamento não tem de ser
necessariamente sequencial, o que elimina a fragmentação externa da elimina a fragmentação externa da memória.
Gerenciamento de memória
Segmentação:
Qualquer programa de computador está
dividido em secções, como as
declarações de variáveis e declarações de sub-rotinas (principalmente se ele foi escrito numa linguagem de alto nível). Em termos de execução, cada uma
dessas secções vai ocupar um segmento da memória.
O sistema operacional que suporta
segmentação possui uma tabela com os tamanhos e endereços de memória dos vários segmentos de um programa para saber onde estão.
Na tarefa de gerenciamento de memória, qual a função da MMU?
a) Manter rodando na memória principal somente as partes necessárias de um programa.
b) Definir o tamanho máximo de uma área de swapping.
c) Traduzir endereços virtuais em endereços físicos.
d) Liberar a memória de processos inativos d) Liberar a memória de processos inativos. e) Informar ao programador endereços de
Conteúdo complementar –
Sistemas baseados em UNIX
Na primeira unidade da disciplina, vimos
uma breve evolução dos sistemas operacionais Windows.
Esta parte visa complementar o assunto
com os sistemas baseados em Unix.
Unix é um sistema operacional portátil,
multitarefa e multiusuário, originalmente criado por Ken Thompson, Dennis
Ritchie, Douglas McIlroy e Peter Weiner, que trabalhavam nos Laboratórios Bell (Bell Labs) da AT&T – final da década de 60.
Em 1969, Ken Thompson, usando um
ocioso computador PDP-7, começou a reescrever o embrião do Unix (o Multics) num conceito menos ambicioso,
batizado de Unics, usando linguagem de montagem (assembly)
montagem (assembly).
Mais tarde, Brian Kernighan rebatizou o
novo sistema de Unix.
Um marco importante foi estabelecido
em 1973, quando Dennis Ritchie e Ken Thompson reescreveram o Unix, usando a linguagem C, para um computador PDP-11.
Conteúdo complementar –
Sistemas baseados em UNIX
A linguagem C havia sido desenvolvida
por Ritchie para substituir e superar as limitações da linguagem B, desenvolvida por Thompson. O seu uso é considerado uma das principais razões para a rápida difusão do Unix
difusão do Unix.
Finalmente, ao longo dos anos 70 e 80
foram sendo desenvolvidas as primeiras distribuições de grande dimensão como os sistemas BSD (na Universidade de Berkeley na Califórnia) e os System III e Berkeley na Califórnia) e os System III e System V (nos Bell Labs).
Em 1983, após acrescentar vários
melhoramentos ao System III, a AT&T apresentava o novo Unix comercial, renomeando-o para System V.
Hoje, o Unix System V é o padrão
internacional de fato para o
desenvolvimento de variantes do Unix.
Atualmente, Unix (ou *nix) é o nome
dado a vários sistemas que partilham muitos dos conceitos dos Unix originais, sendo todos eles desenvolvidos em
torno de padrões como o POSIX
(Portable Operating System Interface) e outros.
Conteúdo complementar –
Sistemas baseados em UNIX
Alguns dos Sistemas Operativosderivados do Unix são: BSD (FreeBSD, OpenBSD e NetBSD), Solaris
(anteriormente conhecido por SunOS), IRIXG, AIX, HP-UX, Tru64, SCO, Linux (nas suas centenas de distribuições) e (nas suas centenas de distribuições), e até o Mac OS X (baseado em um núcleo Mach BSD chamado Darwin). Existem mais de quarenta sistemas operacionais *nix, instalados em desde celulares a supercomputadores, de relógios de supercomputadores, de relógios de pulso a sistemas de grande porte.
Conteúdo complementar –
Sistemas baseados em UNIX
Linux:
O Linux foi criado como um projeto de
um estudante finlandês chamado Linus Torvalds. Na época os sistemas
operacionais mais populares eram o
Unix, que era muito usado em empresas, o Mac OS, da Apple, muito popular entre os usuários domésticos que tinha uma interface muito amigável e superior ao do Windows em muitos aspectos, mas muito caro também e o Windows que na muito caro também, e o Windows, que na verdade era a opção pra quem não podia comprar um computador da Apple.
Linux:
Em 1988, Linus ingressou na
Universidade de Helsinki (Finlândia) no curso de Ciências da Computação. Após montar um computador passou a usar o MINIX.
O MINIX fora desenvolvido pelo
Professor Andrew S. Tanenbaum, um renomado professor de computação que é conhecido pelos diversos livros que escreve até hoje para a área de TI.
Conteúdo complementar –
Sistemas baseados em UNIX
Tanenbaum disponibilizou o MINIXprincipalmente para servir de auxílio no ensino de computação.
Dadas as suas finalidades acadêmicas,
não só o MINIX foi disponibilizado de maneira gratuita e livre, como também o seu código-fonte completo. Assim, os estudantes de computação podiam - e podem - estudá-lo inteiramente para
desenvolver suas habilidades ou mesmo para criar projetos derivados
Devido a observar as dificuldades deste
sistema (especialmente com relação ao uso de terminal para conexão), Linus resolveu criar um programa para a emulação de terminal que funcionasse independente do MINIX
independente do MINIX.
Na mesma época (1991), estudantes do
mundo todo que se interessavam por informática, e compartilhavam os ideais de que os programas deveriam ser livres para o uso e melhoria por todos
para o uso e melhoria por todos,
inspirados por Richard Stallman e seu projeto GNU.
Conteúdo complementar –
Sistemas baseados em UNIX
O projeto de Stallman (GNU), era ummovimento que visava a fornecer
software livre com qualidade.
O projeto GNU havia criado uma série de
ferramentas para programadores e estudantes, porém seu sistema
operacional propriamente dito ainda precisava de um Kernel.
Kernel é o núcleo de um SO, aquele que
faz o intermédio entre o hardware e os programas executados. Isso significa que a junção do Kernel mais os
softwares que tornam o computador
Concomitantemente com a necessidade
do GNU em desenvolver um Kernel, Linus Torvalds decidiu divulgar
abertamente o seu projeto. Para isso, publicou mensagens na Usenet (uma espécie de antecessora da Internet espécie de antecessora da Internet, baseada em troca de mensagens)
pedindo sugestões e colaborações para a sua iniciativa.
A partir de então, contando com o apoio
de diversos desenvolvedores de diversos desenvolvedores
espalhados pelo mundo, o Linux foi evoluindo e fora adotado pelo projeto GNU como seu Kernel.
Conteúdo complementar –
Sistemas baseados em UNIX
Linux ou GNU/Linux?
O Linux, por si só, é um Kernel. Sozinho,
um Kernel não tem muita utilidade. É necessário "juntá-lo" a um conjunto de
softwares para que tenhamos,
efetivamente, um sistema operacional em condições de uso. É aí que o projeto GNU entra.
O Linux que temos hoje é conhecido por
trabalhar em conjunto com software GNU. Por comodidade ou simplesmente desconhecimento, pessoas criaram o hábito de chamar todo o conjunto de
Distribuições Linux:
Há várias distribuições Linux, para os
mais diversos fins. Muitas, inclusive, fazem parte de negócios rentáveis, onde a empresa fornece, por exemplo, o
sistema operacional de graça, mas obtém receita a partir de serviços de suporte técnico.
Conteúdo complementar –
Sistemas baseados em UNIX
Algumas distribuições Linux: Ubuntu; Debian;
Fedora (ligada à Red Hat); Mandriva;
CentOS; Slackware.
Dica: informações sobre estas e outras
distribuições Linux no site distribuições Linux no site
Licenças:
Uma licença é, em poucas palavras, um
documento que explica como
determinado software pode ser utilizado. No que se refere a programas de código-fonte aberto, há vários tipos de licenças disponíveis. O Linux utiliza a GPL (GNU
Public Licence).
A GPL é uma licença criada pela Free
Software Foundation (organização
fundada por Richard Stallman) baseada nas liberdades que a entidade defende:
Conteúdo complementar –
Sistemas baseados em UNIX
Liberdade de executar o programa, para
qualquer propósito (liberdade zero).
Liberdade de estudar como o programa
funciona e adaptá-lo às suas
necessidades (liberdade 1), sendo o
acesso ao código-fonte um pré-requisito para esta aspecto.
Liberdade de distribuir cópias de forma
que você possa ajudar ao seu próximo (liberdade 2).
Liberdade de melhorar o programa e
liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie (liberdade três).
Dentre as opções abaixo, qual representa a melhor definição para Kernel?
a) Ele é o elemento responsável por
controlar a distribuição da memória física do computador.
b) Parte de um Sistema Operacional que tem como tarefa o gerenciamento dos
processos.
c) Kernel é um gerenciador de distribuições Linux.
Linux.
d) Componente central de um Sistema Operacional.