Sistemas distribuidos
Sistemas Distribuídos
Bruno Basaglia R.A.: 0943486428
Guilherme Chinaglia da Costa R.A.: 1001802192
Manoel dos Santos R.A.: 1001764116
Marcelo Decker R.A.: 2164240007
Sthefania Marques Ferri R.A.: 4471873224
Threads
Thread, ou linha de execução em português, é uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas simultaneamente. O suporte a thread é fornecido pelo próprio sistema operacional (SO), no caso da Kernel-LevelThread (KLT), ou implementada através de uma biblioteca de uma determinada linguagem, no caso de uma User-LevelThread (ULT). Uma thread permite, por exemplo, que o usuário de um programa utilize uma funcionalidade do ambiente enquanto outras linhas de execução realizam outros cálculos e operações.
Em hardwares equipados com uma única CPU, cada thread é processado de forma aparentemente simultânea, pois a mudança entre uma thread e outra é feita de forma tão rápida que para o utilizador isso está acontecendo paralelamente. Em hardwares com múltiplos CPUs ou multicores, as threads são realizadas realmente de forma simultânea;
Os sistemas que suportam apenas uma única thread (em real execução) são chamados de monothread enquanto que os sistemas que suportam múltiplas threads são chamados de multithread.
Cada thread tem o mesmo contexto de software e compartilha o mesmo espaço de memória (endereçado a um mesmo processo-pai), porém o contexto de hardware é diferente. Sendo assim o overhead causado pelo escalonamento de uma thread é muito menor do que o escalonamento de processos. Entretanto não há acesso protegido à memória nativa (sua implementação fica a cargo do programador) devido ao compartilhamento do