Você está na página 1de 30

Sistemas Operacionais

Professor Paulo Vitor dos Santos Zeferino







1. Sistema Operacional
1.1 O que ?

O sistema operacional uma camada de software que opera entre o hardware e os
programas aplicativos voltados ao usurio nal.
O sistema operacional uma estrutura de software ampla, muitas vezes
complexa, que incorpora aspectos de baixo nvel (como drivers de dispositivos e
gerncia de memria fsica) e de alto nvel (como programas utilitrios e a prpria
interface grca).


1.2 Objetivos
Apresentar ao usurio do computador uma forma amena de utilizar a mquina e
realizar o melhor uso possvel do hardware disponvel, aumentando o desempenho do
sistema e diminuindo o custo.

1.3 Classificaes
1.3.1 Sistemas Monotarefa x Sistemas Multitarefa
Define a capacidade de gerenciar mais de uma tarefa ao mesmo tempo na mesma
mquina.
O sistema monotarefa admite a gerencia apenas uma tarefa em execuo
por vez.
Exemplo: DOS
O sistema multitarefa admite e gerencia vrias tarefas em processamento
concorrente
Exemplo: Windows XP, Windows 7, Linux, MacOS



1.3.2 Sistemas Monousurio x Sistemas Multiusurio
Define a capacidade de gerenciar mais de um usurio ao mesmo tempo,
compartilhando os mesmos recursos de software e hardware.
O sistema monousurio admite e gerencia apenas um usurio no permite
que mais de um usurio esteja logado simultaneamente.
Exemplo: Windows XP, Windows NT (exceto verso com Terminal
Center)
O sistema multiusurio admite e gerencia vrios usurios permite que
mais de um usurio esteja logado simultaneamente.
Exemplo: Linux, VMS

1.3.3 Sistemas Monoprocessados x Sistemas
Multiprocessados
Possuem a capacidade de reconhecer e gerenciar computadores com mais de um
processador.
O sistema monoprocessado somente reconhece e utiliza um processador.
Exemplo: Windows 98
O sistema multiprocessado reconhece e utiliza mais de um processador.
Exemplo: Windows XP, Windows 7, Linux

1.3.4 Sistemas Embarcados
So os sistemas inseridos em produtos com funes especificas, como telefones e
celulares.

1.3.5 Sistemas em Tempo Real
So os sistemas que possuem um forte vnculo com o tempo. O resultado s
considerado correto se a execuo acontecer no tempo previsto.

2. LINUX
2.1 Histria
Em 1991 reza a lenda que o estudante Linus Torvalds resolve desenvolver um sistema
operacional que se assemelhasse ao UNIX. UNIX no era compatvel com sistema domstico;
O UNIX um sistema operacional robusto usando em computadores de grande
porte nas empresas e universidades.
Linus sempre teve a viso de ter o cdigo de seu SO aberto para outros programadores
ajud-lo a desenvolver o sistemaO projeto inicial foi desenvolvido na linguagem C.

Linux um Software Livre
Para usar o Windows o usurio tem que ter pago uma taxa a ttulo de direito
autoral pelo programa, chamada licena de uso;
A licena de uso do Windows paga por cada computador onde o programa esteja
instalado na empresa.
Linux est classificado em uma licena GPL (General Public License) da FSF (Free
Software Foundation) (Instituio sem fins lucrativos que criou legislao para
softwares que abrem mo da licena de uso).




2.2 Distribuies
O Linux, na realidade, apenas o nome do kernel (O kernel Linux, o corao
do sistema operacional Ubuntu. Um kernel uma parte importante do sistema
operacional, provendo a ponte de comunicao entre o hardware e o software) do
sistema operacional. Isto significa que todas as distribuies usam o mesmo kernel, mas
podem acoplar diversos aplicativos de acordo com o objetivo do seu mantenedor.
Ubuntu um sistema operacional no comercial baseada na distribuio Debian.
Atualmente, uma das mais populares distribuies Linux. O nome "Ubuntu" uma
palavra sul-africana que significa humanidade para com os outros ou "sou o que sou
pelo que ns somos". Outra traduo poderia ser: "a crena em uma ligao universal
de compartilhamento que conecta toda a humanidade".

