por Augusto Campos
Este artigo responde a diversas dúvidas comuns de novos usuários, desenvolvedores interessados, ou alunos às voltas com trabalhos acadêmicos. Entre as questões, estão incluídas:
- O que é software livre
- O que é copyleft
- Qual a diferença entre software livre e código aberto
- Quais as obrigações de quem desenvolve ou distribui software livre
- Quais as licenças de software livre mais comuns
- Quais os exemplos de softwares livres populares
e muitas outras. Ao final há um guia de referências adicionais sobre o assunto. Veja também a FAQ BR-Linux – Lista de Perguntas Freqüentes.
O que é software livre
Software Livre, ou Free Software, conforme a definição de software livre criada pelaFree Software Foundation, é o software que pode ser usado, copiado, estudado, modificado e redistribuído sem restrição. A forma usual de um software ser distribuído livremente é sendo acompanhado por uma licença de software livre (como a GPL ou a BSD), e com a disponibilização do seu código-fonte.
Software Livre é diferente de software em domínio público. O primeiro, quando utilizado em combinação com licenças típicas (como as licenças GPL e BSD), garante os direitos autorais do programador/organização. O segundo caso acontece quando o autor do software renuncia à propriedade do programa (e todos os direitos associados) e este se torna bem comum.
Richard Stallman
O Software Livre como movimento organizado teve início em 1983, quando Richard Stallman (foto acima) deu início ao Projeto GNU e, posteriormente, à Free Software Foundation.
Software Livre se refere à existência simultânea de quatro tipos de liberdade para os usuários do software, definidas pela Free Software Foundation. Veja abaixo uma explicação sobre as 4 liberdades, baseada no texto em português da Definição de Software Livre publicada pela FSF:
As 4 liberdades básicas associadas ao software livre são:
- A liberdade de executar o programa, para qualquer propósito (liberdade nº 0)
- A liberdade de estudar como o programa funciona, e adaptá-lo para as suas necessidades (liberdade nº 1). Acesso ao código-fonte é um pré-requisito para esta liberdade.
- A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo (liberdade nº 2).
- A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie (liberdade nº 3). Acesso ao código-fonte é um pré-requisito para esta liberdade.
Um programa é software livre se os usuários tem todas essas liberdades. Portanto, você deve ser livre para redistribuir cópias, seja com ou sem modificações, seja de graça ou cobrando uma taxa pela distribuição, para qualquer um em qualquer lugar. Ser livre para fazer essas coisas significa (entre outras coisas) que você não tem que pedir ou pagar pela permissão, uma vez que esteja de posse do programa.
Você deve também ter a liberdade de fazer modifcações e usá-las privativamente no seu trabalho ou lazer, sem nem mesmo mencionar que elas existem. Se você publicar as modificações, você não deve ser obrigado a avisar a ninguém em particular, ou de nenhum modo em especial.
A liberdade de utilizar um programa significa a liberdade para qualquer tipo de pessoa física ou jurídica utilizar o software em qualquer tipo de sistema computacional, para qualquer tipo de trabalho ou atividade, sem que seja necessário comunicar ao desenvolvedor ou a qualquer outra entidade em especial.
A liberdade de redistribuir cópias deve incluir formas binárias ou executáveis do programa, assim como o código-fonte, tanto para as versões originais quanto para as modificadas. De modo que a liberdade de fazer modificações, e de publicar versões aperfeiçoadas, tenha algum significado, deve-se ter acesso ao código-fonte do programa. Portanto, acesso ao código-fonte é uma condição necessária ao software livre.
Para que essas liberdades sejam reais, elas tem que ser irrevogáveis desde que você não faça nada errado; caso o desenvolvedor do software tenha o poder de revogar a licença, mesmo que você não tenha dado motivo, o software não é livre.
O que é copyleft?
Copyleft é uma extensão das 4 liberdades básicas, e ocorre na forma de uma obrigação. Segundo o site da Free Software Foundation, “O copyleft diz que qualquer um que distribui o software, com ou sem modificações, tem que passar adiante a liberdade de copiar e modificar novamente o programa. O copyleft garante que todos os usuários tem liberdade.” – ou seja: se você recebeu um software com uma licença livre que inclua cláusulas de copyleft, e se optar por redistribui-lo (modificado ou não), terá que mantê-lo com a mesma licença com que o recebeu.
Nem todas as licenças de software livre incluem a característica de copyleft. A licença GNU GPL (adotada pelo kernel Linux) é o maior exemplo de uma licença copyleft. Outras licenças livres, como a licença BSD ou a licença ASL (Apache Software License) não incluem a característica de copyleft.
Acima você vê o símbolo do copyleft, palavra que é um trocadilho com copyright, e cuja tradução aproximada seria “deixamos copiar”, ou “cópia permitida”.
Dúvidas e enganos comuns sobre software livre sob a licença GPL
Posso distribuir comercialmente ou cobrar por software livre, de minha autoria ou de terceiros?
Note que a definição de liberdade apresentada acima não faz nenhuma referência a custos ou preços. O fato de se cobrar ou não pela distribuição ou pela licença de uso do software não implica diretamente em ser o software livre ou não. Nada impede que um software livre obtido por você seja copiado e vendido, tenha ela sido modificado ou não por você. Ou seja, software livre não necessariamente precisa ser gratuito.
Portanto, você pode ter pago para receber cópias de um software livre, ou você pode ter obtido cópias sem nenhum custo. Mas independente de como você obteve a sua cópia, você sempre tem a liberdade de copiar e modificar o software, ou mesmo de vender cópias – ou distribui-las gratuitamente.
“Software Livre” não significa “não-comercial”. Um programa livre deve estar disponível para uso comercial, desenvolvimento comercial, e distribuição comercial. O desenvolvimento comercial de software livre não é incomum; tais softwares livres comerciais são muito importantes.
Se eu distribuo um software livre, tenho que fornecer cópias a qualquer interessado, ou mesmo disponibilizá-lo para download público?
A resposta curta seria “não”. Seria uma atitude em sintonia com a filosofia da liberdade de software se você o disponibilizasse para qualquer interessado, preferencialmente em um formato de fácil manipulação (exemplo: imagens ISO de CD-ROMs, pacotes tar.gz com os códigos-fonte ou outros formatos para código executável instalável), mas você não tem esta obrigação.
Entretanto, você tem que deixar o código-fonte à disposição de quem vier a receber o código-executável (caso você não os distribua em conjunto, que é a forma mais apropriada), nos termos da licença. E, naturalmente, tem que respeitar todos os demais termos da licença livre adotada.
Se eu uso um software livre, tenho que disponibilizar meus próprios softwares para o público?
Não. Mesmo se você fizer alterações em um software GPL e guardá-las para seu próprio uso, você não estará infringindo a licença. A obrigação básica da GPL, no que diz respeito a disponibilização de software, é que se você for disponibilizar para terceiros algum software obtido sob os termos da GPL (modificado por você ou não), esta disponibilização deve ocorrer sob os termos da GPL.
Assim, é perfeitamente legal e normal um mesmo desenvolvedor disponibilizar alguns softwares com licenças livres e outros com licenças proprietárias, ter softwares livres e não-livres instalados no mesmo computador, usar softwares livres (como o compilador GCC) como ferramentas de desenvolvimento de softwares proprietários, ou incluir softwares livres e não-livres no mesmo CD-ROM, para citar alguns exemplos.
Outras dúvidas comuns
Veja a resposta a muitas dúvidas freqüentes de desenvolvedores, distribuidores e usuários de Software Livre na GPL FAQ (em português).
Software livre X Código aberto
Em 1998, um grupo de personalidades da comunidade e do mercado que gravita em torno do software livre, insatisfeitos com a postura filosófica do movimento existente e acreditando que a condenação do uso de software proprietário é um instrumento que retarda, ao invés de acelerar, a adoção e o apoio ao software livre no ambiente corporativo, criou a Open Source Initiative, que adota o termo Open Source (Código Aberto) para se referir aos softwares livres, e tem uma postura voltada ao pragmatismo visando à adoção do software de código aberto como uma solução viável, com menos viés ideológico que a Free Software Foundation.
Ao contrário do que muitos pensam, Código Aberto não quer dizer simplesmente ter acesso ao código-fonte dos softwares (e não necessariamente acompanhado das “4 liberdades” do software livre). Para uma licença ou software ser considerado como Código Aberto pela Open Source Initiative, eles devem atender aos 10 critérios daDefinição de Código Aberto, que incluem itens como Livre Redistribuição, Permissão de Trabalhos Derivados, Não Discriminação, Distribuição da Licença e outros.
De modo geral, as licenças que atendem à já mencionada Definição de Software Livre (da Free Software Foundation) também atendem à Definição de Código Aberto (da Open Source Initiative), e assim pode-se dizer (na ampla maioria dos casos, ao menos) que se um determinado software é livre, ele também é de código aberto, e vice-versa. A diferença prática entre as duas entidades está em seus objetivos, filosofia e modo de agir, e não nos softwares ou licenças.
Segundo a Free Software Foundation, em sua página sobre o assunto:
O movimento Free Software e o movimento Open Source são como dois campos políticos dentro da comunidade de software livre.
Grupos radicais na década de 1960 desenvolveram uma reputação de facções: organizações que se dividem devido a discordâncias em detalhes das estratégias, e aí se tratavam mutuamente como inimigas. Ou ao menos esta é a imagem que as pessoas têm delas, seja ou não verdadeira.
O relacionamento entre o movimento Free Software e o movimento Open Source é justamente o oposto deste. Nós discordamos nos princípios básicos, mas concordamos (mais ou menos) nas recomendações práticas. Assim nós podemos e de fato trabalhamos juntos em diversos projetos específicos. Nós não vemos o movimento Open Source como um inimigo. O inimigo é o software proprietário.
A Wikipédia traz mais detalhes:
Muitos que preferem o termo software livre e se consideram parte do movimento não acham que software proprietário seja estritamente imoral. Eles argumentam, no entanto, que liberdade é valiosa (tanto social quanto pragmaticalmente) como uma propriedade do software em seu próprio direito, separado da qualidade técnica num sentido limitado. Mais, eles podem usar o termo “software livre” para se distanciarem das alegações que software de “código aberto” é sempre tecnicamente superior a software proprietário (o que é quase sempre demonstravelmente falso, ao menos em um curto período). Nesse sentido, eles alegam que os defensores de “código aberto”, por se concentrarem exclusivamente nos méritos técnicos, encorajam os usuários a sacrificarem suas liberdades (e os benefícios que essas trazem em um longo período) por conveniências imediatistas que o software proprietário pode oferecer.
Os defensores do Código Aberto argumentam a respeito das virtudes pragmáticas do software livre (também conhecido como “Open source” em inglês) ao invés das questões morais. A discordância básica do Movimento Open Source com a Free Software Foundation é a condenação que essa faz do software proprietário. Existem muitos programadores que usam e contribuem software livre, mas que ganham dinheiro desenvolvendo software proprietário, e não consideram suas ações imorais. As definições “oficiais” de software livre e de código aberto são ligeiramente diferentes, com a definição de software livre sendo geralmente considerada mais rigorosa, mas as licenças de código aberto que não são consideradas licenças de software livre são geralmente obscuras, então na prática todo software de código aberto é também software livre.
O movimento software livre, não toma uma posição sobre trabalhos que não sejam software e documentação dos mesmos, mas alguns defensores do software livre acreditam que outros trabalhos que servem um propósito prático também devem ser livres (veja Free content).
Para o Movimento do Software Livre, que é um Movimento Social, não é ético aprisionar conhecimento científico, que deve estar disponível sempre, para permitir assim a evolução da humanidade. Já o Movimento pelo Código Aberto, que não é um Movimento Social, mas voltado ao Mercado, prega que o Software desse tipo traz diversas vantagens técnicas e econômicas. Este segundo movimento surgiu para levar as empresas a adotarem o modelo de desenvolvimento de Software Livre.
Licenças de software livre
Existem muitas licenças de software livre, e nada impede (embora isto não seja recomendado) que cada interessado crie sua própria licença atendendo às 4 liberdades básicas, agregando – ou não – uma cláusula de copyleft.
A Free Software Foundation mantém uma página com uma lista de licenças conhecidas, classificando-as entre livres (compatíveis ou não com a GPL) e não-livres, incluindo comentários sobre elas.
Algumas das licenças livres mais populares são:
Exemplos de softwares livres
Alguns softwares livres notáveis são o Linux, o ambiente gráfico KDE, o compilador GCC, o servidor web Apache, o OpenOffice.org e o navegador web Firefox, entre muitos outros.
Definições
Nas referências empregadas no BR-Linux, assume-se que a expressão “Software Livre” (ou “Free Software”) será empregada conforme a definição da Free Software Foundation, e que a expressão “Código Aberto” (ou “Open Source”) será empregada conforme definido pela Open Source Initiative. Softwares serão considerados como livres quando estiverem sob uma licença que se qualifique como software livre pela definição acima, e serão considerados como abertos quando estiverem sob uma licença que se qualifique como código aberto pela definição acima, levando em consideração a intersecção entre os 2 conjuntos.
Referências
Além dos links mencionados ao longo do texto, visite também os textos abaixo:
Para citar esta página em seu trabalho acadêmico
Dados para referência bibliográfica:
CAMPOS, Augusto. O que é software livre. BR-Linux. Florianópolis, março de 2006. Disponível em . Consultado em [data da sua consulta].
O que é um sistema operacional?
Um sistema operacional (SO) é uma coleção de programas que inicializam o hardware do computador. Fornece rotinas básicas para controle de dispositivos. Fornece gerência, escalonamento e interação de tarefas. Mantém a integridade de sistema.
Oi pessoal, vamos lá? Sistema operacional(SO)? O que é isso? Será que é apenas um grandesoftware de alto porte que ópera simplesmente para digitar um texto qualquer ou jogar paciência spider? rs! Errado! Nessa matéria vamos saber a verdade sobre o que é um sistema operacional.
O sistema operacional é uma coleção de programas que:
- Inicializa o hardware do computador
- Fornece rotinas básicas para controle de dispositivos
- Fornece gerência, escalonamento e interação de tarefas
- Mantém a integridade de sistema
Há muitos tipos de Sistemas Operacionais, cuja complexidade varia e depende de que tipo de funções é provido, e para que computador esteja sendo usado. Alguns sistemas são responsáveis pela gerência de muitos usuários, outros controlam dispositivos de hardware como bombas de petróleo.
Um Sistema Operacional muito simples para um sistema de controle de segurança poderia ser armazenado numa memória ROM (Só de Leitura - um chip que mantém instruções para um computador), e assumir o controle ao ser ligado o computador. Sua primeira tarefa seria reajustar (e provavelmente testar) os sensores de hardware e alarmes, e então ativar uma rotina monitorando ininterruptamente todos os sensores introduzidos. Se o estado de qualquer sensor de entrada for mudado, é ativada uma rotina de geração de alarme.
Em um grande computador multiusuário, com muitos terminais, o Sistema Operacional é muito mais complexo. Tem que administrar e executar todos os pedidos de usuários e assegurar que eles não interferiram entre si. Tem que compartilhar todos os dispositivos que são seriais por natureza (dispositivos que só podem ser usados por um usuário de cada vez, como impressoras e discos) entre todos os usuários que pedem esse tipo de serviço. O SO poderia ser armazenado em disco, e partes dele serem carregadas na memória do computador (RAM) quando necessário. Utilitários são fornecidos para:
- Administração de Arquivos e Documentos criados por usuários
- Desenvolvimento de Programas
- Comunicação entre usuários e com outros computadores
- Gerenciamento de pedidos de usuários para programas, espaço de armazenamento e prioridade
Adicionalmente, o SO precisaria apresentar a cada usuário uma interface que aceita, interpreta, e então executa comandos ou programas do usuário. Essa interface é comumente chamada de SHELL (=cápsula, manteremos o nome original em inglês) ou interpretador de linha de comando (CLI). Em alguns sistemas ela poderia ser uma simples linha de texto que usam palavras chaves (como MSDOS ou UNIX); em outros sistemas poderiam ser gráficas, usando janelas e um dispositivo apontador como um mouse (como Windows95 ou X - Windows).
As Várias Partes de um Sistema Operacional
Um sistema operacional de um computador que é usado por muitas pessoas ao mesmo tempo, é um sistema complexo. Contém milhões de linhas de instruções escritas por programadores. Para tornar os sistemas operacionais mais fáceis de serem escritos, eles são construídos como uma série de módulos, cada módulo sendo responsável por uma função. Os módulos típicos em um grande SO multiusuário geralmente são:
- Núcleo (Kernel em inglês - também conhecido como "executivo")
- Gerenciador de processo
- Escalonador (Scheduler, em inglês)
- Gerenciador de arquivo
O Núcleo - Um Executivo em Tempo-Real
O núcleo de um sistema operacional é algumas vezes chamado de EXECUTIVO em tempo real. Algumas das funções executadas por ele são:
- Chaveamento entre programas
- Controle e programação de dispositivo de hardware
- Gerenciamento de memória
- Gerenciamento de processos
- Escalonamento de tarefas
- Comunicação entre processos
- Processamento de exceções e de interrupção
Nosso sistema simples de monitoração de segurança não teria todas as funções acima, já que provavelmente seria um sistema mono-tarefa, executando apenas um programa. Como tal, não precisaria processar permutas entre mais de um programa ou permitir comunicação entre programas (comunicação entre processos). A gerência da memória seria desnecessária, já que o programa residiria permanentemente em ROM ou em EPROM (uma forma programável especial de ROM).
Um sistema operacional projetado para manusear um grande número de usuários precisaria de um núcleo para executar todas as funções acima. Programas de usuários geralmente são armazenados em disco, assim precisa ser carregado em memória antes de ser executado. Isso apresenta a necessidade de gerência da memória, já que a memória do computador precisaria ser pesquisada para localizar uma área livre para carregar um programa de usuário na mesma. Quando o usuário tivesse encerrada a execução do programa, a memória consumida por ele precisaria ser liberada e se tornaria disponível para outro usuário quando solicitado.
Gerenciamento e Escalonamento (Scheduling) de processos também são necessários, de forma que todos os programas possam ser executados razoavelmente. Não há como um programa de um usuário específico ser executado numa área de extensão, negando o funcionamento de qualquer outro programa, e fazendo todos os outros usuários esperarem. Adicionalmente, alguns programas poderiam precisar ser executados mais freqüentemente que outros, por exemplo, checando comunicações de rede ou imprimindo. Alguns programas podem precisar ser suspensos temporariamente, e serem reiniciados depois, assim introduzindo a necessidade da comunicação inter-programas.
Programando um computador
Um programa é uma seqüência de instruções ao computador. Quando o programador de software (uma pessoa que escreve programas para serem executados em um computador) desenvolve um programa, este é convertido em uma longa lista de instruções que são executadas pelo sistema de computador.
Em sistemas operacionais nós falamos mais de um processo do que de um programa. Nos sistemas operacionais modernos, só uma porção de um programa é carregada em cada instante. O resto do programa espera numa unidade de disco até que se precise do mesmo. Isso economiza espaço de memória.
Os programas no computador são executados por processadores. Um processador é um chip no computador que executa instruções de programa. Processadores executam milhões de instruções por segundo.
Um Processo
Um processo ou tarefa é uma porção de um programa em alguma fase de execução. Um programa pode consistir de várias tarefas, cada uma com funcionamento próprio ou como uma unidade (talvez se comunicando entre si periodicamente).
A Thread (fileira, linha)
Uma thread é uma parte separada de um processo. Um processo pode consistir de várias threads cada uma das quais sendo executada separadamente. Por exemplo, uma thread poderia tratar refresh e gráficos na tela, outra thread trataria impressão, outra thread trataria o mouse e o teclado. Isso dá bom tempo de resposta em programas complexos. Windows NT é um exemplo de um sistema operacional que suporta multi-thread.
Sistemas operacionais de Multi-processo
Alguns sistemas executam só um único processo, outros sistemas executam múltiplos processos de cada vez. A maioria dos computadores é baseada num único processador, e um processador pode executar só uma instrução de cada vez. Assim, como é possível um único processador executar processos múltiplos? A resposta mais imediata é que ele não faz desse modo. O processador do computador executa um processo por um período pequeno de tempo, e então muda para o próximo processo e assim por diante. Como o processador executa milhões de instruções por segundo, isso dá a impressão de muitos processos serem executados ao mesmo tempo.
Em um sistema de computador que suporta mais de um processo de cada vez, algum mecanismo deve ser usado para intercalar de uma tarefa para outra. Há dois métodos principais usados para fazer essa troca:
- Escalonamento por Cooperação indica que uma tarefa que está sendo executada atualmente deixará voluntariamente em algum momento o processador e permitirá que outros processos sejam executados.
- Escalonamento Preemptivo significa que uma tarefa corrente será interrompida (forçou a se render) e o processador se dedica a outro processo em estado de espera.
O problema da mudança por cooperação é que um processo poderia demorar e assim negar a execução de outros processos e poderia resultar em nenhum trabalho ser feito. Um exemplo de um sistema de cooperação é o Windows 3.1
O escalonamento preemptivo é melhor. Dá mais respostas a todos os processos e ajuda a prevenir (ou reduz o número de ocorrências de) contra o medo de máquinas travadas. Windows NT é um exemplo de tal sistema operacional.
Nota: Só para programas de 32bits em Windows 95 há escalonamento preemptivo. Programas de 16bits ainda são escalonados cooperativamente, o que significa que ainda é fácil para um programa de 16bits travar um computador Windows.
Contexto de Troca
Quando o processador muda de um processo a outro, o seu estado (o processador registra e associa os dados) deve ser salvo, pois algum tempo depois, será reiniciado o processo e continuará como se nunca fora interrompido. Uma vez esse estado tenha sido salvo, o próximo processo em espera é ativado. Isso envolve carga nos registradores do processador e na memória, com todos os dados previamente salvos, e reiniciando na instrução que seria executada quando houve a última interrupção. O ato de mudar de um processo a outro é chamado troca de contexto. Um período de tempo que um processo execute antes de ser trocado é chamado de time slice ou período de quantum.
Escalonamento (Scheduling)
A decisão de qual o próximo processo deve ser executado é chamado escalonamento (scheduling), e pode ser feito em uma grande variedade de maneiras. Escalonadores por cooperação geralmente são muito simples, já que os processos são organizados em fila circular (ROUND ROBIN). Quando um processo corrente se deixa, vai para o fim da fila. O processo no topo da fila é então executado, e todos os processos se movimentam um lugar para cima na fila. Isso provê uma medida justa, mas não impede que um processo monopolize o sistema (não se deixando).
Escalonadores preemptivos usam um relógio em tempo real que gera interrupção a intervalos regulares (digamos, a cada 1/100 de um segundo). Cada vez que uma interrupção ocorre, o processador muda para outra tarefa. Sistemas que geralmente empregam esse tipo de escalonamento atribuem prioridades a cada processo, de forma que alguns podem ser executados mais freqüentemente que outros.
Carga do Sistema Operacional
O SO pode ser carregado na memória de um computador de duas maneiras.
- Já está presente em ROM
- É carregado a partir do disco quando o computador é ligado.
Se o SO já está presente em ROM (para sistemas tipo controladores industriais, bombas de petróleo, etc), ele ganhará controle imediato do processador ao ser ligado o computador. Para sistemas mais complexos, o SO é armazenado normalmente em mídia secundária (como disco), e é carregado em RAM quando o computador é ligado. A vantagem desse tipo de sistema é que o escalonamento para o SO é mais fácil de fazer e programar.
O PROCESSO de BOOTSTRAP
Descreve a ação da carga inicial do sistema operacional do disco para a RAM. Uma pequena rotina armazenada em ROM, chamada de CARREGADOR de BOOTSTRAP ou IPL (Carregador de Programa Inicial), lê uma rotina especial de carga no disquete. Em sistema baseado em disquete, essa rotina normalmente reside na trilha 00, setor 00 (ou 01), e é chamado de setor de booting. O código contido no setor é transferido para a RAM, e então é executada. Tem a responsabilidade exclusiva de carregar o resto do sistema operacional na memória.
Tipos diferentes de processamentos em sistemas operacionais
Sistemas operacionais são divididos em categorias que definem as suas características. Sistemas modernos podem usar combinações de essas categorias descritas a seguir.
BATCH (em LOTE)
O tipo mais antigo de SO permite só um programa ser executado de cada vez. O programa que é carregado no computador é executado completamente. Os dados usados pelo programa não podem ser modificados enquanto o programa está sendo executado. Qualquer erro no programa ou nos dados significa começar tudo novamente.
INTERATIVO
Esses permitem a modificação e entrada de dados ainda durante a execução do programa. Sistemas típicos são reservas de vôo aéreo e linguagens como BASIC.
TIME-SHARING/MULTI-USUÁRIO
Esses SOs compartilham o computador entre mais de um usuário, e adota técnicas de escalonamento preemptivo.
MULTI-TAREFAS
Mais de um processo pode ser executado concorrentemente. O processador é escalonado rapidamente entre os processos. Um usuário pode ter mais de um processo executado de cada vez.
TEMPO REAL
Principalmente usado em controle de processos, telecomunicações, etc. O SO monitora várias entradas que afetam a execução de processos, mudando os modelos de computadores do ambiente, e assim afetando as saídas, dentro de um período de tempo garantido (normalmente < 1 segundo).
MULTI-PROCESSAMENTO
Um computador que tem mais de um processador central dedicados na execução de processos.
Antivírus: como funciona, para que serve e dicas de segurança
A internet facilita muito o dia a dia da sociedademoderna, isso todo mundo sabe, assim como também sabe que o que ela tem de facilitadora ela tem de perigosa. Uma das formas mais conhecidas e usadas para proteger as informações que estão no computador, bem como a própria máquina é instalar um bomantivírus.
Mas o que são antivírus e como eles funcionam? Antivírus na verdade são programas que tem por finalidade proteger o computador da entrada de ameaças eletrônicas chamadas de vírus de computador. Servem também para detectar se o sistema já está infectado e se é necessário eliminar possíveis contaminações que já estejam presentes na máquina.
Geralmente eles agem por dois caminhos distintos que se complementam. O primeiro é fazendo uma comparação dos arquivos da memória do computador com uma lista de vírus já conhecidos. Para isso é necessário uma atualização contínua dessa lista, uma vez que surgem inúmeros novos programas maliciosos na internet diariamente, numa estimativa de cerca de 55 mil novo vírus por dia, e essa atualização já é feita pelo próprio antivírus.
A segunda linha de atuação é rastrear os programas que possuem comportamento suspeito, isto é, verificar aqueles arquivos ou programas que se comportam como vírus, já que geralmente eles agem de forma muito semelhante. Essa abordagem é feita em conjunto com a primeira, quando o antivírus julga como suspeito algum arquivo que não esteja na lista dos vírus conhecidos.
Além de ter um antivírus de boa qualidade e atualizado no computador, para que este possa apresentar melhores resultados é interessante também que o usuário tenha sempre cautela ao usar a internet, pois nesse vasto território todocuidado é pouco, não deixando tudo por conta do antivírus, pois estes às vezes podem também não detectar novos arquivos maliciosos, muitas vezes por não conseguir acompanhar a velocidade de surgimento de novas ameaças, por isso atenção ao abrir e-mails, baixar programas ou arquivos da internet ou abrir Pen Drives ou CDs no computador.
Fontes de informaçõestechtudo.com.br/curiosidades/noticia/2011/07/como-funciona-o-anti-virus.htmlantivirusgratisportugues.com/o-que-e-antivirus
O que é driver de dispositivo
Driver de dispositivos são os programas que fazem um dispositivo funcionar. Por exemplo, quando vc instala um sistema operacional em um computador, vc precisa instalar os drivers da placa-mãe para que o áudio e outros itens funcionem em sua plenitude. Se aparece na tela do seu pc uma mensagem pedindo para "instalar os drivers do dispositivo" pode observar que há algo faltando. Não confunda driver com drive. Drive são as unidades físicas, como o DVD, disquete etc. Espero ter ajudado.