Buscar

Trabalho Final S O - Wellython Salmo de Souza Sá P

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!

Continue navegando