O escalonamento (scheduling) de processos ou agendador de tarefas é uma atividade organizacional feita pelo escalonador (scheduler) da CPU ou de um sistema distribuído, possibilitando executar os processos mais viáveis e concorrentes, priorizando determinados tipos de processos, como os de I/O Bound e os computacionalmente intensivos.
O escalonador de processos de 2 níveis escolhe o processo que tem mais prioridade e menos tempo e coloca-o na memória principal, ficando os outros alocados em disco; com essa execução o processador evita ficar ocioso.
O init é o primeiro processo iniciado no Linux, logo após a carga do kernel do sistema. Quando é disparado, o init continua a carga do sistema, geralmente executando vários scripts que irão verificar e montar sistemas de arquivos, configurar teclado e iniciar servidores, entre outras tarefas.
O init utilizado no Linux permite que existam diversos níveis de execução no sistema. Um nível de execução é uma configuração de software do sistema que define quais processos devem ser inicializados e quais não devem, e também de que modo são inicializados.
Um processo tem vários atributos que controlam sua execução.
O PID identifica únicamente este processo (nenhum PID pode ser repetido até novo boot do sistema). O PPID indica qual “processo-pai” o criou. O nice number controla a prioridade desse processo. Processos de maior prioridade têm a preferência na utilização da CPU. O UID e GID indicam o usuário e grupo que criou esse processo. Somente o root (superusuário) pode destruir processos criados por outros usuários. O EUID e o EGID são formas de se rodar um processo, criado por um usuário não-privilegiado de forma que ele se comporte como privilegiado, com acesso a outros recursos que normalmente o usuário não o teria. O comando chmod +s pode ser usado para fazer um programa modificar esse valor na execução. Um programa setuid (com o flag s ligado) no instante de execução troca seu UID/GID pelos seus próprios (user/group do arquivo) e efetivamente rodam como se fosse este outro usuário, pois o kernel testa o EUID e EGID para testar privilégios de acesso. Daí, devmos ter o máximo cuidado quando ligarmos este flag em algum executável.
Muita gente não sabe, mas nos sistemas Linux mais modernos, podemos ter um controle de prioridade de processos utilizando a CPU. Estas prioridades funcionam para favorecer melhor um comando à outro. Por exemplo:
Programa 1 tem prioridade “alta”
Programa 2 tem prioridade “normal”
Se o Programa 2 resolve gastar quase todo o processamento no sistema (como por exemplo: compactação de arquivos em bzip2), os programas que estão em prioridade alta não serão completamente afetados.
Se o Programa 1 estivesse em prioridade “normal”, ele teria que dividir o processamento com o Programa 2, mesmo que ele usasse pouquinho. Mas como ele está em “alta” prioridade, ele sempre vai ter a preferência no sistema, ao invés do Programa 2.
A faixa de prioridades é:
Sendo assim, por padrão, todo comando executado “normalmente” recebe a prioridade 0 (Zero). E quanto menor for esse número, maior a prioridade do processo na CPU (Sim, é o contrário! Quanto menor, maior; quanto maior, menor! :).
Por padrão, os comandos ligados ao kernel e o sistema operacional em si têm prioridade inferior a 0 (aqui no meu sistema, vejo vários processos com prioridade -5). Isso nos faz lembrar que você precisa ser root para configurar um processo com prioridade menor que 0. Isso faz sentido, já que em um sistema multi-usuário, os usuários normais compartilham o padrão 0, e podem escolher apenas se o processo pode ter uma prioridade mais baixa, assim não interferindo com os processos do sistema, que teoricamente são mais importantes.
Quando estamos num terminal, queremos utilizar algum comando/aplicação e necessitamos ainda do terminal livre, podemos executar o que queremos em segundo plano.
comando &
Simplesmente adicione o caracter & ao final do comando/aplicativo que você quer executar. Acho interessante quando estamos no X e queremos abrir uma aplicação diretamente do terminal.
ps - exibe informações sobre uma seleção dos processos ativos.Se você quer uma atualização repetitiva da seleção e as informações apresentadas, usar top (1) em seu lugar.
$ ps [options]
pstree - mostra a árvore de processos
$ pstree
top - exibe as tarefas do linux.
$ top
kill - O sinal padrão para matar é TERM. Utilização de L ou L -a lista de sinais disponíveis. Sinais particularmente úteis incluem HUP, INT, MATAR, STOP, CONT, e 0.Sinais de suplentes poderão ser especificada de três formas: -9 SIGKILL matar. PID valores negativos podem ser usados para escolher grupos de processos inteiros; ver a coluna PGID na saída do comando ps. A PID de -1 é especial, que indica todos os processos exceto o processo de se matar e init.
$ kill
killall - mata um proceso pelo nome.
$ killall