Mostrando postagens com marcador Sistemas Operacionais. Mostrar todas as postagens
Mostrando postagens com marcador Sistemas Operacionais. Mostrar todas as postagens

sábado, 7 de março de 2015

0.0.0.17.1.5 - Como o sistema operacional executa um programa?

Quando digitamos o nome de um executável no terminal, o sistema operacional procura o arquivo correspondente no HD e o lê.
O arquivo contém informações de controle, que serão usadas pelo SO, e a imagem de memória que será copiada (literalmente) para a memória e executada.
Neste nível "executar" significa fazer um salto (JMP, CALL, ou equivalente) para a primeira instrução da imagem de memória que foi carregada. A isto também chamamos passar o controle para o programa.
Quando o programa termina, ele devolve o controle para o SO (com outro JMP ou um RETurn).

0.0.0.17.1.4 - A inicialização do computador

Assim que ligamos o computador (o processador recebe um sinal reset e começa a executar instruções a partir do endereço zero da memória física. Isto é na BIOS.
BIOS é o sistema básico de entrada e saída. É um programa que permite encontrar e acessar dispositivos como HD, CD, placa de rede, portas USB entre outros.
Em um boot normal pelo HD, a BIOS lê e executa um programa (maior que o armazenado na BIOS) localizado no master boot record (MBR) (é nesse setor que se instalam vírus de boot).
Caso o computador tenha apenas um sistema operacional (SO), o programa do MBR carrega e executa o SO.
Caso o computador tenha mais de um sistema operacional (SO), o programa do MBR costuma ser um gerenciador de boot e aguarda o usuário escolher qual SO carregar e executar.

sexta-feira, 6 de março de 2015

0.8 - Sistemas de Arquivos

Chama-se sistema de arquivos tanto o gerenciador de arquivos quanto a forma como os arquivos (e pastas) são organizados.

O sistema de arquivos do Windows geralmente tem raiz em C:/ algumas pastas tem destinação específica como:

Windows                   contém os arquivos do sistema operacional
Program Files            contém os programas instalados no computador
Arquivos de Programa                   idem
Arquivos de Programa(x86)            idem*
Users                                   contém a áreas dos usuários

* esta pasta existe quando o Windows "é" 64-bits para conter programas de 32-bits.

Os tipos de arquivo são determinados pela extensão - executáveis recebem .exe, documentos texto .txt e assim por diante. O sistema operacional usa essa marcação para escolher o que fazer.

Windows é case-insensitive (não diferencia maiúsculas e minúsculas). Atualmente os HDs Windows são formatados em NTFS.

-----

O sistema de arquivos do Linux (e outros UNIX) tem raiz em / e pastas com destinação específica como:

/bin                contém os executáveis do sistema básico (o SO está nela)
/lib                 contém as bibliotecas do sistema básico
/include          contém os headers do sistema básico
/etc                contém os arquivos de configuração do sistema básico
/usr                contém executáveis, bibliotecas, headers de aplicações para usuários.

/proc              contém a representação no sistema de arquivos dos processos em execução

/var                área de armazenamento (geralmente quando a máquina é um servidor web, as páginas são armazenadas em /var/www

/dev                contém a representação no sistema de arquivos dos dispositivos de hardware (sda, sdb geralmente são HDs, sda1, sda2 são partições do HD sda. Algum dos TTY correspondem ao monitor, algumas distribuições de Linux usam ttyUSBn para designar portas USB.

/mnt                contém as referências para acessar o conteúdo de dispositivos de armazenamento.

/home              contém as áreas de usuário - o usuário Fabio terá seus documentos e programas armazenados em /home/Fabio.

UNIX é case-sensitive (diferencia maiúsculas e minúsculas). Ubuntu geralmente formata os HDs com ext4.

UNIX armazena parte da informação sobre o uso de um arquivo (especificamente as permissões) em um conjunto de 10 bits (se os verá com o comando ls -l ). Se todos os bits pudessem ser true simultaneamente você veria drwxrwxrwx. O primeiro bit informa se o arquivo é um diretório ou não, As trincas que vem em seguida são permissões de leitura (r), escrita(w) e execução(x) do arquivo para outros, grupo e usuário. Exemplos abaixo.
 
drwxrwxr-x  3 fabio fabio    4096 Jan 15 14:51 .local/
-rw-rw-r--  1 fabio fabio    3834 Fev 12 20:03 Mestre do Universo.mm

pelos flags, .local é um diretório que pode ser listado (lido), escrito (modificado) e executado (entrar no diretório) pelo seu dono e pelos usuários que forem do mesmo grupo do dono. Os outros podem listar e entrar, mas não podem modificar, ou seja, não podem criar pastas e arquivos dentro de .local.

Nota: nomes começados com ponto (.) em UNIX são excluídos das listagens mais simples, por isso usar apenas o comando ls não listará o .local.

pelos flags, Mestre do Universo.mm não pode ser executado, pode ser lido por qualquer um e modificado pelo proprietário e seu grupo.*

Os comandos chmod, chown e chgrp modificam esses bits.

UNIX identifica os arquivos pelo conteúdo ou pela assinatura, extensões não são necessárias para o SO, mas os usuários (nós) nos orientamos melhor pelas extensões, então é boa idéia mantê-las.


Nota:

* dispositivos de armazenamento externo, como pendrives geralmente são formatados em FAT, que não tem esses bits. Neste caso UNIX não executa esses arquivos, mesmo que eles sejam executáveis.

* tanto Windows quanto Linux não fornecem meios práticos para o usuário do terminal lidar com espaços nos nomes de arquivo, assim, se possível, evite espaços em nomes de arquivos.

* os caracteres dos nomes dos arquivos são codificados em algum sistema. Geralmente Linux usa UTF-8 e Windows usa ISO8859. Essas codificações são compatíveis apenas nos caracteres ASCII de 7 bits. Desta forma usar caracteres fora destes (como os acentuados) é arriscar ter arquivos acessíveis por um SO e inacessíveis por outro.

* veja o post 2.4 - Recomendação sobre escolha de nomes de arquivos e variáveis.

quinta-feira, 5 de março de 2015

0.6 - Terminal do Linux

Quando abro o terminal do Linux, ele está em /home/Fabio. Para saber isso use o comando pwd.

No Lin, arquivos, pastas, dispositivos, processos são representados no sistema de arquivos. Isso permite que se apresente ao usuário apenas uma pasta raiz (root) representada por barra (/) é a pasta raiz do volume de letra C. No exemplo, a pasta home está dentro da pasta raiz e a pasta Fabio dentro da pasta Users. A estrutura é organizada como uma árvores de pastas e arquivos.

Navega-se na árvore de pastas usando os comandos change directory (cd). Lista-se o conteúdo da pasta em que se está com o comado ls.

O símbolo especial ponto (.) representa a pasta corrente, o símbolo especial (..) representa a pasta que contém a pasta corrente (ou pasta pai ou pasta acima). Exemplos:

cd ..                             vai para a pasta de cima
cd /                              vai para a pasta raiz do volume corrente
cd usr                          vai para a pasta (filha) usr, se ela existir
cd ./usr                        vai para a pasta (filha) User, se ela existir
cd /home/Fabio            vai para a pasta \home\Fabio

Nas linhas de comando acima, o que vem depois do cd representa o caminho  na linguagem do terminal. É comum abusar da linguagem e usar apenas caminho para referir-se à sua representaçao.

Caso a representação do caminho comece com barra (/) o caminho é absoluto, ou completo pois ele está completamente especificado.
Caso o caminho comece de outra forma ele é relativo. Caso comece com um identificador, ele é relativo à pasta corrente. Caso comece com ./ também. Caso comece com ../ é relativo à pasta de cima.

Para ver a ajuda dos comandos use man ou info.

Para criar uma pasta: mkdir
Para remover uma pasta vazia: rmdir
Para copiar um arquivo: cp
Para remover um arquivo: rm
Para mover ou renomear uma pasta ou arquivo: mv

Notas:

Diferente do Win, no Lin, o terminal é pensado como uma tela e um teclado que se conectam com o Sistema Operacional. Para isso usa uma de várias linguagens de shell como bsd, csh, ksh, bash,... O terminal padrão do Ubuntu e variações usa bash.

A maioria dos terminais suporta cores.




0.5 - Prompt do WinDOS (kkk) básico

Quando abro o prompt do DOS no WinDOS, ele está em C:\Users\Fabio.

No Win, cada unidade (volume de armazenamento) recebe uma letra e é separado com dois pontos.
No DOS, os disquetes recebiam as letras A e B, e o HD a letra C. Volumes adicionais podem receber as letras seguintes.  Muda-se de pasta usando letra dois pontos enter. Exemplo:

c:       abre unidade c (ou C - DOS não distingue maiúsculas e minúsculas)
d:       abre unidade d (ou D)

Cada volume tem uma pasta raiz representada pela primeira barra invertida, então C:\ é a pasta raiz do volume de letra C. No exemplo, a pasta Users está dentro da pasta raiz e a pasta Fabio dentro da pasta Users. A estrutura é organizada como uma árvores de pastas e arquivos.

Navega-se na árvore de pastas usando os comandos change directory (cd). Lista-se o conteúdo da pasta em que se está com o comado dir.

O símbolo especial ponto (.) representa a pasta corrente, o símbolo especial (..) representa a pasta que contém a pasta corrente (ou pasta pai ou pasta acima). Exemplos:

cd ..                             vai para a pasta de cima
cd \                              vai para a pasta raiz do volume corrente
cd Users                        vai para a pasta (filha) Users, se ela existir

cd .\Users                      vai para a pasta (filha) Users, se ela existir
cd \Users\Fabio             vai para a pasta \Users\Fabio

Nas linhas de comando acima, o que vem depois do cd representa o caminho  na linguagem do DOS. É comum abusar da linguagem e usar apenas caminho para referir-se à sua representaçao.

Caso a representação do caminho comece com barra invertida (\) o caminho é absoluto, ou completo pois dentro da unidade ele está completamente especificado.

Caso o caminho comece de outra forma ele é relativo. Caso comece com um identificador, ele é relativo à pasta corrente. Caso comece com .\ também. Caso comece com ..\ é relativo à pasta de cima.

Para ver a ajuda dos comandos use a opção /?

Para criar uma pasta: mkdir
Para remover uma pasta vazia: rmdir
Para copiar um arquivo: copy
Para remover um arquivo: del
Para renomear um arquivo: ren