Baixe o app para aproveitar ainda mais
Prévia do material em texto
• Histórico do Unix e do Linux • Visão geral do Linux • Processos no Linux • Gerenciamento de Memória no Linux • O sistema de arquivos Linux • Segurança no Linux • Android: Histórico, Arquitetura Android, Extensões do Linux e exemplos de implementação A origem do Unix O primeiro sistema Unix foi criado em 1965 em Nova Jersey, por Ken Thompson e Dennis Ritchie, os mesmos criadores da Linguagem C. O sistema teve como primeiro nome, “Multicks”, criado apenas por Ken. O que é o Unix? Unix é um sistema portável, multiusuário e multitarefas. O que significa que ele permite um computador executar vários programas simultaneamente e ter vários usuários ativos ao mesmo tempo. Pesquisadores da Universidade da Califórnia desenvolveram uma versão do Unix para que ele funcionasse em suas plataformas. Esse sistema começou a ser disponibilizado para ser utilizado em outras empresas, o que gerou uma explosão de versões do UNIX. 1976 1979 1977 Após esses eventos, o sistema operacional já contava com aprimoramentos significativos, como um sistema com maior mobilidade e vários outros utilitários adicionados. Em 1983 foi o ano do surgimento do UNIX System V, a versão comercial do sistema a partir do direito de comercialização obtido pela AT&T. O novo UNIX comercial segue até hoje como o padrão internacional no mercado UNIX. Atualmente, UNIX é o nome dado a uma família de Sistemas Operacionais, porém o Linux, apesar de compartilhar diversos conceitos originais do UNIX, não faz parte dessa família. Existem mais de 40 sistemas operacionais da família Unix rodando em computadores, smartphones, relógios, etc. Dela, podem-se listar os sistemas: BSD, Solaris, IRIX, AIX, HP-UX, Tru64, SCO, entre outros. UNIX System V http://ninjadolinux.com.br/sistema-operacional-bsd/ Dois anos depois, em 1987, o escritor e professor universitário, Andrew Tanenbaum começou a desenvolver uma versão reduzida desse sistema, chamada de Minix, com o objetivo de ensinar programação de sistemas operacionais aos seus alunos. MINIX Linux, criado como um projeto de um jovem estudante finlandês chamado Linus Torvalds. Na época em que os sistemas mais populares eram o Unix, 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. O Windows, que na verdade era a opção pra quem não podia comprar um computador da Apple. Formas de utilização Red Hat Enterprise Linux Desktop SUSE Linux Enterprise Desktop Ubuntu Desktop for Enterprise É uma escolha sólida para adoção em desktops, e certamente mais estável e segura do que uma instalação padrão do Windows. A configuração padrão do RHEL Desktop inclui e-mail integrado, agenda, gerenciamento de contatos, um pacote de aplicativos para escritório e capacidades de virtualização para permitir que os usuários rodem o Windows e apps legado quando necessário. A SUSE também oferece configurações para desktops e servidores do seu software Linux para empresas. Como o Linux é uma plataforma aberta e flexível, basicamente quase todos os apps disponíveis em uma plataforma Linux desktop para empresas também estarão disponíveis para outras distribuições. Desta forma, o SUSE também se integra com o Microsoft Active Directory e o. Microsoft Exchange e funciona com o Novell GroupWise O Ubuntu é um favorito entre os usuários Linux, seja para o desenvolvimento mais pesado de software, para rodar um servidor de mídia ou fornecer funcionalidades ‘end-of-life’ para hardwares mais antigos. A mesma distribuição básica está disponível em uma versão para empresas, e muitos fabricantes de hardware oferecem o Ubuntu como uma opção de sistema pré- instalado. Formas de utilização Linux Mint Trusted End Node Security Apesar de não ser desenvolvimento especificamente para adoção em empresas, vale citar o Linux Mint aqui porque possui a reputação de ser um dos ambientes Linux desktop mais fáceis para novos usuários. Construída em torno do gerenciador de janelas popular e proprietário Cinnamon, a versão atual do Mint é baseada nas distribuições Ubuntu e Debian Linux. Se as suas principais preocupações são segurança e privacidade, então vale dar uma olhada em mais essa opção. A Trusted End Note Security (TENS) é uma distribuição do Linux desenvolvida pela Força Aérea dos EUA e aprovada pela Agência Nacional de Segurança dos EUA, a NSA, para uso seguro. Essa distribuição não conta com uma base enorme de aplicações, mas oferece suporte para recursos de segurança como login com cartões inteligentes (smart cart e key-card). Uma das coisas que os usuários mais estranham quando migram para o Linux é a existência de diversas interfaces gráficas, coisa que não é comum no Windows nem no Mac OS X, a não ser quando o fabricante decide fazer alguma alteração. Diferente do que acontece nesses outros sistema operacionais, no Linux é possível mudar a interface gráfica do sistema. As interfaces gráficas mais conhecidas são Unity, Gnome, KDE, XFCE, LXDE, Cinnamon e Mate. No momento a mais usada no Linux é o Unity por ser a interface gráfica padrão do Ubuntu. file:///C:/Users/viviane-04/Downloads/01_familiar.webp É o interpretador de comandos do Linux. o shell é um arquivo executável armazenado em /bin. No modo gráfico, um shell é executado em cada terminal aberto. •Os comandos digitados pelo usuário podem ser comandos internos (embutidos ou builtin command) do shell, mas na maioria das vezes eles são programas externos. A lista dos comandos embutidos pode ser obtida com o comando help. https://guialinux.uniriotec.br/linux/ https://guialinux.uniriotec.br/help/ As chamadas de sistemas são funções (interfaces) usadas pelos aplicativos para solicitar a execução de algum serviço ao kernel do sistema operacional. Por isso, as chamadas de sistemas são instruções com maior privilégio quando comparadas às outras instruções. Com as chamadas de sistemas é possível, por exemplo, definir acesso a recursos de baixo nível como alocação de memória, periféricos e arquivos. Além disso, são as chamadas de sistemas que permitem a criação e a finalização de processos. https://guialinux.uniriotec.br/kernel/ https://guialinux.uniriotec.br/processo/ Processo é definido como porções de programas ou programa inteiro em funcionamento na memória do computador. Mais especificadamente, do ponto de vista do sistema operacional é a estrutura responsável pela manutenção de todas as informações necessárias à execução de um programa. De uma forma mais simples, tudo que estiver em execução na máquina é um processo, ou seja, o VI aberto é um processo, e até mesmo o shell onde você está logado no momento é um processo. O que é um processo? Composição No diretório /proc, para cada processo em execução existe um subdiretório. Os nomes dos subdiretórios são os PIDs desse processos; os arquivos cmdline, environ e status dentro desses subdiretórios contém informações detalhadas sobre a execução desses processos: cmdline – O que foi digitado para iniciar o processo (pode também ter sido iniciado através de um programa ou pelo kernel). environ – Variáveis de Ambiente existentes no momento da execução do processo. status – Dados sobre a execução do Processo (PID, status da execução do programa, memória consumida, memória executável, UID, GID, etc). São comandos, em shell, ou seja, linha de comando, que utilizamos para localizar e gerenciar os arquivos no diretório. Abaixo seguem alguns comandos mais usados e seus respectivos exemplos, bem como a correta sintaxe de referido comando. Vale lembrar que todos os comandos são executados na linha de comando do linux (console): 4. find Procura por arquivos ou diretórios no disco. Exemplo: find / -name grep -maxdepth 3 - Procura no diretório raíz e sub-diretórios até o 3o. nível, um arquivo/diretório chamado grep . 5. grep Procura por um texto dentro de um arquivo ou no dispositivo de entrada padrão. Exemplo: grep "capitulo" texto.txt , ps ax|grep inetd , grep"capitulo" texto.txt -A 2 -B 2 1. cat Mostra o conteúdo de um arquivo ou binário. Exemplo: cat /usr/doc/copyright/GPL 2. tac Mostra o conteudo de um arquivo ou binário, como o Cat, mas na ordem inversa. Exemplo: tac /usr/doc/copyright/GPL 3. rm Apaga arquivos. Também pode ser utilizado para apagar diretórios e sub-diretórios vazios ou que contenham arquivos. rm teste.txt - Apaga o arquivo teste.txt no diretório atual Less O comando less do sistema operacional Unix serve para mostrar arquivos texto. Possui a capacidade de exibir o arquivo de maneira paginada, com opção de rolagem para trás e para frente. Como não necessita ler todo o arquivo de entrada antes de exibi-lo, consegue maior desempenho comparado a outros visualizadores e editores quando manipulam arquivos grandes. O uso mais simples é executar a ferramenta com o nome do arquivo ou o caminho e nome dele como argumento. Enquanto less visualiza o arquivo é possível fazer buscas dentro do mesmo através de alguns comandos. Se a saída de less é redirecionada para um arquivo ou encadeamento, ele passa a executar de maneira análoga ao cat Emacs Este editor de textos tem algumas características um pouco diferentes daquelas dos editores que conhecemos, mas adota uma filosofia muito utilizada no Linux. Ele trabalha com uma janela onde é digitado o texto e outra onde são digitados comandos específicos para o editor de textos. Para iniciar o editor digite na linha de comando: Exemplo: emacs [arquivo Joe Para os saudosistas do Wordperfect, esse editor implementa uma aparência semelhante ao seu predecessor. Tendo uma linha de status que fica no topo da janela, com as informações de status do arquivo, nome do arquivo, linha, coluna, hora e as teclas para se obter a ajuda, é um editor muito leve e prático. Seu sistema consiste basicamente em iniciar o editor e começar a digitar. Tem uma "janela" de ajuda que pode ficar visível durante todo o tempo ou oculta, bastando para isso pressionar Ctrl-H, alternando-se o modo de exibição da "janela". A estrutura dos sistemas de arquivos do Linux é definida por um padrão denominado Filesystem Hierarchy Standard (Padrão de Hierarquia do Sistema de Arquivos), a qual define também as estruturas de outros sistemas como o BSD, por exemplo. O Filesystem Hierarchy Standard (FHS) evoluiu a partir de padrões históricos originados de versões mais antigas do UNIX, como a Berkeley Software Distribution (BSD) e outras. O FHS fornece aos desenvolvedores Linux e administradores de sistemas uma estrutura de diretórios padrão para o sistema de arquivos, trazendo consistência entre sistemas e distribuições. O diretório Root (Raiz) /bin – Binários essenciais dos usuários /boot – Arquivos estáticos de inicialização /cdrom – Ponto de montagem para drives ópticos, como CD-ROMs /dev – Arquivos de Dispositivos /etc – Arquivos de configuração diversos /home – Diretórios Home dos usuários /lib – Bibliotecas compartilhadas essenciais do sistema /lost+found – Arquivos recuperados (“perdidos+encontrados”) /media – Mídias Removíveis /mnt – Pontos de montagem temporários /opt – Pacotes opcionais /proc – Arquivos de Processos e de Kernel /root – Diretório home do usuário root /run – Arquivos de Estado de Aplicações /sbin – Binários para Administração do Sistema /srv – Dados de Serviços /sys – Informações sobre o sistema e hardware /tmp – Arquivos temporários /usr – Binários dos usuários e Dados Somente-Leitura /var – Arquivos de Dados Variáveis “No Linux a memória funciona da seguinte maneira, processos que estão em execução têm prioridade na memória, quando termina um processo e se tiver espaço na memória, ficam resíduos desse processo na memória para uma futura volta desse processo ser mais rápida. Caso essa memória RAM esteja lotada com processos que estão em execução, aí começa a utilização da memória SWAP (troca)”. (LIMA, 2007) Um sistema de arquivos é um conjunto de estruturas lógicas que permite o sistema operacional controlar o acesso a um dispositivo de armazenamento como disco rígido, pen drive, cd-room, etc. Diferentes sistemas operacionais podem usar diferentes sistemas de arquivos. A partição Linux nativo é conhecida por diretório raiz do Linux e é representada por /. Atualmente, o NTFS (New Technology File System) é o sistema de arquivos padrão do Windows, enquanto o ext4 é o do Linux. Para verificar quais os sistemas de arquivos que o seu Linux suporta, basta verificar o conteúdo do arquivo /proc/filesystems. O suporte para diferentes sistemas de arquivos pode ser obtido através de módulos de kernel carregáveis no diretório /lib/modules/XXX/kernel/fs, onde XXX é a versão atual do Linux. No Linux, um diretório (corresponde ao conceito de pasta do Windows) pode ter outros diretórios ou arquivos. Dizemos que um diretório é filho de outro diretório quando ele está logo abaixo do diretório em questão. O diretório que está um nível acima é chamado de diretório pai. O diretório raiz do Linux (ou diretório /) é o diretório com maior hierarquia entre todos os diretórios do sistema. Isto significa que todos os diretórios do Linux ficam abaixo deste diretório. https://guialinux.uniriotec.br/modulos/ https://guialinux.uniriotec.br/kernel/ •EXT3 (third extended filesystem) – foi adotado como padrão Linux a partir de 2001. Introduziu o registro (journal) que melhora a confiabilidade e permite recuperar o sistema em caso de desligamento não programado. EXT3 suporta 16TB (1 terabyte corresponde a 240 bytes) de tamanho máximo no sistema de arquivos, e 2TB de tamanho máximo de um arquivo. Um diretório pode ter, no máximo, 32.000 subdiretórios. •EXT4 (fourth extended filesystem) – passou a ser o padrão Linux a partir de 2008. EXT4 suporta 1EB (1 exabyte corresponde a 260 bytes) de tamanho máximo de sistema de arquivos e 16TB de tamanho máximo de arquivos. É possível ter um número ilimitado de subdiretórios •XFS (Extended Filesystem) – usado como padrão por algumas distribuição Linux desde 2014. XFS é um sistema de arquivos desenvolvido em 64 bits, compatível com sistemas de 32 bits. Ele suporta até 16 EB de tamanho total do sistema de arquivos e até 8 EB de tamanho máximo para um arquivo individual. É considerado um sistema de arquivos de alto desempenho. •JFS (Journaled File System) – é um sistema de arquivos de 64 bits com journaling desenvolvido pela IBM. https://www.ibm.com/br-pt/ Como o Linux é modular, sua segurança é muito mais fácil de gerenciar. Cada elemento do sistema operacional Linux pode ser auditado, monitorado e protegido independentemente. O sistema tem módulos e ferramentas integradas, como o SELinux, que ajudam a melhorar o bloqueio, o monitoramento, a geração de relatórios e a solução de problemas de segurança. O Linux também orquestra esforços para separar o espaço do usuário do kernel. Assim, nem todos os processos executados pelo sistema ficam disponíveis para os usuários, dependendo dos privilégios de função. Da mesma forma, os processos dos usuários não ficam disponíveis para o sistema como um todo. Esse é o principal conceito e fator que possibilita tecnologias como containers e virtualização, pois elas exigem permissões e cargas de trabalho diferentes, separadas e seguras. É claro que um sistema operacional perfeitamente seguro não existe. No entanto, além das vantagens que o Linux oferece, há algumas medidas que você pode tomar para garantir a melhor segurança possível. https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/selinux_users_and_administrators_guide/index https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html-single/security_guide/index O Android surgiu em 2003, na cidade de Palo Alto na Califórnia e foi desenvolvido por Andy Rubin, Rich Miner, Nick Sears e Chris White, empresários já iniciados no ramo da tecnologia, que fundaram a Android Inc. Na ocasião, Rubin definiu o Android Inc. como: "Dispositivos móveis mais inteligentes e que estejam mais cientes das preferências e da localizaçãodo seu dono". No início a empresa desenvolvia todos os seus projetos de forma secreta. A ideia original dos criadores era lançar um inovador sistema para câmeras digitais, porém, ao verem que o mercado não era tão amplo quanto gostariam, resolveram focar no mercado mobile. Na época, Rubin e sua equipe ofereceram um novo meio de sistema operacional móvel, ou seja, o Open Source, baseado no Kernel Linux. https://www.oficinadanet.com.br/linux O Android é um sistema operacional baseado no Kernel do Linux. Sua arquitetura é dividida em quatro camadas: zero, um, dois e três. Os aplicativos desenvolvidos para Android são escritos em Java e executados em tempo real pelas máquinas virtuais Dalvik. Camada Três Camada Dois Camada Um Camada Zero A camada três é que interage diretamente com o usuário e onde aplicativos são escritos. Sua linguagem é Java e a ferramenta mais usada para o desenvolvimento é o Android Studio. A camada dois é a Application Framework e é nela que estão programadas as funções básicas do telefone, que serão utilizadas na camada três. A camada um é onde se encontra o Android Runtime (ART) que é o atual sucessor da DVM e que executa os bytecodes das aplicações de cada três. O ART transforma os bytecodes do Java em código nativo para que possa ser executado pelo processador Encontra-se na camada zero o Kernel do Linux. Gerenciamento de energia, driver de vídeo, câmera e WiFi são responsabilidades desta camada. Ela é a base de toda a estrutura. Também é responsável pelo controle dos processos, gerenciamento de memória e segurança. Obrigado!
Compartilhar