3. Ubuntu
O Ubuntu um sistema operacional baseado em Linux, distribudo livremente
para uso em desktops, uso corporativo e servidores. Ele desenvolvido por uma imensa
comunidade.
Ubuntu uma ideologia tica Sul Africana focada no compromisso e relaes
entre as pessoas. A palavra vem das lnguas Zulu e Xhosa. Ubuntu (pronunciado "u-
BUN-tu") visto como um conceito tradicional africano, tratado como um dos
princpios fundamentais da nova repblica Sul Africana e conectado ideia de um
Renascimento Africano.

"Uma pessoa com Ubuntu aberta e disponvel aos outros, assistente aos outros, no
se sente ameaada por outros que so capazes ou bons, uma vez que ele o ela tem
uma autoconfiana que vem do saber que ele ou ela pertence a um conjunto maior e
diminudo quando outros so humilhados ou diminudos, quando outros so
torturados ou oprimidos."

3.1 Por que usar o Ubuntu?
Baseado no Debian, uma das mais largamente aceitas, tecnologicamente
avanadas, e bem suportadas distribuies, o Ubuntu pretende criar uma distribuio
que prov um sistema Linux coerente e atualizado para os computadores desktop e
servidores.
O Ubuntu inclui um nmero de pacotes cuidadosamente selecionados da
distribuio Debian e possui um sistema de gerenciamento de pacotes poderoso que
permite fcil instalao e remoo limpa de programas.

3.2 Kernel
O Ubuntu possui uma srie de variaes, no geral so todos o mesmo (sistema
base), s muda alguns ligeiros aspectos:
Ubuntu: verso Standard, usa o ambiente grfico Gnome;
Edubuntu: uma verso do Ubuntu que j traz por default uma enorme
quantidade de software especialmente destinada ao uso em escolas e diversas
reas da educao.
Kubuntu: mesmo que Ubuntu s que usa Kde em vez de Gnome como
ambiente grfico.
Xubuntu: mesmo que Ubuntu s que usa XFCE em vez de Gnome como
ambiente grfico.


Ubuntu Gnome Ubuntu Kde

3.3 Shell Terminal
um aplicativo interpretador de comandos. O BASH (Bourne Again Shell) o shell
desenvolvido para o projeto GNU, da Free Software Foundation, que se tornou padro
nas vrias distribuies Linux (incluindo Ubuntu).


3.3.1 Comandos
username@nomedamquina:diretrio$
No caso de:
curso@curso-desktop:~$
Curso o nome do usurio, curso-desktop o nome da mquina, ~ o diretrio
em que o usurio se encontra (~ representa o diretrio home do usurio, nesse caso,
home/curso), e o $ o smbolo do tipo de usurio (nesse caso, um usurio normal). Se
fosse o usurio root (administrador do sistema), o smbolo seria #.

3.3.1.1 pwd (Print Working Directory)
curso@curso-desktop:~$ pwd
/home/curso

3.3.1.2 ls (List)

ls [opes] [diretrio1] [diretrio2]

Exemplos:
1. O comando abaixo lista os diretrios e arquivos do /.
$ ls /
2. O comando abaixo lista os diretrios e arquivos do /etc.
$ ls /etc
3. Para listar o contedo do / e do /etc, de uma s vez, use:
$ ls / /etc

-a ou -all: Lista todos os arquivos e diretrios, incluindo os ocultos. No GNU/Linux, os
arquivos e diretrios ocultos comeam por .

Exemplo:
O comando abaixo listar todos os arquivos e diretrios contidos no barra, incluindo os
ocultos.
$ ls -a /

-l: Usa o formato longo para listagem, o que significa que sero listados detalhes sobre
cada arquivo e diretrio mostrado.




3.3.1.3 cd (Change Directory)
//Ir para o diretrio raiz
cd /

//Ir para o diretrio /tmp
cd /tmp

//Para subir um diretrio
cd ..

3.3.1.4 mkdir (Make Directory)
$ mkdir [caminho1/diretrio1] [caminho2/diretrio2]

Criando o diretrio Pasta 1 e Pasta 2 dentro do diretrio TMP

$ mkdir /tmp/Pasta1 /tmp/Pasta2

3.3.1.5 rmkdir (Remove Directory)
$ rmdir [caminho1/diretrio1] [caminho2/diretrio2]

Remove o diretrio Pasta 1 e Pasta 2 dentro do diretrio TMP

$ rmdir /tmp/Pasta1 /tmp/Pasta2

3.3.1.6 rm (Remove)
$ rm [opes] [arquivo1] [arquivo2] ...

Criamos um arquivo chamado teste no diretrio /tmp:

$ touch /tmp/teste

Agora vamos remov-lo:

$ rm /tmp/teste

-r: Opo usada para remover recursivamente diretrios e seu contedo. Pode ser usada
tambm para remover diretrios vazios.

1. Criar um diretrio chamado Pasta
2. mkdir Pasta
3. Vamos TENTAR com o comando rm Pasta
4. rm r Pasta
5. Poderamos usar tambm o comando rmdir Pasta

Vamos criar agora um diretrio chamado Pastateste dentro do diretrio /tmp. E
dentro de Pastateste, isto , no /tmp/Pastateste, vamos criar um arquivo chamado
Arquivoteste. Depois vamos remov-los.

$ mkdir /tmp/Pastateste
$ touch /tmp/Pastateste/Arquivoteste

Para remover, poderamos fazer da seguinte maneira:

$ rm /tmp/Pastateste/Arquivoteste
$ rmdir /tmp/Pastateste

Mas a opo r do comando rm nos permite remover o diretrio e todo o seu
contedo. Por isso, o comando a seguir seria suficiente para remover o diretrio
Pastateste e seu contedo (no caso, o arquivo Arquivoteste)

$ rm r /tmp/Pastateste

Ateno: O comando rm definitivo, ou seja, uma vez que o usurio removeu o
arquivo (ou um diretrio), este no poder ser recuperado. No funciona simplesmente
como uma lixeira, mas sim remove definitivamente o que for passado como argumento.

3.3.1.7 cp (Copy)
Este comando serve para copiar arquivos.

$ cp [opes] [origem] [destino]

Para copiar o arquivo teste do /tmp para o diretrio home do usurio:

$ cp /tmp/teste ~

-R: Copia recursivamente os subdiretrios e o seu contedo.

Suponha que um usurio possui diretrio no /tmp (/tmp/diretrio) e quer copi-lo
para sua home. Suponha ainda que esse diretrio a ser copiado no est vazio.

$ cd /tmp/diretrio
$ ls
arquivo
$ cp R /tmp/diretrio ~




3.3.1.8 mv (Move)
Move e renomeia arquivos e diretrios

$ mv [opes] [origem] [destino]

Suponhamos que um usurio possui uma arquivo em sua home chamado
arquivo1. Para renomear este arquivo para arquivonovo, supondo que o usurio est
em sua home, bastaria usar:

$ mv arquivo1 arquivonovo

Suponhamos agora que queremos mover o arquivonovo para o diretrio /tmp. Para
isso, o seguinte comando eficaz (estamos supondo ainda que o susurio esta em sua
home):

$ mv arquivonovo /tmp/tmp

Aps a execuo desse comando, arquivonovo estaria no diretrio /tmp e no
haveria mais uma cpia do arquivo no diretrio home do usurio.

-r: Como outros comandos, essa opo move diretrios e seus contedo recursivamente

3.3.1.9 cat (Concatenate)
Concatena arquivos e imprime o resultado do terminal.

$ cat [arquivo1] [arquivo2] ...

Para ilustrar o uso deste comando, vamos primeiro criar dois arquivos de texto no-
vazios. Para isso, abra um editor de texto pode ser qualquer um, utilizaremos o gedit
por ser bastante simples.




Crie dois arquivos (arquivo1 e arquivo 2), contendo qualquer texto e salve-os no
diretrio home do usurio.







3.3.1.10 Comandos Prticos
$ clear // Limpa a interface
$ exit // Fecha a janela do terminal

3.3.1.11 date (Data)
O comando data imprime ou modifica a data e o horrio do sistema. E importante
salientar que somente o usurio root e usurios privilegiados podem rodar esse
comando.

$ date [data]

Para visualizar a data e a hora do sistema:

$ date
Mon Mar 8 14:45:21 BRT 2010

Para alterar a data e a hora do sistema, basta usar o comando da seguinte maneira:

$ date MMDDhhmm [[YYyy] [.ss]

Onde MM o ms, DD o dia, hh a hora, mm so os minutos. Opcionalmente,
podem ser usados o ano (com 2 ou 4 dgitos) e os segundos (ss). Para alterar a data do
sistema para o dia 1 de Fevereiro e o horrio para 14:30, poderamos fazer:

$ date 02011430

3.3.1.12 su
O comando su usado para mudar o usurio ou para tornar-se superuser
(administrador do sistema ou usurio root)

$ su [usurio]

Suponha que voc esteja logado num terminar como usuarioa e deseja logar-se
como usuariob, sem ter que encerrar a sesso como usuarioa:

$ whoami
usuarioa
$ su usuariob
Senha:
$ whoami
usuariob
$ exit
exit
$ whoami
usuarioa

Acompanhe a sequncia de comandos: a princpio, o usurio que estava logado era o
usuarioa, o que pde ser confirmado pelo comando whoami. A seguir, para mudar
sua identidade para usuariob, o comando su foi utilizado note que foi preciso digitar
a senha de usuariob. Depois de autenticado, o usurio logado passou a ser usuariob.
Com o comando exit fechou-se a sesso de usuariob e a identidade voltou a ser
usuarioa.
Para tornar-se usurio root, basta usar o comando su sem nenhum argumento:

$ su
Senha:
#

Note que foi necessrio digitar a senha do usurio root.

3.3.1.13 wc (Word Count)
O comando wc para contar linhas, palavras e bytes de um arquivo ou do que for
escrito no terminal.

$ wc [opes] [arquivo]

-c: Imprimir a contagem de bytes
-l: Imprimir o nmero de linhas
-w: Imprimir o nmero de palavras

Para exibir o nmero de linhas do arquivo arquivo1, usaramos:

$ wc l arquivo1
3 arquivo1

Para exibir o nmero de palavras e de bytes do arquivo arquivo2:

$ wc wc arquivo2
2 22 arquivo2

Se usssemos o comando wc sem nenhuma opo para arquivo1, obteramos:

$ wc arquivo1
3 3 19 arquivo1

Onde o primeiro nmero a contagem de linhas, o segundo, de palavras, e o terceiro,
o de bytes.

3.3.1.14 | (Pipe)
O pipe (|) usado para fazer encadeamento de processos, ou seja, faz com que a
sada de um comando seja enviada como entrada para o prximo comando.
Observe o exemplo a seguir parra entender melhor (o contedo de arquivo1 e
arquivo2 aquele que foi apresentado junto com o comando cat):

$ cat arquivo1 arquivo 2 | wc l
5

Vamos esclarecer o que aconteceu na execuo deste comando: primeiro, utilizamos
o comando de cat com dois arquivos como argumento. Se rodssemos apenas este
comando, teramos o seguinte efeito:

$ cat arquivo1 arquivo2
arquivo1
etc.
etc.
arquivo2
blblbl

Mas acrescentamos um pipe (|) aps a execuo deste comando, o que significa que a
sada foi redirecionada para o prximo comando, isto , o resultado da execuo de
cata arquivo1 arquivo2 no foi impressa, mas sim serviu como entrada para o
prximo comando, wc l que contou o nmero de linhas e imprimiu este resultado
no terminal.

O que faz o comando abaixo?
$ ls a | wc l
1. ls a: lista os arquivos ocultos e diretrios
2. |: faz com que est sada seja a entrada para o comando wc l
3. wc l: Conta o nmero de linhas de uma determinada entrada.

Concluso: Ir retornar o nmero de diretrios/arquivo dentro de um diretrio.

3.3.1.15 >
Esta uma outra forma de direcionar a sada de uma comando: diferente do |, que
direcionava a sada de um comando para um outro programa ou comando, o > direciona
a sada de um comando para um arquivo ou dispositivo.

curso@curso-desktop: ~$ cat arquivo1
arquivo1
etc.
etc.
curso@curso-desktop: ~$ cat arquivo1 > arquivo3



3.3.1.16 >>
O >>, assim como o >, tambm direciona a sada de um comando para um arquivo, a
diferena que ele no substitui o contedo do arquivo, mas acrescenta ao final.


3.3.1.17 find
O comando find usado para procurar por diretrios e arquivos no disco. Possui
vrias opes, mas mostraremos apenas alguns exemplos simples.

Exemplo 1: este exemplo procura por um arquivo ou diretrio com o nome
Documents a partir do diretrio / (diretrio root)

$ find / -name Documents

Exemplo 2: este outro procura por uma arquivo ou diretrio com o nome Music a
partir do diretrio home do usurio:

$ find ~ name Music


importante salientar que a partir do diretrio x significa que o comando
procurar dentre tudo o que estiver contido no tal diretrio, incluindo arquivos e
subdiretrios, bem como seu contedo e assim por diante.

Exemplo 3: encontrar arquivos que terminem com mdb no diretrio atual e
subdiretrios

$ find . -name '*mdb

Exemplo 4: encontrar arquivos que contenham Avaliao em qualquer parte do
nome, independente da casa (maisculas/minsculas), no diretrio atual e subdiretrios:

$ find . -iname '*avaliao*

3.3.1.18 grep
O comando grep pode ser visto como uma forma simplificada de consulta a
um banco de dados em texto puro, em que cada linha representa um registro. Pode ser
usado para retirar um conjunto de strings (cadeias de caracteres) do resultado de um
comando dado ou de um arquivo texto, por mais longo que seja. Os exemplos que vou
dar aqui falaro por si.

$ grep 'Joao' arquivo.txt //Procurar por Joao no arquivo.txt
$ grep 'Joao' *.txt //Procura por Joao em qualquer arquivo .txt
$ grep -r 'Joao' . //Procura por Joao de forma recursiva
$ grep -r 'Joao' /home/SeuNome/diretorio_a_procurar
$ grep -rl 'Joao' /home/SeuNome/diretorio_a_procurar
$ grep -r 'Joao' /home/SeuNome/diretorio_a_procurar | wc l
$ cat arquivo2.txt | grep Fernanda | wc - l

3.3.2 Permisses
As permisses so um dos aspectos mais importantes do Linux (na verdade, de todos
os sistemas baseados em Unix). Elas so usadas para vrios fins, mas servem
principalmente para proteger o sistema e os arquivos dos usurios. Manipular
permisses uma atividade interessante, mas complexa ao mesmo tempo. Mas tal
complexidade no deve ser interpretada como dificuldade e sim como possibilidade
de lidar com uma grande variedade de configuraes, o que permite criar vrios tipos de
proteo a arquivos e diretrios.
Como voc deve saber, somente o super-usurio (root) tem aes irrestritas no
sistema, justamente por ser o usurio responsvel pela configurao, administrao e
manuteno do Linux. Cabe a ele, por exemplo, determinar o que cada usurio pode
executar, criar, modificar, etc. Naturalmente, a forma usada para especificar o que
cada usurio do sistema pode fazer a determinao de permisses. Sendo assim, neste
artigo voc ver como configurar permisses de arquivos e diretrios, assim como
modific-las.



drwx------
-rw-rw-r

Um ponto interessante de citar que o Linux trata todos os diretrios como arquivos
tambm, portanto, as permisses se aplicam de igual forma para ambos.

d => diretrio
b => arquivo de bloco
c => arquivo especial de caractere
p => canal
s => socket
- => arquivo "normal"

Repare agora que no restante da string ainda h 9 caracteres. Voc j sabe o que
significa o primeiro. Os demais so divididos em trs grupos de trs, cada um
representado o proprietrio, o grupo e todos os demais, respectivamente. Tomando a
linha 2 do exemplo (-rw-rw-r-), desconsiderando o primeiro caractere e dividindo a
string restante em 3 partes, ficaria assim:

rw- => a primeira parte significa permisses do proprietrio
rw- => a segunda parte significa permisses do grupo ao qual o usurio pertence
r-- => a terceira parte significa permisses para os demais usurios
Usurio dono, grupo do usurio, outros usurios

Vamos entender agora o que significa esses caracteres (r, w, x, -). H, basicamente,
trs tipos de permisses: leitura, gravao e execuo.

r => significa permisso de leitura (read);
w => significa permisso de gravao (write);
x => significa permisso de execuo (execution);
- => significa permisso desabilitada.

drwx------
- um diretrio (d);
- o proprietrio pode alter-lo, grav-lo e execut-lo (rwx);
- o grupo no pode pode alter-lo, grav-lo, nem execut-lo (---);
- os demais usurios no podem alter-lo, grav-lo, nem execut-lo (---).

-rw-rw-r
- um arquivo (-);
- o proprietrio pode alter-lo, grav-lo, mas no execut-lo. Repare que como este
arquivo no executvel, a permisso de execuo aparece desabilitada (rw-);
- o grupo tem permisses idnticas ao proprietrio (rw-);
- o usurio somente tem permisso de ler o arquivo, no pode alter-lo (r--).

--- => nenhuma permisso;
r-- => permisso de leitura;
r-x => leitura e execuo;
rw- => leitura e gravao;
rwx => leitura, gravao e execuo

3.3.2.1 Configurando permisses com chmod
Nos tpicos anteriores voc dever tido pelo menos uma noo do que so permisses
e de sua importncia no Linux. Chegou a hora de aprender a configurar permisses e
isso feito atravs do comando chmod (de change mode). Um detalhe interessante
desse comando que voc pode configurar permisses de duas maneiras:
simbolicamente e numericamente. Primeiramente veremos o mtodo simblico.
Lista 1
Smbolo
u => usurio
g => grupo
o => outro
a => todos

+ (sinal de adio) => adicionar permisso
- (sinal de subtrao) => remover permisso
= (sinal de igualdade) => definir permisso

Lista 2
Smbolo
r => leitura
w => gravao
x => execuo

Para mostrar como essa combinao feita, vamos supor que voc deseje adicionar
permisso de gravao no arquivo teste.old para um usurio. O comando a ser digitado
:
chmod u+w teste.old

O "u" indica que a permisso ser dada a um usurio, o sinal de adio (+) indica que
est sendo adicionada uma permisso e "w" indica que a permisso que est sendo dada
de gravao.
Caso voc queira dar permisses de leitura e gravao ao seu grupo, o comando ser:
chmod g+rw teste.old

Agora, vamos supor que o arquivo teste.old dever estar com todas as permisses
disponveis para o grupo. Podemos usar ento:
chmod g=rwx teste.old

O outro modo de alterar permisses usando o chamado modo octal. Para us-lo,
preciso ter em mente o seguinte:
0 - Nenhuma permisso de acesso.
1 - Permisso de execuo.
2 - Permisso de escrita.
4 - Permisso de leitura.
- R W X
0 4 2 1
$ chmod 775 arquivo1
Dono: rwx
Grupo: rwx
Outros: rx
A partir disso, podemos obter qualquer permisso, somando os nmeros
correspondentes s permisses desejadas.
3 - Permisso de execuo e escrita (1 + 2).
5 - Permisso de execuo e leitura (1 + 4).
6 - Permisso de escrita e leitura (2 + 4).
7 - Todas as permisses: execuo, escrita e leitura (1 + 2 + 4).
$ chmod 762 exemplo

4. Gerenciamento de Tarefas
Um sistema operacional quem gerencia os recursos computacionais em um
sistema. Isto , organiza para que todos os recursos no tenham conflitos uns com os
outros. Este controle realizado por um mdulo responsvel pela superviso e execuo
dos programas, que aloca os recursos necessrios para a execuo das atividades.
uma abstrao do sistema operacional para representar as informaes
necessrias na execuo de um programa;
Uma tarefa pode ser definida como um programa em execuo;
Estrutura responsvel pela manuteno de todas as informaes necessrias
execuo de um programa, como contedo de registradores e espao na
memria.
Um programa um conjunto de uma ou mais sequncias de instrues escritas
para resolver um problema especco, constituindo assim uma aplicao ou
utilitrio.
O programa representa um conceito esttico, sem um estado interno denido
(que represente uma situao especca da execuo) e sem interaes com outras
entidades (outros programas). Por exemplo, os arquivos

C:\Windows\notepad.exe e /usr/bin/nano so programas de edio de texto.

Uma tarefa a execuo, pelo processador, das sequncias de instrues
denidas em um programa para realizar seu objetivo.
Trata-se de um conceito dinmico, que possui um estado interno bem denido a
cada instante (os valores das variveis internas e a posio atual da execuo) e interage
com outras entidades: os perifricos e/ou outras tarefas.
Fazendo uma analogia clssica, pode-se dizer que um programa o equivalente
de uma receita de torta dentro de um livro de receitas (um diretrio) guardado em
uma estante (um disco) na cozinha (o computador). Essa receita de torta dene os
ingredientes necessrios e o modo de preparo da torta.
Por sua vez, a ao de executar a receita, providenciando os ingredientes e
seguindo os passos denidos na receita, a tarefa propriamente dita. A cada momento, a
cozinheira (o processador) est seguindo um passo da receita (posio da execuo) e
tem uma certa disposio dos ingredientes e utenslios em uso (as variveis internas da
tarefa). Assim como uma receita de torta pode denir vrias atividades inter-
dependentes para elaborar a torta (preparar a massa, fazer o recheio, decorar, etc.), um
programa tambm pode denir vrias sequncias de execuo interdependentes para
atingir seus objetivos.
Em um computador, o processador tem de executar todas as tarefas/ submetidas
pelos usurios. Essas tarefas geralmente tm comportamento, durao e importncia
distintas.
Cabe ao sistema operacional organizar as tarefas para execut-las e decidir em
que ordem faz-lo.
Nesta seo ser estudada a organizao bsica do sistema de gerncia de tarefas
e sua evoluo histrica.



CUIDADO!!!!!!!!!!!!!!!!!!!!!
Tarefa diferente de programa, visto que um programa pode ser executado
repetidamente gerando vrias Tarefas. Ou seja programa um sequncia lgica de
instrues e tarefa a execuo deste programa.



4.1 Histrico
Os primeiros sistemas de computao, nos anos 40, executavam apenas uma tarefa
de cada vez.
Um sistema operacional Monotarefa permite apenas a realizao de uma tarefa
de cada vez. Um dos mais famosos sistemas operacionais Monotarefa o MS-DOS, um
dos primeiros sistemas operacionais para computadores pessoais.
Nestes sistemas, cada programa binrio era carregado do disco para a memria e
executado at sua concluso. Os dados de entrada da tarefa eram carregados na memria
juntamente com a mesma e os resultados obtidos no processamento eram descarregados
de volta no disco aps a concluso da tarefa. Todas as operaes de transferncia de
cdigo e dados entre o disco e a memria eram coordenados por um operador humano.
Esses sistemas primitivos eram usados sobretudo para aplicaes de clculo numrico,
muitas vezes com ns militares (problemas de trigonometria, balstica, mecnica dos
uidos, etc.).

4.2 Processamento de um Sistema Mono-tarefa

1. Carga do cdigo na memria;
2. Carga dos dados de entrada na memria;
3. Processamento, consumindo dados e produzindo resultados;
4. Ao trmino da execuo, a descarga dos resultados no disco.


O uso do programa monitor agilizou o uso do processador, mas outros
problemas Persistiam. Como a velocidade de processamento era muito maior que a
velocidade de comunicao com os dispositivos de entrada e sada, o processador cava
ocioso durante os perodos de transferncia de informao entre disco e memria. Se a
operao de entrada/sada envolvia tas magnticas, o processador podia car vrios
minutos parado, esperando. O custo dos computadores era elevado demais para permitir
deix-los ociosos por tanto tempo.

O programa monitor permite acessar as funes bsicas do Hardware, como o BIOS (e
suas interrupes), j o programa aplicativo usa o programa monitor para acessar
essas funes.

A soluo encontrada para resolver esse problema foi permitir ao processador
suspender a execuo da tarefa que espera dados externos e passar a executar outra
tarefa. Mais tarde, quando os dados de que necessita estiverem disponveis, a tarefa
suspensa pode ser retomada no ponto onde parou.
Para tal, necessrio ter mais memria (para poder carregar mais de um
programa ao mesmo tempo) e denir procedimentos para suspender uma tarefa e
retom-la mais tarde.

4.3 Sistemas Preemptivos

O ato de retirar um recurso de uma tarefa (neste caso o recurso o processador)
denominado preempo.

Sistemas que implementam esse conceito so chamados sistemas preemptivos.

Sistemas que implementam esse conceito so chamados sistemas preemptivos. A
adoo da preempo levou a sistemas mais produtivos (e complexos), nos quais vrias
tarefas podiam estar em andamento simultaneamente: uma estava ativa e as demais
suspensas, esperando dados externos ou outras condies. Sistemas que suportavam
essa funcionalidade foram denominados monitores multi-tarefas.
Solucionado o problema de evitar a ociosidade do processador, restavam no
entanto vrios outros problemas a resolver. Por exemplo, um programa que contm um
lao innito jamais encerra; como fazer para abortar a tarefa, ou ao menos transferir o
controle ao monitor para que ele decida o que fazer? Situaes como essa podem
ocorrer a qualquer momento, por erros de programao ou intencionalmente, como
mostra o exemplo a seguir:



Esse tipo de programa podia inviabilizar o funcionamento do sistema, pois a
tarefa em execuo nunca termina nem solicita operaes de entrada/sada,
monopolizando o processador e impedindo a execuo das demais tarefas (pois o
controle nunca volta ao monitor).
Para resolver essa questo, foi introduzido no incio dos anos 60 um novo
conceito: o compartilhamento de tempo ou time-sharing. Nessa soluo, cada atividade
que detm o processador recebe um limite de tempo de processamento, denominado
quantum.
Esgotado seu quantum, a tarefa em execuo perde o processador e volta para
uma la de tarefas prontas, que esto na memria aguardando sua oportunidade de
executar.

A durao atual do quantum depende muito do tipo de sistema operacional; no Linux
ela varia de 10 a 200 milissegundos, dependendo do tipo e prioridade da tarefa.

Quando uma tarefa recebe o processador, o ncleo ajusta um contador de ticks
que essa tarefa pode usar, ou seja, seu quantum denido em nmero de ticks. A cada
tick, o contador decrementado; quando ele chegar a zero, a tarefa perde o processador
e volta la de prontas.


4.4 Ciclo de Vida de uma Tarefa
Nova: A tarefa est sendo criada, i.e. seu cdigo est sendo carregado em memria,
junto com as bibliotecas necessrias, e as estruturas de dados do ncleo esto sendo
atualizadas para permitir sua execuo.

Pronta: A tarefa est em memria, pronta para executar (ou para continuar sua
execuo), apenas aguardando a disponibilidade do processador

Executando: O processador est dedicado tarefa, executando suas instrues e
fazendo avanar seu estado.

Suspensa: A tarefa no pode executar porque depende de dados externos ainda no
disponveis (do disco ou da rede, por exemplo), aguarda algum tipo de sincronizao (o
m de outra tarefa ou a liberao de algum recurso compartilhado) ou simplesmente
espera o tempo passar (em uma operao sleeping, por exemplo).

Terminada: O processamento da tarefa foi encerrado e ela pode ser removida da
memria do sistema.












4.5 Implementar Tarefas
Conforme apresentado, uma tarefa uma unidade bsica de atividade dentro de um
sistema. Tarefas podem ser implementadas de vrias formas, como processos, threads,
jobs e transaes.
Nesta aula sero descritos os problemas relacionados implementao do conceito
de tarefa em um sistema operacional tpico. Sero descritas as estruturas de dados
necessrias para representar uma tarefa e as operaes necessrias para que o
processador possa comutar de uma tarefa para outra de forma eciente e transparente.

4.6 Contextos
Vimos que uma tarefa possui um estado interno bem denido, que representa sua
situao atual: a posio de cdigo que ela est executando, os valores de suas variveis
e os arquivos que ela utiliza, por exemplo. Esse estado se modica conforme a execuo
da tarefa evolui.

O estado de uma tarefa em um determinado instante denominado contexto.

Cada tarefa presente no sistema possui um descritor associado, ou seja, uma
estrutura de dados que contm informaes detalhadas da operao.
Nessa estrutura so armazenadas as informaes relativas ao seu contexto e os
demais dados necessrios sua gerncia. Essa estrutura de dados geralmente chamada
de TCB (do ingls Task Control Block) ou PCB (Process Control Block).
Um TCB tipicamente contm as seguintes informaes:
Identicador da tarefa (pode ser um nmero inteiro, um apontador, uma
referncia de objeto ou um identicador opaco);
Estado da tarefa (nova, pronta, executando, suspensa, terminada, ...);
Lista de reas de memria usadas pela tarefa;
Listas de arquivos abertos, conexes de rede e outros recursos usados pela tarefa
(exclusivos ou compartilhados com outras tarefas);
Para que o processador possa interromper a execuo de uma tarefa e retornar a ela
mais tarde, sem corromper seu estado interno, necessrio denir operaes para salvar
e restaurar o contexto da tarefa. O ato de salvar os valores do contexto atual em seu
TCB e possivelmente restaurar o contexto de outra tarefa, previamente salvo em outro
TCB, denominado troca de contexto. A implementao da troca de contexto uma
operao delicada, envolvendo a manipulao de registradores e ags especcos de
cada processador, sendo por essa razo geralmente codicada em linguagem de
mquina.
No Linux as operaes de troca de contexto para a plataforma Intel x86 esto
denidas atravs de diretivas em Assembly no arquivo arch/i386/kernel/process.c dos
fontes do ncleo.

4.7 Contextos


4.7.1 Implementao de Tarefas
Conforme apresentado, uma tarefa uma unidade bsica de atividade dentro de
um sistema. Tarefas podem ser implementadas de vrias formas, como processos,
threads, jobs e transaes. Nesta seo so descritos os problemas relacionados
implementao do conceito de tarefa em um sistema operacional tpico. So descritas as
estruturas de dados necessrias para representar uma tarefa e as operaes necessrias
para que o processador possa comutar de uma tarefa para outra de forma eficiente e
transparente.

4.7.2 Processos no Linux
Alm de seu prprio cdigo executvel, cada tarefa ativa em um sistema de
computao necessita de um conjunto de recursos para executar e cumprir seu objetivo.
Entre esses recursos esto as reas de memria usadas pela tarefa para armazenar seu
cdigo, dados e pilha, seus arquivos abertos, conexes de rede, etc. O conjunto dos
recursos alocados a uma tarefa para sua execuo denominado processo.
Historicamente, os conceitos de tarefa e processo se confundem, sobretudo porque
os sistemas operacionais mais antigos, at meados dos anos 80, somente suportavam
uma tarefa para cada processo.
No entanto, quase todos os sistemas operacionais contemporneos suportam mais
de uma tarefa por processo, como o caso do inux, indows XP e os UNIX mais
recentes.
Os sistemas operacionais convencionais atuais associam por default uma tarefa a
cada processo, o que corresponde execuo de um programa sequencial (um nico
fluxo de instrues dentro do processo).
Assim, hoje em dia o processo deve ser visto como uma unidade de contexto, ou
seja, um continer de recursos utilizados por uma ou mais tarefas para sua execuo.
Os processos so isolados entre si pelos mecanismos de proteo providos pelo
hardware (isolamento de reas de memria, nveis de operao e chamadas de sistema)
e pela prpria gerncia de tarefas, que atribui os recursos aos processos (e no s
tarefas), impedindo que uma tarefa em execuo no processo pa acesse um recurso
atribudo ao processo pb.

O ncleo do sistema operacional mantm descritores de processos, denominados
PCs (Process Control locks), para armazenar as informaes referentes aos processos
ativos. Cada processo possui um identificador nico no sistema, o PID Process
IDentifier.
Associando-se tarefas a processos, o descritor (TCB) de cada tarefa pode ser
bastante simplificado: para cada tarefa, basta armazenar seu identificador, os
registradores do processador e uma referncia ao processo ao qual a tarefa est
vinculada.
O ncleo do sistema operacional mantm descritores de processos, denominados
PCs (Process Control locks), para armazenar as informaes referentes aos processos
ativos. Cada processo possui um identificador nico no sistema, o PID Process
IDentifier.
Associando-se tarefas a processos, o descritor (TCB) de cada tarefa pode ser
bastante simplificado: para cada tarefa, basta armazenar seu identificador, os
registradores do processador e uma referncia ao processo ao qual a tarefa est
vinculada.
Disto observa- se tambm que a troca de contexto entre tarefas vinculadas ao
mesmo processo muito mais simples e rpida que entre tarefas vinculadas a processos
distintos, pois somente os registradores do processador precisam ser salvos/restaurados
(as reas de memria e demais recursos so comuns s duas tarefas).
Todo processo, possui:
Espao de endereamento de memria;
Variveis de ambiente;
Lista de arquivos abertos;
Um nmero que o identifica, conhecido como PID;
Um processo pai (parent) identificado pelo PPID;
Identificao de usurio e grupo.
Existem processos com maior e menor prioridade. Na hierarquia de processos,
dizemos que o processo que chama o outro o processo pai, enquanto o novo, o
processo filho.
A nica forma de criar um processo novo no Linux, atravs da chamada
de sistema fork().

ps # Visualiza os processos em execuo vinculados a terminal
ps -a # Exibe processos de outros usurios tambm
ps -u # Exibe os processos detalhadamente inclusive com uso de memria
ps -x # Exibe os processos que no esto vinculados a terminais
ps -ef # Exibe todos os processos e mostra o PPID
top # Exibe os processos que utilizam CPU em tempo real
top -d # Exibe os processos que utilizam CPU em tempo real com atualizao de 1 seg
kill -9 (processo) # Mata um processo
kill -l # Mostra as opes do comando kill

4.7.2.1 Cut




cut -d ";" -f3
cut -d :" -f3
echo "paulo:vitor:zeferino" | cut -d ":" -f3
$ cat leo.txt | awk '{print $1}'