Introdução aos Processos Leves ( Threads )

Tamanho: px
Começar a partir da página:

Download "Introdução aos Processos Leves ( Threads )"

Transcrição

1 1 Introdução aos Processos Leves ( Threads ) João Paulo F. W. Kitajima Marco Aurélio de Souza Mendes Departamento de Ciência da Computação Universidade Federal de Minas Gerais Caixa Postal Belo Horizonte, MG tel: (031) /fax: (031) {kitajima, Introdução A importância do processamento paralelo na busca por maior poder de computação está atualmente bem definida. O princípio do "trabalho cooperativo" é bastante intuitivo e pode ser diretamente aplicado (1) em novas arquiteturas de computadores, onde vários processadores trabalham simultaneamente na resolução de um problema específico, (2) em novos sistemas operacionais, que suportam processos concorrentes (em multiprogramação e/ou em multiprocessamento), e (3) em novas linguagens de programação, permitindo que soluções sejam expressas de acordo com um paradigma de programação concorrente e/ou paralela. Nas Jornadas de Atualização de Informática de 1995, o primeiro autor aborda o item (3), apresentando elementos de linguagens para programação distribuída (i.e., baseada na troca de mensagens) [KIT95]. Neste texto, os autores abordam o item (2), onde alguns mecanismos do sistema operacional de suporte à concorrência são apresentados, com reflexos, naturalmente, sobre as linguagens de programação disponíveis no sistema em questão. Três exemplos são apresentados: dois sistemas operacionais multithreaded (Solaris e Eindows NT) e uma linguagem atual de programação orientada a objetos, Java, que implementa classes associadas às threads. 1. Gerência de Processos Computadores (isolados, paralelos ou em rede) realizam tarefas. Estas tarefas podem ser de diferentes naturezas: por exemplo, a execução de um programa objeto compilado a partir de um

2 programa fonte em C, a própria compilação deste programa, a própria edição do programa fonte em C, controle de temperatura de uma estufa, e gerência da memória do próprio computador e dos dispositivos de entrada e saída conectados a ele. Além do mais, estas tarefas podem estar em execução todas ao mesmo tempo, seja compartilhando um único processador, e, neste caso, falamos em multiprogramação, seja utilizando vários processadores, considerando assim a ocorrência de multiprocessamento ou, tão simplesmente, de execuções em paralelo. Sistemas Operacionais. Todo sistema computacional, exceto os mais primitivos ou os muito especializados, são dotados de um sistema operacional. Este sistema operacional possui duas funções básicas [TAN92]: 1. apresentar ao usuário do computador (seja um programador de linguagem de alto nível, seja um usuário de aplicativos) uma máquina estendida ou virtual. O sistema operacional funciona então como um intermediário entre as aplicações e o hardware: os detalhes reais do hardware tornamse transparentes para os usuários. Se um sistema operacional com tal função não existisse, um programador precisaria, por exemplo, saber ativar o barramento de controle e de dados de maneira apropriada a fim de realizar uma leitura de uma posição da memória principal e copiar o valor lido para outra posição da memória. Mesmo em linguagem de montagem (assembler), esta operação se resume, em geral, às seguinte instruções: LOAD (X) STORE (Y) % registrador recebe valor da posição X da memória % posição Y da memória recebe valor do registrador Compiladores e linguagens de comandos (ou shells) são outros componentes (não do sistema operacional) que complementam esta função do sistema operacional de esconder detalhes do hardware dos usuários finais dos computadores; 2. gerenciar os recursos de um sistema computacional, sejam recursos de software, sejam recursos de hardware. Por exemplo, a organização dos arquivos em disco, o controle da multiprogramação e controle de utilização da impressora. Sob este aspecto, o sistema operacional é visto como uma entidade de controle [SIL94].

3 3 Um sistema operacional é um programa ou um conjunto de programas que implementam estas duas funções acima. Dentro de cada possibilidade (fornecer uma máquina virtual e gerenciar recursos), as atividades realizadas variam de sistema operacional para sistema operacional. Podemos encontrar sistemas operacionais completos, fornecendo todos os serviços imagináveis aos usuários, e sistemas operacionais menos potentes, onde alguns serviços devem ser realizados pelo próprio usuário. Exemplos de sistemas operacionais são Unix (e suas inúmeras variações), DOS, Windows NT, OS/2, MACH e outros menos conhecidos, como QNX, Amoeba, Chorus, e Helios. É importante observar que, por ser um ou mais programas, um sistema operacional é também composto de um conjunto de tarefas que são executadas pelo processador. Sistema operacional é software, embora algumas de suas funções possam ser implementadas em hardware. A Figura 1 apresenta uma visão modular e hierárquica de um sistema computacional. Usuário 1 Usuário 2 Usuário 3 Usuário N Programas de Aplicação Sistema Operacional Hardware do Computador Figura 1. Uma visão modular e hierárquica de um sistema computacional [SIL94]. Processos. Independente se as tarefas são de usuários típicos, de programadores ou do sistema operacional, elas são executadas pelo processador e são gerenciadas pelo próprio sistema operacional (neste sentido, o sistema operacional se executa utilizando os seus próprios mecanismos de controle). Toda tarefa em execução que envolve um programa objeto (código), dados e um estado é visto pelo sistema operacional como um processo sequencial ou, simplesmente, processo. Informalmente, um processo é um programa em execução [SIL94]. Um processo não é um programa. Um programa é um arquivo armazenado geralmente em um meio magnético ou óptico,

4 escrito em uma linguagem de alto ou baixo nível. Um processo é um programa em execução. Uma receita de bolo é um programa. Fazer o bolo usando a receita é um processo. Processos são abstrações (da atividade da CPU) que são manipuláveis pelo sistema operacional. Um sistema operacional enxerga uma tarefa como um processo. Eventualmente, uma tarefa de um usuário é vista pelo sistema operacional como um conjunto de processos. Por exemplo, um processamento em lote (batch) envolve um job que se pode consistir em: (1) compilar um programa, (2) ligá-lo a outros módulos pré-compilados e (3) executar o programa objeto ligado final. Para o sistema operacional, este job é realizado através de três diferentes processos, um para cada etapa. Antes de entrar em detalhes sobre como processos são implementados, é importante observar que processos são criados por outros processos. Quando um computador é ligado, um programa de boot carrega módulos do sistema operacional que, a partir de sua execução, lançarão outros processos do sistema e suportarão processos de usuários. Qualquer processo, por sua vez, pode lançar novos processos, formando então uma estrutura hierárquica de processos. Processos também possuem estados e podem interagir com outros processos. Além disto, como visto acima, em um dado sistema computacional, podem existir vários processos em execução, normalmente, associados a diferentes usuários de um computador multiprogramado. O escalonador é o módulo do sistema operacional que decide a ordem de execução dos processos, dado que um ou mais processadores estão disponíveis. Processos podem ser preemptáveis, se eles podem ser interrompidos durante a sua execução a fim de que outro processo execute, ou processos podem ser não preemptáveis, se eles não podem ser interrompidos (ou seja, executam do início ao fim ou explicitamente se bloqueiam). Após a interrupção de um processo ou o seu fim, o escalonador deve decidir quem deve executar em seguida. Tomada a decisão, o despachante (em inglês, dispatcher) efetivamente ativa o processo escolhido para execução. Pelo fato de que processos podem interagir com outros processos, processos podem bloquear-se durante esta interação. Por exemplo, um processo, a fim de que possa continuar o seu trabalho, pode aguardar dados oriundos de outro processo. Enquanto espera, o processo está parado, bloqueado. Assim, é possível observar que processos podem estar em diferentes estados. Do discurso acima, três estados são citados: a) um processo em execução (running): é o processo cujas instruções o processador está correntemente executando;

5 5 b) um processo pronto para executar (ready): é o processo que pode ser executado pelo processador, mas não está em execução pois não foi escolhido ainda pelo escalonador; c) um processo bloqueado (blocked): como um processo pronto para executar, um processo bloqueado também está em espera, mas não para ser escolhido pelo escalonador. Ele espera a ocorrência de um outro evento, por exemplo, recepção de dados, a passagem de 5 segundos ou o término de uma operação de entrada e saída (I/O). Quando o evento ocorre, o processo muda de estado, passando de bloqueado para pronto para executar. A Figura 2 apresenta um diagrama de transição dos possíveis estados de um processo. O modelo de processos facilita a compreensão da dinâmica do computador. Uma outra visão possível é aquela baseada em interrupções: nesta abordagem, diferentes interrupções estão ocorrendo no sistema. A cada interrupção ocorrida, uma tarefa deve ser realizada. Esta tarefa pode ser uma tarefa em si ou parte de uma tarefa maior. Nesta abordagem, não é possível saber a quem pertence a tarefa e se ela é parte de uma tarefa maior. Por exemplo, um programa de usuário em execução em um sistema multiprogramado suportando a preempção é composto de várias pequenas tarefas, cada uma realizada entre duas interrupções do processador. Em outras palavras, parte desta tarefa é executada pelo processador, até que ocorra uma interrupção avisando que o tempo para aquela microtarefa se esgotou. O escalonador (outra tarefa) executa então e decide qual microtarefa deve ser executada em seguida. Perde-se, assim, a noção de unidade que o modelo de processo apresenta. Naquele modelo, existe um processo escalonador, um processo para cada tarefa que envolve um programa em execução. Na abordagem baseada em interrupções, tudo ocorre em função das interrupções: perde-se a noção de um todo que o processo representa. Running Blocked Ready Figura 2. Diagrama de transição de estados de um processo [TAN92]. Algoritmos de Escalonamento. Na literatura, existem vários algoritmos de escalonamento de processos. O mais simples adota uma política justa: o primeiro processo na fila de processos prontos

6 executa. Esta política respeita a ordem da fila e considera que processos não são preemptados (interrompidos). Apesar de simples, não é comum. As políticas mais implementadas são baseadas em fatias de tempo (também chamada de quanta - plural de quantum de tempo) e em prioridades ou, mais comumente, uma mistura dos dois. Um processador executa um processo durante uma fatia de tempo. Ao término desta fatia, o processo é desescalonado e passa para o final da fila de processos prontos para executar. Um processo naturalmente pode não usar toda a fatia disponível: ele pode-se bloquear por algum motivo antes que a fatia termine. Esta estratégia baseada em fatias é conhecida como round-robin. Em um esquema de prioridades, o próximo processo a ser executado após um desescalonamento deve ter prioridade maior, sendo, eventualmente, um processo não preemptável (interrompível). Implementação de Processos. A fim de implementar o modelo de processos, o sistema operacional mantém uma tabela chamada de tabela de processos, com uma entrada por processo. As principais informações contidas nesta tabela são (tomando Unix como exemplo): informações relativas à gerência de processos valor dos registradores contador de programa (PC - program counter) que contém o endereço da próxima instrução a ser executada palavra de status do programa endereço da pilha do programa estado do processo (executando, pronto para executar, bloqueado) momento em que o processo iniciou tempo utilizado de processador tempo de processador utilizado pelos processos filhos (processos gerados pelo processo corrente) endereços para fila de mensagens bits de sinais pendentes identificador do processo (PID - Process ID) informações relativas à gerência de memória endereço do segmento de texto

7 7 endereço de segmento de dados inicializados endereço de segmento de dados não inicializados status de saída status de sinalização identificador do processo (PID - Process ID) identificador do processo pai identificador do grupo do processo identificador real e efetivo do usuário identificador real e efetivo do grupo informações relativas à gerência de arquivos máscara de acesso aos arquivos diretório raiz diretório corrente descritores de arquivos identificador efetivo do usuário identificador efetivo do grupo do usuário parâmetros de chamadas ao sistema Cada processo tem uma entrada na tabela de processos contendo todas ou parte das informações acima. Em geral, esta tabela fica residente em memória principal, cache ou mesmo em registradores especiais do processador, dependendo de características arquiteturais do computador. Quando um processo é desescalonado pelo escalonador ( perde a vez ), todas as informações pertinentes a este processo devem ser salvas na tabela de processos. O sistema operacional deve carregar, a partir da tabela de processos, o estado do próximo processo a carregar. A tabela de processos mantém informações sobre os processos. Mas o que é o processo propriamente dito? Ora, um processo é um programa em execução que consome principalmente dois recursos: processador e memória. Instruções e dados devem residir em cache, memória principal e mesmo em memória secundária (disco magnético, normalmente) quando o sistema dispõem de memória virtual. O espaço de memória ocupado por um processo é chamado de área de trabalho (workspace) e contém basicamente (usando novamente o modelo Unix de processo):

8 1. um segmento de texto: contém as instruções a serem executadas em linguagem de máquina; 2. um segmento de dados: contém os dados do programa. É composto de duas partes, um segmento de dados inicializados (em geral, constantes) e um segmento de dados não inicializados, cujo espaço não é alocado quando o processo inicia. Por esta razão, o segmento de dados não inicializados possui tamanho variável (pode ocorrer alocação dinâmica de memória); 3. um segmento de pilha (stack): contém variáveis do ambiente de execução, o string contendo a linha de comando e endereços de retorno de procedimentos. A Figura 3 apresenta o espaço de endereçamento de um processo Unix em execução. BSS corresponde à área de dados não inicializados de um processo Unix. Pilha BSS Dados Código Figura 3. Espaço de endereçamento de um processo típico em Unix [TAN92]. Em um sistema multiprogramado, diferentes processos se alternam na utilização do processador. O processador que executa um programa contém em seus registradores dados daquele programa,

9 9 eventualmente dados de controle (parte de tabelas), o contador corrente do programa e o espaço de trabalho (completo ou parcial) na memória. A tabela de processos está também na memória. Quando a fatia de tempo correspondente àquele processo termina (em um escalonamento baseado em fatias de tempo) ou quando uma operação causadora de bloqueio é executada, o processo deve ser desescalonado. Isto implica em salvar o contexto deste processo, ou seja, salvar em memória todas as variáveis de estado daquele processo. Em geral, isto implica em salvar conteúdo de registradores e tabelas. Não necessariamente o espaço de trabalho daquele processo sai da memória. Aliás ele deve ficar, visto que, em caso de desescalonamento por término da fatia de tempo, o processo voltará a executar em breve. Se o processo é bloqueado por alguma outra razão diferente do término da fatia de tempo, o processo é colocado em estado de bloqueado, aguardando algum evento a fim de que ele se desbloqueie (por exemplo, fim de uma operação de entrada e saída). Este salvamento de contexto possui tempos na ordem do milissegundo (se o salvamento for em disco) ou da ordem do microssegundo (se o salvamento for em RAM) e, se não for devidamente eficiente, pode comprometer o desempenho do sistema como um todo. Suponha agora que tal sistema multiprogramado seja utilizado para programação concorrente e pseudo-paralela. Pseudo-paralela pois, inicialmente, é considerado que se dispõem de um único processador. Com um processador, não se pode ter paralelismo real. Em um sistema monoprocessado, multiprogramado, vários processos devem cooperar a fim de resolver um único problema. Normalmente, um sistema multiprogramado suporta diferentes tarefas de diferentes usuários executando de maneira concorrente. Assim, temos uma edição de textos de um usuário X, em concorrência com uma compilação de um usuário Y, em concorrência com um shell (interpretador de comandos) de um usuário Z, e assim por diante. Nada impede de termos vários processos resolvendo um único problema de um único usuário. Isto não parece tão distante assim do quotidiano. Um ambiente de janelas normalmente funciona desta maneira. Cada janela tem um processo associado em execução. Existe um processo pai, normalmente o shell de origem, que, a pedido do usuário, lança diferentes processos correspondentes a diferentes janelas. Tudo isto gerenciado por um programa de controle de janelas. A comunicação, em geral, ocorre dos diferentes processos filhos para o processo pai, com fins de notificação de eventos. O gerenciador de janelas deve-se manter informado de tudo o que ocorre na tela.

10 A mesma abordagem poderia ser utilizada para resolver um problema menos visual e mais científico, por exemplo, uma multiplicação de matrizes ou uma simulação numérica. O objetivo é explorar o máximo de concorrência possível para ir mais rápido. Um processo que se bloqueia por entrada/saída pode ceder o processador para outro processo irmão que o está ajudando a resolver o mesmo problema. Em sistemas multiprogramados tradicionais, como Unix, apesar da cooperação, estes processos, para o sistema operacional, não são diferentes dos outros processos em execução dos outros usuários. Suponha que dois processos A e B cooperem para resolver um dado problema arbitrário X. Se A é desescalonado, nada é garantido se o próximo processo a ser executado é B. Pode ser, pode não ser, depende do número de processos em execução e, principalmente, da política de escalonamento adotada pelo sistema operacional. Eventualmente, uma prioridade mais alta pode ser concedida a A e a B, a fim de que eles, em concorrência com o sistema operacional, sempre executem, antes de qualquer outro processo de outro usuário. Mas, isto envolve um acordo externo ao sistema (o super usuário pode modificar a prioridade de processos: um usuário comum consegue abaixar a prioridade de seu processo, jamais subi-la). Assim, além de contar com um chaveamento de contexto nada diferente em relação ao chaveamento de contexto de outros processos, estes processos não compartilham o processador em conjunto. Outro aspecto a ser considerado é a separação das áreas de trabalho entre os diferentes processos, sejam eles cooperantes ou não (independentes). Um processo não tem acesso à área de trabalho de outro processo. Se um processo A precisa de dados de outro processo B, o processo B pode, por exemplo, escrever o dado em um arquivo e, em seguida, o processo A ler o arquivo com o dado. Outra possibilidade é o processo A enviar uma mensagem para B solicitando o dado e aguardar o processo B enviar para A uma outra mensagem com o dado solicitado. Estas são as duas maneiras básicas para dois processos comunicarem (a última depende de um suporte do sistema operacional para troca de mensagens). Qualquer outra maneira corresponde a uma variação dos métodos acima. A área compartilhada para comunicação pode ser um registrador, memória principal ou disco (no caso de arquivos). Em ambientes monoprocessados, a troca de mensagem entre processos também será feita através de uma memória compartilhada que conterá a mensagem a ser transmitida. Porém, se os processos residem em dois processadores distintos, interconectados por uma rede, então a mensagem trafegará pelo meio de interconexão (e.g., um barramento), constituindo uma mensagem, propriamente dita, enviada de uma máquina a outra. Quando dois processos se comunicam através de uma área comum, o acesso a esta área deve ser controlada de modo a permitir o acesso único por

11 11 um processo. A posição de uma memória pode ficar inconsistente (e a instrução associada), se dois ou mais processos tentarem atualizar esta posição de memória concorrentemente. Situações como esta podem levar às chamadas situações de corrida. Um exemplo é apresentado na Figura 4. Para contornar este problema de compartilhamento, diferentes mecanismos podem ser implementados, tanto em hardware quanto em software, através de primitivas de baixo nível ou primitivas mais abstratas. A literatura é extensa [SIL94][TAN92]: instruções do tipo TSL (Test and Set Lock), primitivas sleep e wakeup, semáforos, contadores de eventos, primitivas lock (tranca), monitores e mesmo mensagens (uma comunicação através de mensagens estabelece, por si, uma ordem de acesso ao dado: primeiro o dado é enviado e posteriormente recebido, jamais o contrário). Em algum momento, estas primitivas garantem uma atomicidade de execuções de primitivas de sincronização entre processos. Processo 1 Processo 2 counter :=2; counter := 0; counter := counter+1; counter := counter-1; Se a operação counter := counter+1; é decomposta em: registrador1 := counter; registrador1 := registrador1+1; counter := registrador1; e a operação counter := counter-1; é decomposta em: registrador2 := counter; registrador2 : = registrador2-1; counter := registrador; o processo pode ser desescalonado entre qualquer uma das sub-instruções acima, levando a possíveis diferentes valores de counter após a execução concorrente do processo 1 e do processo2. Figura 4. Um exemplo de situação de corrida. O esquema de processos fechados, comunicando-se através de memória compartilhada ou através de mensagens, é adequado? Algumas vantagens e desvantagens podem ser levantadas:

12 Vantagens: o espaço de trabalho de cada processo é devidamente protegido pelo sistema operacional que não permite que outros processos (sejam cooperantes ou não) obtenham acesso a espaços de trabalho de outros processos; um processo que participa em um grupo de processos cooperantes pode, por algum motivo, morrer sem afetar fisicamente os outros processos. Os processos cooperantes podem ficar todos bloqueados caso um ou mais deles morram. Mas se a aplicação for tolerante a falhas, dentro do próprio programa, existem mecanismos que prevêem este fenômeno. Os outros processos se adaptam em função da ausência do elemento falho. Desvantagens: suponha dois processos A e B cooperando para a realização de uma tarefa. Se o processo A, em execução, se bloqueia por algum motivo, logo no início da fatia de tempo a ele alocada, o outro processo B, que também auxilia a resolver o mesmo problema de A, provavelmente não será escalonado para preencher o resto da fatia não utilizado por A. Como não é possível prever com antecedência qual será o próximo conjunto de instruções a ser executada por um processo, nada se pode afirmar sobre quando um processo perderá o processador. Se se dá 10 unidades de tempo para um processo se executar e ele só executa uma unidade de tempo destes 10, por que não dar as 9 unidades de tempo restantes para outro processo cooperante associado? se fosse possível ordenar diferentes processos envolvidos na mesma computação de maneira consecutiva, o problema acima estaria resolvido. Porém, o tempo de chaveamento de contexto poderia ainda ser considerado alto. A pergunta que resta é: não seria possível reduzir o tempo de chaveamento de contexto destes processos, sabendo que estes processos cooperam? Será que, pelo fato deles cooperarem, alguma simplificação na implementação destes processos não poderia ser idealizada? uma forma de comunicação entre processos passa por um arquivo. Mesmo quando isto não é explícito (por exemplo, usando o pipe do Unix), o sistema de arquivos é acionado. Um acesso a arquivo é, em geral, muito mais lento do que um acesso puro à memória.

13 13 Em face destas vantagens e desvantagens, duas soluções poderiam ser adotadas: 1. reduzir o tempo de chaveamento de contexto e implementar mecanismos mais eficientes para comunicação entre processos 2. permitir que um processo lance outros processos com áreas de acesso comuns para comunicação e que estes processos filhos compartilhem em grupo a mesma fatia de tempo alocada ao processo pai É importante observar que a criação de processos é uma tarefa realizada com muita frequência. O problema é que os processos não compartilham nada entre si, quando muito, o segmento de texto (código), que é, por natureza, não modificável na maior parte dos casos. Existem esforços em direção à primeira solução: manter a proteção existente entre processos e realizar um chaveamento de contexto eficiente. O hardware pode auxiliar nesta operação. Resta resolver o problema do compartilhamento da fatia de tempo entre processos correlatos. Isto pode ser imposto automaticamente pelo sistema operacional, modificando a estratégia de escalonamento do sistema operacional e criando um campo na tabela de processos que indica se o processo participa de um grupo de processos cooperantes. Com tantas modificações, um novo tipo de processo pode ser idealizado: o processo leve, também conhecido como thread. É o que será visto em seguida. 2. Processos Leves ( Threads ) Segundo Feitelson e Rudolph [FR90], um sistema paralelo deve suportar dois tipos de modelos de processos. Os processos, ditos pesados, são aqueles mencionados na seção anterior. Eles permitem um projeto estruturado e modular de grandes sistemas, criando contextos distintos para cálculos independentes, separados e protegidos uns dos outros. Isto naturalmente é válido para usuários independentes. Threads permitem um paralelismo de granularidade mais fina; muitas threads podem existir dentro de um contexto de um processo, cooperando entre si a fim de realizar um dado cálculo e compartilhando o espaço de endereçamento, arquivos abertos, etc. [FR90]. Por granularidade mais fina, subentende-se que a unidade de cálculo realizada de maneira concorrente é menor do que a unidade de cálculo associada a um processo. Por exemplo, a granularidade de um processo é de

14 programa. A granularidade de uma thread pode ser de um procedimento dentro de um programa: isto é, procedimentos podem ser executados concorrentemente. A Figura 5 apresenta graficamente a diferença entre estas duas abstrações. Thread Contador de Programa Processos Pesados Figura 5. Processos e threads [TAN92]. É importante observar que um processo pesado visto anteriormente é composto de apenas uma thread (vide Figura 5). Por exemplo, um processo que corresponde à execução de um programa compilado em C, possui uma thread de controle que começa no main(), passa por todas as instruções do programa, inclusive instruções embutidas em procedimentos, e termina no último fecha-chaves do programa (fechando o bloco iniciado pelo main). Threads podem ser conhecidas também como processos leves. Em ambientes multiprocessados, diferentes threads podem ser executadas realmente em paralelo em diferentes processadores. Threads têm-se tornado populares porque possuem algumas características de processos pesados, mas podem ser executadas mais eficientemente [SIL94]. Histórico. A noção de uma thread, como um fluxo sequencial de controle, data de 1965, pelo menos, com o Berkeley Timesharing System. Naquela época, eram chamados de processos e não de threads. Processos interagiam através de variáveis compartilhadas, semáforos e mecanismos análogos. Max Smith desenvolveu um protótipo de implementação de threads sobre o sistema operacional Multics em Ele utilizou múltiplas pilhas em um processo pesado para suportar compilações em background. Talvez o ancestral mais importante das threads é a primtiva suportada pela linguagem PL/I, de cerca de A linguagem como definida pela IBM proporcionava uma chamada do tipo:

15 15 CALL XXX (A, B) TASK; que criava uma thread para XXX. Não está claro se os compiladores da IBM implementaram esta possibilidade, mas foi examinada em detalhes quando do desenvolvimento de Multics. Foi decidido que a chamada TASK como definido não mapeava em processos, desde que não havia proteção entre threads de controle. Assim, Multics tomou uma direção diferente, e a chamada TASK foi removida de PL/I pela IBM. Em seguida, surgiu Unix no início dos anos 70. A noção Unix de um processo transformou-se em uma thread única de controle sequencial mais um espaço de endereçamento virtual (incidentalmente, a noção Unix de processo derivou diretamente dos processos no projeto do Multics). Assim, processos em Unix são máquinas assaz pesadas, desde que eles não podem compartilhar memória entre si (cada processo tem o seu espaço de endereçamento, podendo comunicar-se através de pipes ou de mensagens). Após um certo tempo, usuários de Unix começaram a sentir falta dos velhos processos que compartilham memória. Isto levou às threads como as conhecemos hoje. O termo leves (lightweight) surgiu em finais da década de 70 ou início da década de 80, junto com os primeiros microkernels (Thot, Amoeba, Chorus, Mach). Como observação, é colocado que threads têm sido utilizadas em aplicações de telecomunicações por um longo tempo [NWS96]. O FAQ (Frequently Asked Questions - questões frequentemente colocadas: documento de um newsgroup Internet com as dúvidas mais comuns dos leitores daquele newsgroup) não comenta sobre a linguagem Algol (pelo menos da sua implementação nas máquinas de pilha da Burroughs) na qual threads concorrentes eram disparadas dentro de aplicações, sejam como co-rotinas (veja abaixo), sejam como threads assíncronas. Implementação de threads. Cada processo leve deve ter seu próprio contador de programa e sua própria pilha. Podem conter também uma área de dados privados. Threads podem criar outras threads e, como processos pesados, podem bloquear-se na espera de um evento. Threads compartilham o processador, da mesma maneira que processos pesados. Porém, diferentemente de processos pesados, uma thread bloqueada pode ceder o processador a outra thread do mesmo processo. Embora tenham seu próprio PC, sua pilha e dados privados, as threads se executam sobre um mesmo espaço de endereçamento, compartilhando variáveis globais se for o caso. Segundo Tanenbaum, não há proteção alguma entre threads, pois (1) é impossível (visto que todas elas atuam dentro do espaço de um único processo), e (2) em geral, não é necessário, pois estes processos leves

16 estão exatamente cooperando para resolver um problema comum e pertencem a um mesmo usuário. Threads possuem estados também, naturalmente: em execução, prontas para executar, bloqueadas e terminadas. Dentro deste modelo, é necessário caracterizar um processo leve como terminado, visto que outras threads podem estar em execução e o espaço de trabalho deixado pela thread que terminou ainda não tenha sido recolhido pela thread pai. Uma tabela de threads deve então ser mantida também. Os itens por thread são normalmente: o contador de programa; o endereço da pilha; o conjunto de registradores associados; endereços das threads filhas; estado. Resta para o processo, como um todo, informações do tipo endereço da área de trabalho, variáveis globais, apontadores para informações de arquivos abertos, endereços de processo filhos, informações sobre timers, sinais, semáforos e de contabilização. Threads podem ser síncronas ou assíncronas. Quando elas são síncronas, elas executam até que elas mesmas decidam não continuar a execução (ou termine a fatia de tempo para aquele processo que, ao voltar a executar, continuará executando a mesma thread interrompida). Isto facilita o mecanismo de compartilhamento de dados, pois jamais uma thread será interrompida, se ela não o quiser explicitamente. Threads assíncronas, por outro lado, podem executar umas com as outras, por exemplo, subdividindo a fatia de um processo equitativamente entre as threads ativas (não bloqueadas). Modelos de utilização de threads. O padrão de comportamento das threads dentro de um processo pode ser o mais variado possível. Por exemplo, Tanenbaum apresenta três organizações diferentes: a mestre/escravo, um modelo baseado em time ou equipe e um modelo baseado em pipeline. Na primeira configuração, existe uma thread mestre que recebe tarefas a serem realizadas e que as despacha para outras threads que efetivamente realizarão as tarefas (uma por thread, por exemplo). Um servidor de arquivos pode ser estruturado desta maneira. Existe uma thread que recebe pedidos

17 17 de abertura de arquivos. Para cada arquivo, o mestre designa uma thread escrava que se encarregará de gerenciar um arquivo cuja abertura foi solicitada. É aquela thread escrava que lerá ou escreverá no arquivo a qual ela é responsável. No modelo de time, é possível imaginar threads com habilidades diferentes: por exemplo, uma somente lê arquivos, outra somente realiza cálculos com números inteiros, outra acolá somente realiza operações sobre números com ponto flutuante. Da mesma maneira que uma equipe de operários pode levantar uma casa, as diferentes threads podem resolver um dado problema. O modelo em pipeline (ou em duto) é análogo a uma linha de montagem, onde diferentes threads, também especializadas, realizam diferentes operações sobre dados que são passados de thread em thread, como um carro sendo montado em uma linha de produção. Pacotes de threads. As primitivas de manipulação de threads são em geral disponíveis através de bibliotecas ou de pacotes (thread packages). Um primeiro problema a ser abordado é se threads são criadas estatica ou dinamicamente. No caso estático, o número de threads é definido em tempo de redação ou de compilação do programa. A pilha alocada para cada thread é de tamanho fixo. No caso dinâmico, que é o mais habitual, threads são criadas sob demanda pelo programa. Quase sempre, o nome da primitiva de criação de threads envolve o termo fork, também bastante utilizado para criação de processos pesados. Entre diversos parâmetros, os mais importantes são o nome do procedimento que está sendo associada a thread, parâmetros para o procedimento, tamanho da pilha e até mesmo uma prioridade de escalonamento, prioridade está válida somente dentro do contexto do processo com a thread pai. É possível criar um esquema de prioridades entre threads de um mesmo processo. O processo, por sua vez, possui uma prioridade externa usada pelo escalonador do sistema operacional. A prioridade do processo, como vimos, em geral não é modificada pelo usuário. Assim como processos, threads podem terminar normalmente com a execução do fim do procedimento, ou podem ser mortas por outras threads. Threads podem comunicar-se através das variáveis globais do processo que as criou. A utilização destas variáveis pode ser controlada através de primitivas de sincronização (monitores, semáforos, ou construções similares). Primitivas existem para bloqueio do processo que tenta obter acesso a uma área da memória que está correntemente sendo utilizada por outro processo. Primitivas de sinalização de fim de utilização de recurso compartilhado também existem. Estas primitivas podem acordar um ou mais processos que estavam bloqueados. É importante observar que variáveis globais, embora úteis em alguns contextos, devem ser evitadas em outros. Valores de status de

18 operações de entrada/saída são em geral armazenadas em variáveis globais. O exemplo de [TAN92] é a variável errno que é global a todas as threads. Se uma thread realiza uma abertura de arquivo para leitura e algum problema ocorre (e.g., o arquivo não existe), a variável errno conterá um código de operação inválida. Porém, antes de testá-la para tomar alguma providência, a thread é desescalonada e outra thread passa a ser executada pelo processador. Esta mesma thread realiza outra operação de entrada e saída com sucesso e a mesma variável errno conterá o valor de um código válido de status. Quando a outra thread voltar a executar ela enxergará um valor errôneo da variável status. Implementação de pacotes de threads. [TAN92] apresenta duas maneiras possíveis de implementar threads: uma no espaço do usuário e outra no espaço do sistema operacional. Na primeira opção, o kernel do sistema operacional não tem conhecimento da existência das threads. Para o kernel, existem processos pesados que são executados intercaladamente. A vantagem é que pacotes deste tipo podem ser utilizados em sistemas operacionais que não suportam threads (por exemplo, Unix padrão como SunOS). O escalonamento das diferentes threads é gerenciado por uma camada de software abaixo das threads e acima do kernel. Chamadas de sistema não são realizadas: toda a gerência da execução das threads é feita pelo run time system (veja Figura 6). Outras vantagens são a flexibilidade do escalonamento (o usuário pode até mesmo programar o seu próprio algoritmo) e a extensibilidade ou escalabilidade (scalability): se as threads fossem todas gerenciadas pelo kernel, este se tornaria um gargalo e o desempenho cairia com o aumento do número de threads. Em pacotes de threads gerenciados pelo sistema operacional, não há necessidade de uma camada adicional de software. Para cada processo ativado, existe uma tabela de threads com informações sobre o seu estado. Esta tabela também existe no caso de pacotes a nível de usuário, mas a mesma agora se encontra em um espaço de trabalho do sistema operacional. Qualquer operação relativa a uma thread é implementada com uma chamada de sistema, o que envolve um overhead maior. Quando uma thread se bloqueia, o sistema pode executar outra thread do mesmo processo ou uma thread de outro processo.

19 19 Threads Threads User Space Run time system Kernel User-level threads package Kernel Space Kernel Kernel-level threads package Figura 6. Pacotes de threads a nível de usuário e a nível de sistema [TAN92]. Comparando as duas abordagens, observa-se que threads a nível de usuário jamais podem bloquear. Se uma delas bloqueiam, todas as outras ficam bloqueadas e o processo como um todo é desescalonado. Uma solução seria dispor de chamadas de sistemas não bloqueantes, mas isto envolveria mudanças no sistema operacional subjacente. Pode-se descobrir antes de executar uma instrução se ela vai bloquear ou não (algo como um comando do tipo probe - ou sonda). Se uma instrução vai bloquear, o pacote pode então decidir executar outra thread. Este comando de sonda implica em modificações na biblioteca de chamadas de sistema. Jacket é o nome dado ao código associado em torno de uma chamada de sistema a fim de fazer esta verificação. Escalonamento round-robin não é possível entre threads executando dentro de um quantum de tempo do processador, pois interrupções de relógio não ocorrem neste intervalo (a não ser que seja explicitamente solicitada tal interrupção). Isto quer dizer que se uma thread começa a executar, ela o fará até terminar a fatia de tempo alocada para o processo como um todo ou a thread explicitamente se bloquear ou passar para o estado ready. Threads são necessárias em aplicações onde uma concorrência pode ser explicitada e ocorra muitos bloqueios (por exemplo, uma aplicação I/O- Bound, que realiza muita entrada/saída e pouco cálculo). Outros problemas podem ocorrer para ambos os casos: problema de código de biblioteca compartilhado e dados globais por processo. Reentrância. O desenvolvimento de aplicações com múltiplas threads requer um ambiente com suporte a compartilhamento de código (ou reentrância) entre threads. Solaris, por exemplo, proporciona versões reentrantes para a maioria das bibliotecas comumente utilizadas. Correntemente, Solaris não proporciona versões seguras a threads das bibliotecas Motif e

20 OpenLook, que são raramente utilizadas por múltiplas threads em um programa. Windows NT também proporciona versões reentrantes para a maioria de suas bibliotecas de uso comum. Depuração. A depuração de aplicações multithreaded é um grande desafio e pode ser frustrante sem o suporte de um depurador ciente de threads. Solaris suporta um depurador multithreaded como parte de seu ambiente SPARCworks/iMPact, enquanto o depurador NT multithreaded faz parte de Visual C++. Além de mostrar as threads por processo, ambos os depuradores suspendem e resumem threads e inspecionam variáveis por thread. Co-rotinas. Threads que não são preemptiveis e podem somente ser um único fluxo ativo de controle dentro de um processo (não importando o número de processadores disponíveis) são referidas como co-rotinas. Programação com co-rotinas requer uma abordagem bem diferente da programação baseada em threads. Isto porque os problemas de sincronização e de compartilhamento de recursos que ocorrem em ambientes com threads não perturbam o programador de co-rotinas. Threads e Sistemas Distribuídos e Concorrentes. As threads são de interesse particular em sistemas distribuídos e concorrentes. Como vimos, módulos em sistemas concorrentes são, em geral, mais complexos do que módulos em sistemas sequenciais. Por exemplo, um procedimento pode estar associada a uma ou mais threads concorrentes que interagem através de uma memória comum ou através de passagem de mensagens. Assim, uma relação simples de entrada e saída (característica de procedimentos de programas sequenciais) não é adequada para descrever o comportamento de um procedimento, desde que os seus estados intermediários internos podem estar visíveis aos clientes através de outras interações. Interfaces em procedimentos concorrentes incluem não somente pontos de entrada e de retorno, mas também pontos intermediários que podem interagir com outras threads. Módulos em sistemas concorrentes podem também ser ativos: eles podem ter threads internas em background, cujo efeito em algum lugar deve ser descrito em uma especificação [WEI93]. Futuro. Outros sistemas operacionais são multithreaded: NextStep, OS/2, AIX (e outros Unix), e Windows95. Versões futuras do sistema operacional de Macintosh serão também multithreaded. 3. Exemplos

Programação Concorrente Processos e Threads

Programação Concorrente Processos e Threads Programação Concorrente Processos e Threads Prof. Eduardo Alchieri Processos O conceito mais central em qualquer sistema operacional é o processo Uma abstração de um programa em execução Um programa por

Leia mais

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários.

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários. Os sistemas computacionais atuais permitem que diversos programas sejam carregados na memória e executados simultaneamente. Essa evolução tornou necessário um controle maior na divisão de tarefas entre

Leia mais

Módulo 4: Processos. Conceito de Processo. Diagrama de Estados de Processos. Estados de Processo

Módulo 4: Processos. Conceito de Processo. Diagrama de Estados de Processos. Estados de Processo Módulo 4: Processos Conceito de Processo Conceito de Processo Escalonamento de Processos Operações com Processos Processos Cooperativos Comunicação entre Processos Um sistema operacional executa uma variedade

Leia mais

Módulo 4: Processos. Conceito de Processo. Escalonamento de processos Operações sobre processos Processos cooperantes Comunicação entre processos

Módulo 4: Processos. Conceito de Processo. Escalonamento de processos Operações sobre processos Processos cooperantes Comunicação entre processos Módulo 4: Processos Conceito de Processo Escalonamento de processos Operações sobre processos Processos cooperantes Comunicação entre processos 4.1 Conceito de Processo Um Sistema Operacional executa uma

Leia mais

Processos e Threads (partes I e II)

Processos e Threads (partes I e II) Processos e Threads (partes I e II) 1) O que é um processo? É qualquer aplicação executada no processador. Exe: Bloco de notas, ler um dado de um disco, mostrar um texto na tela. Um processo é um programa

Leia mais

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron alexandre.a.giron@gmail.com

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron alexandre.a.giron@gmail.com Sistemas Operacionais 2014 Introdução Alexandre Augusto Giron alexandre.a.giron@gmail.com Roteiro Sistemas Operacionais Histórico Estrutura de SO Principais Funções do SO Interrupções Chamadas de Sistema

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Gerência de processos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Introdução Multiprogramação Permite a execução de diversos processos concorrentemente Maior

Leia mais

Capítulo 2 Processos e Threads Prof. Fernando Freitas

Capítulo 2 Processos e Threads Prof. Fernando Freitas slide 1 Capítulo 2 Processos e Threads Prof. Fernando Freitas Material adaptado de: TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3ª edição. Disponível em: http://www.prenhall.com/tanenbaum_br slide

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Gerência de processos Controle e descrição de processos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Representação e controle de processos pelo SO Estrutura

Leia mais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais Arquitetura de Computadores Introdução aos Sistemas Operacionais O que é um Sistema Operacional? Programa que atua como um intermediário entre um usuário do computador ou um programa e o hardware. Os 4

Leia mais

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Conceitos básicos e serviços do Sistema Operacional Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Tipos de serviço do S.O. O S.O.

Leia mais

Sistema Operacional. Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais

Sistema Operacional. Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais Sistema Operacional Processo e Threads Introdução a Processos Todos os computadores modernos são capazes de fazer várias coisas ao mesmo tempo. Enquanto executa um programa do usuário, um computador pode

Leia mais

7 Processos. 7.1 Introdução

7 Processos. 7.1 Introdução 1 7 Processos 7.1 Introdução O conceito de processo é a base para a implementação de um sistema multiprogramável. O processador é projetado apenas para executar instruções, não se importando com qual programa

Leia mais

S.O.: Conceitos Básicos

S.O.: Conceitos Básicos S.O.: Conceitos Básicos Camada de software localizada entre o hardware e os programas que executam tarefas para o usuário; Acessa os periféricos Entrada e Saída Esconde os detalhes do hardware para o programador

Leia mais

Sistemas Operacionais

Sistemas Operacionais UNIVERSIDADE BANDEIRANTE DE SÃO PAULO INSTITUTO POLITÉCNICO CURSO DE SISTEMAS DE INFORMAÇÃO Sistemas Operacionais Notas de Aulas: Tópicos 7 e 8 Estrutura do Sistema Operacional São Paulo 2009 1 Sumário

Leia mais

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN SISTEMAS OPERACIONAIS Apostila 03 Estrutura do Sistema Operacional UNIBAN 1.0 O Sistema Operacional como uma Máquina Virtual A arquitetura (conjunto de instruções, organização de memória, E/S e estrutura

Leia mais

Chamadas de Sistema e Processo

Chamadas de Sistema e Processo Andrique Amorim www.andrix.com.br professor@andrix.com.br Chamadas de Sistema e Processo Estrutura do Computador Sistemas Operacionais Estrutura do Computador Sistemas Operacionais Modos de Acesso ao S.O.

Leia mais

Chamadas de Sistema e Processo

Chamadas de Sistema e Processo Andrique Amorim www.andrix.com.br professor@andrix.com.br Chamadas de Sistema e Processo Estrutura do Computador Sistemas Operacionais Estrutura do Computador Sistemas Operacionais Modos de Acesso ao S.O.

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Questões Em uma rede de sobreposição (overlay), mensagens são roteadas de acordo com a topologia da sobreposição. Qual uma importante desvantagem

Leia mais

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br

Leia mais

Máquina de estados UNIX O

Máquina de estados UNIX O Estruturas Processos de Controle (Aula 5) Aula Interrupções Profa. Patricia Gerência fluxo, execução D. O Abstração passada Criação podendo de gerar hw e transição sw (mudança de CostaLPRM/DI/UFES que

Leia mais

Máquina de estados UNIX O. Sistemas Operacionais 2008/1Profa. Patricia S.O. computação: recursos D. S.O S.O. controla eventos no sistema de

Máquina de estados UNIX O. Sistemas Operacionais 2008/1Profa. Patricia S.O. computação: recursos D. S.O S.O. controla eventos no sistema de Estruturas Processos de Controle (Aula 5) Aula Interrupções Profa. Patricia Gerência fluxo, execução D. O Abstração passada Criação podendo de gerar hw e transição sw (mudança de CostaLPRM/DI/UFES que

Leia mais

SISTEMAS OPERACIONAIS

SISTEMAS OPERACIONAIS SISTEMAS OPERACIONAIS Processos e Threads Andreza Leite andreza.leite@univasf.edu.br Plano de Aula 2 Gerenciamento de Processos Threads Aplicações com múltiplas Threads Concorrência e Compartilhamento

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas Operacionais Prof. Marcelo Sabaris Carballo Pinto Gerencia de Processos 4.1 Introdução aos Processos Gerenciamento de Processos Processo -Definição: É uma abstração do sistema

Leia mais

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo 4 PROCESSOS Os primeiros sistemas operacionais permitiam que apenas um processo fosse executado por vez. Dessa maneira, este processo tinha todo o sistema computacional a sua disposição. Os atuais sistemas

Leia mais

Sistemas Operacionais. Alexandre Meslin meslin@inf.puc-rio.br

Sistemas Operacionais. Alexandre Meslin meslin@inf.puc-rio.br Sistemas Operacionais Alexandre Meslin meslin@inf.puc-rio.br Ementa Apresentação do curso Cap1 - Visão Geral Cap2 - Conceitos de Hardware e Software Cap3 - Concorrência Cap4 - Estrutura do Sistema Operacional

Leia mais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais Notas da Aula 4 - Fundamentos de Sistemas Operacionais 1. Threads Threads são linhas de execução dentro de um processo. Quando um processo é criado, ele tem uma única linha de execução, ou thread. Esta

Leia mais

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 5 PROCESSOS 1. INTRODUÇÃO Em sistemas distribuídos é importante examinar os diferentes tipos de processos e como eles desempenham seu papel. O conceito de um processo é originário do campo de sistemas

Leia mais

1.2 Tipos de Sistemas Operacionais

1.2 Tipos de Sistemas Operacionais 1.2 Tipos de Operacionais Tipos de Operacionais Monoprogramáveis/ Monotarefa Multiprogramáveis/ Multitarefa Com Múltiplos Processadores 1.2.1 Monoprogramáveis/Monotarefa Os primeiros sistemas operacionais

Leia mais

Máquinas virtuais. Máquina virtual de um processo. Máquinas virtuais (3) Máquina virtual de sistema. Máquinas virtuais (1) VMware para Windows e Linux

Máquinas virtuais. Máquina virtual de um processo. Máquinas virtuais (3) Máquina virtual de sistema. Máquinas virtuais (1) VMware para Windows e Linux System API Máquinas virtuais System ISA (Instruction Set Architecture) Aplicações Chamadas ao sistema Sistema de Operação Hardware User ISA (Instruction Set Architecture) Uma máquina virtual executa software

Leia mais

Capítulo 8 Arquitetura de Computadores Paralelos

Capítulo 8 Arquitetura de Computadores Paralelos Capítulo 8 Arquitetura de Computadores Paralelos Necessidade de máquinas com alta capacidade de computação Aumento do clock => alta dissipação de calor Velocidade limitada dos circuitos => velocidade da

Leia mais

P5 P3. interrupçãocorrespondente. Sistemas Operacionais 2008/1 Profa. Patricia D. CostaLPRM/DI/UFES 3 Sistemas Operacionais 2008/1

P5 P3. interrupçãocorrespondente. Sistemas Operacionais 2008/1 Profa. Patricia D. CostaLPRM/DI/UFES 3 Sistemas Operacionais 2008/1 Conceitos Processos Básicos (Aula 4) Profa. É Provoca Constitui Mecanismo Patricia informa evento controle, a multiprogramação. Ex: rotina um a base de Interrupção de um (1) sistema de D. CostaLPRM/DI/UFES

Leia mais

Capítulo 2 Processos e Threads. 2.1 Processos 2.2 Threads 2.3 Comunicação interprocesso 2.4 Problemas clássicos de IPC 2.

Capítulo 2 Processos e Threads. 2.1 Processos 2.2 Threads 2.3 Comunicação interprocesso 2.4 Problemas clássicos de IPC 2. Capítulo 2 Processos e Threads 2.1 Processos 2.2 Threads 2.3 Comunicação interprocesso 2.4 Problemas clássicos de IPC 2.5 Escalonamento 1 Processos O Modelo de Processo Multiprogramação de quatro programas

Leia mais

SO Sistemas Operacionais

SO Sistemas Operacionais GOVERNO DO ESTADO DO RIO DE JANEIRO FUNDAÇÃO DE APOIO A ESCOLA TÉCNICA ESCOLA TÉCNICA ESTADUAL REPÚBLICA SO Sistemas Operacionais Curso de Informática ETE REPÚBLICA - Rua Clarimundo de Melo, 847, Quintino

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Processos I: Threads, virtualização e comunicação via protocolos Prof. MSc. Hugo Souza Nesta primeira parte sobre os Processos Distribuídos iremos abordar: Processos e a comunicação

Leia mais

6 - Gerência de Dispositivos

6 - Gerência de Dispositivos 1 6 - Gerência de Dispositivos 6.1 Introdução A gerência de dispositivos de entrada/saída é uma das principais e mais complexas funções do sistema operacional. Sua implementação é estruturada através de

Leia mais

Sistemas Operacionais Cap 3 Estruturas de Sistemas Operacionais. Podemos analisar um sistema operacional sob diversos aspectos:

Sistemas Operacionais Cap 3 Estruturas de Sistemas Operacionais. Podemos analisar um sistema operacional sob diversos aspectos: Estruturas de Sistemas Operacionais Podemos analisar um sistema operacional sob diversos aspectos: Os serviços que o sistema operacional oferece. A interface que o sistema operacional torna disponível

Leia mais

Arquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas

Arquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas Arquitetura de Sistemas Operacionais Capítulo 4 Estrutura do Sistema Operacional Cap. 4 Estrutura do Sistema 1 Sistemas Operacionais Pitágoras Fadom Divinópolis Material Utilizado na disciplina Sistemas

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas de Entrada/Saída Princípios de Hardware Sistema de Entrada/Saída Visão Geral Princípios de Hardware Dispositivos de E/S Estrutura Típica do Barramento de um PC Interrupções

Leia mais

Arquitetura de Sistemas Operacionais

Arquitetura de Sistemas Operacionais Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Processo Profº Antonio Carlos dos S. Souza Estrutura do Processo Contexto de Software Contexto de Hardware Programa Espaço

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 4 Tipos de SO Prof.: Edilberto M. Silva http://www.edilms.eti.br SO - Prof. Edilberto Silva Os Sistemas Operacionais podem ser assim classificados: SO - Prof. Edilberto Silva

Leia mais

Figura 01 Kernel de um Sistema Operacional

Figura 01 Kernel de um Sistema Operacional 01 INTRODUÇÃO 1.5 ESTRUTURA DOS SISTEMAS OPERACIONAIS O Sistema Operacional é formado por um Conjunto de rotinas (denominado de núcleo do sistema ou kernel) que oferece serviços aos usuários e suas aplicações

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais SINCRONIZAÇÃO E COMUNICAÇÃO ENTRE PROCESSOS MACHADO/MAIA: CAPÍTULO 07, PÁGINA 101 Prof. Pedro Luís Antonelli Anhanguera Educacional sistemas multiprogramáveis Os sistemas multiprogramáveis

Leia mais

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional Sistemas Operacionais Prof. Pedro Luís Antonelli Anhanguera Educacional INTRODUÇÃO Sistema Operacional (S.O.) Aplicativos Formado por um conjunto de rotinas que oferecem serviços aos usuários, às aplicações

Leia mais

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 03: Estruturas dos SOs Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com OBJETIVOS Descrever os serviços que um sistema operacional oferece aos usuários e outros sistemas

Leia mais

Slide. ! Multiprocessamento! Modelo de processo. Dep. Ciência da Computação. Slide. ! Alternância de processos. ! Relação Programa x Processo

Slide. ! Multiprocessamento! Modelo de processo. Dep. Ciência da Computação. Slide. ! Alternância de processos. ! Relação Programa x Processo Parte II - Sistemas Operacionais Cap. 2 - Processos (1) Prof. Marcelo Moreno moreno@ice.ufjf.br Processos - Motivação! Necessidade de gerenciamento dos programas instanciados para execução! Multiprogramação

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas de Entrada/Saída Princípios de Software Sistema de Entrada/Saída Princípios de Software Tratadores (Manipuladores) de Interrupções Acionadores de Dispositivos (Device Drivers)

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 4 SUPORTE AO SISTEMA OPERACIONAL Prof. Luiz Gustavo A. Martins Sistema Operacional (S.O.) Programa responsável por: Gerenciar os recursos do computador. Controlar a execução

Leia mais

Sistemas Operacionais Processos e Threads

Sistemas Operacionais Processos e Threads Sistemas Operacionais Processos e Threads Prof. Marcos Monteiro, MBA http://www.marcosmonteiro.com.br contato@marcosmonteiro.com.br 1 Estrutura de um Sistema Operacional 2 GERÊNCIA DE PROCESSOS Um processo

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Gerência do processador 2 a edição Capítulo 4 Revisão: Fev/2003 Sumário Implementação do conceito de processos e threads Escalonamento Escalonadores não -preemptivos Escalonamento

Leia mais

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional O conteúdo deste documento tem por objetivo apresentar uma visão geral

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais O que se espera de um sistema de computação? Execução de programas de usuários Permitir a solução de problemas Sistema Operacional (SO) é um programa colocado entre o hardware do

Leia mais

Introdução aos Sistemas

Introdução aos Sistemas Introdução Introdução aos Sistemas Operacionais 1 2 3... n Ambientes Operacionais Prof. Simão Sirineo Toscani stoscani@inf.pucrs.br www.inf.pucrs.br/~stoscani Compilador Editor de texto Browser Programas

Leia mais

Sistemas Operacionais. Escalonamento de Processo. Prof. Dr. Márcio Andrey Teixeira

Sistemas Operacionais. Escalonamento de Processo. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais Escalonamento de Processo Prof. Dr. Márcio Andrey Teixeira Quando um computador é multiprogramado, ele muitas vezes tem variados processos que competem pela CPU ao mesmo tempo; Essa

Leia mais

Arquitetura e Organização de Computadores I

Arquitetura e Organização de Computadores I Arquitetura e Organização de Computadores I Interrupções e Estrutura de Interconexão Prof. Material adaptado e traduzido de: STALLINGS, William. Arquitetura e Organização de Computadores. 5ª edição Interrupções

Leia mais

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Processos e Threads Gustavo Reis gustavo.reis@ifsudestemg.edu.br - O que são Processos? Uma abstração de um programa em execução. Mantêm a capacidade de operações (pseudo)concorrentes,

Leia mais

VI - Introdução aos Sistemas Operacionais

VI - Introdução aos Sistemas Operacionais VI - Introdução aos Sistemas Operacionais Consiste de um ou um conjunto de programas que compõem o software básico do computador e cuja finalidade é a de executar os programas aplicativos e de servir de

Leia mais

1º Estudo Dirigido. Capítulo 1 Introdução aos Sistemas Operacionais

1º Estudo Dirigido. Capítulo 1 Introdução aos Sistemas Operacionais 1º Estudo Dirigido Capítulo 1 Introdução aos Sistemas Operacionais 1. Defina um sistema operacional de uma forma conceitual correta, através de suas palavras. R: Sistemas Operacionais são programas de

Leia mais

O que veremos nesta aula? Principais Aspectos de Sistemas Operacionais. Mas afinal, para que serve um sistema operacional? Gerenciando o hardware (--

O que veremos nesta aula? Principais Aspectos de Sistemas Operacionais. Mas afinal, para que serve um sistema operacional? Gerenciando o hardware (-- O que veremos nesta aula? Principais Aspectos de Sistemas Operacionais Arquitetura de Computadores e Software Básico Flávia Maristela (flavia@flaviamaristela.com) Tudo o que já vimos antes... Visão interna

Leia mais

Projeto de Sistemas de Tempo Real

Projeto de Sistemas de Tempo Real Projeto de Sistemas de Tempo Real Centro de Informática - Universidade Federal de Pernambuco Engenharia da Computação Kiev Gama kiev@cin.ufpe.br Slides elaborados pelo professor Marcio Cornélio O autor

Leia mais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais Notas da Aula 15 - Fundamentos de Sistemas Operacionais 1. Software de Entrada e Saída: Visão Geral Uma das tarefas do Sistema Operacional é simplificar o acesso aos dispositivos de hardware pelos processos

Leia mais

Sistemas Operacionais I Parte III Estrutura dos SOs. Prof. Gregorio Perez gregorio@uninove.br 2007. Roteiro. Componentes do Sistema

Sistemas Operacionais I Parte III Estrutura dos SOs. Prof. Gregorio Perez gregorio@uninove.br 2007. Roteiro. Componentes do Sistema Sistemas Operacionais I Parte III Estrutura dos SOs Prof. Gregorio Perez gregorio@uninove.br 2007 Roteiro Serviços Estrutura dos Sistemas Operacionais Funções do Sistema Operacional Chamadas do Sistema

Leia mais

2. Introdução aos Sistemas Operacionais

2. Introdução aos Sistemas Operacionais 2. Introdução aos Sistemas Operacionais O que é um Sistema Operacional? 1 Compilador 2 Editor de texto 3 Browser Aplicativos... Sistema Operacional (infraestrutura) Hardware n Quake No passado, a eficiência

Leia mais

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 06: Threads Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Objetivos Introduzir o conceito de thread Discutir as APIs das bibliotecas de threads Pthreads, Win32

Leia mais

Introdução. O que vimos. Infraestrutura de Software. (cont.) História dos Sistemas Operacionais. O que vimos 12/03/2012. Primeira geração: 1945-1955

Introdução. O que vimos. Infraestrutura de Software. (cont.) História dos Sistemas Operacionais. O que vimos 12/03/2012. Primeira geração: 1945-1955 O que vimos Infraestrutura de Software Introdução (cont.) Complexidade do computador moderno, do ponto de vista do hardware Necessidade de abstrações software Sistema computacional em camadas SO como uma

Leia mais

ARQUITETURA DE COMPUTADORES E SISTEMAS OPERACIONAIS P/ CONCURSOS PÚBLICOS FOCO: ESAF/CESGRANRIO/FCC. Prof. Almeida Jr

ARQUITETURA DE COMPUTADORES E SISTEMAS OPERACIONAIS P/ CONCURSOS PÚBLICOS FOCO: ESAF/CESGRANRIO/FCC. Prof. Almeida Jr ARQUITETURA DE COMPUTADORES E SISTEMAS OPERACIONAIS P/ CONCURSOS PÚBLICOS FOCO: ESAF/CESGRANRIO/FCC Prof. Almeida Jr Processos Conceitos Básicos Nomes Tipos Batch: jobs CPU-bound T.Sharing: Tarefas/Processos

Leia mais

Fundamentos de Sistemas Operacionais. Processos. Prof. Edwar Saliba Júnior Março de 2007. Unidade 02-002 Processos

Fundamentos de Sistemas Operacionais. Processos. Prof. Edwar Saliba Júnior Março de 2007. Unidade 02-002 Processos Processos Prof. Edwar Saliba Júnior Março de 2007 1 Processos Programa em execução: processos do próprio sistema (SYSTEM no gerenciador de tarefas); processos do usuário; Sistemas multiprogramáveis: muitos

Leia mais

(Aula 15) Threads e Threads em Java

(Aula 15) Threads e Threads em Java (Aula 15) Threads e Threads em Java Um fluxo computacional. A programa maioria de execução, dos seqüencial programas o qual simples consiste realiza tem uma de essa um certa único tarefa Grande característica:

Leia mais

Processos. Adão de Melo Neto

Processos. Adão de Melo Neto Processos Adão de Melo Neto 1 EXECUTE O SEGUINTE Baixa a aula dos dias 20 MAR 15 e 08 MAI 15 e salve no computador. Feche o browser Inicialize o vmware player e inicialize a máquina virtual ubuntu Inicialize

Leia mais

Sistema Operacional Correção - Exercício de Revisão

Sistema Operacional Correção - Exercício de Revisão Prof. Kleber Rovai 1º TSI 22/03/2012 Sistema Operacional Correção - Exercício de Revisão 1. Como seria utilizar um computador sem um sistema operacional? Quais são suas duas principais funções? Não funcionaria.

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sumário 2 a edição Revisão: Fev/2003 Sistemas Operacionais Gerência do processador Capítulo 4 Implementação do conceito de processos e threads Escalonamento Escalonadores não -preemptivos Escalonamento

Leia mais

Sistemas Operacionais Carlos Eduardo Portela Serra de Castro

Sistemas Operacionais Carlos Eduardo Portela Serra de Castro Introdução Sistemas Operacionais 1 Sistema Operacional: Um conjunto de programas, executado pelo computador como os outros programas. Função: Controlar o funcionamento do computador, disponibilizando seus

Leia mais

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 2-1. PRINCÍPIOS DE SOFTWARE DE ENTRADA E SAÍDA (E/S) As metas gerais do software de entrada e saída é organizar o software como uma série de camadas, com as mais baixas preocupadas em esconder as

Leia mais

Visão Geral de Sistemas Operacionais

Visão Geral de Sistemas Operacionais Visão Geral de Sistemas Operacionais Sumário Um sistema operacional é um intermediário entre usuários e o hardware do computador. Desta forma, o usuário pode executar programas de forma conveniente e eficiente.

Leia mais

Introdução. Nível do Sistema Operacional. Introdução. Um Sistema Operacional... Introdução a Sistemas Operacionais

Introdução. Nível do Sistema Operacional. Introdução. Um Sistema Operacional... Introdução a Sistemas Operacionais Introdução Nível do Sistema Operacional (Aula 14) Introdução a Sistemas Operacionais Hardware Provê os recursos básicos de computação (CPU, memória, E/S,etc.) Programas (aplicações) Definem as maneiras

Leia mais

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza Sistemas Distribuídos Processos I Prof. MSc. Hugo Souza Até agora vimos a organização como um todo dos SDS, com o mapeamento estrutural e suas devidas características descritas em elementos, regras, conceitos,

Leia mais

William Stallings Arquitetura e Organização de Computadores 8 a Edição

William Stallings Arquitetura e Organização de Computadores 8 a Edição William Stallings Arquitetura e Organização de Computadores 8 a Edição Capítulo 7 Entrada/saída Os textos nestas caixas foram adicionados pelo Prof. Joubert slide 1 Problemas de entrada/saída Grande variedade

Leia mais

Sistemas Operacionais

Sistemas Operacionais 7 Sistemas Operacionais 7.1 Fundamentos da ciência da computação Cengage Learning Objetivos 7.2 Compreender o papel do sistema operacional. Compreender o processo de inicialização para carregar o sistema

Leia mais

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Introdução Um sistema operacional é um programa que atua como intermediário entre o usuário e o hardware de um computador. O propósito

Leia mais

SO - Conceitos Básicos. Introdução ao Computador 2010/01 Renan Manola

SO - Conceitos Básicos. Introdução ao Computador 2010/01 Renan Manola SO - Conceitos Básicos Introdução ao Computador 2010/01 Renan Manola Definição de SO É uma camada de software que opera entre o hardware e os programas aplicativos voltados ao usuário final. É uma estrutura

Leia mais

2 Modelos de Implementação

2 Modelos de Implementação 2 Modelos de Implementação Os modelos de concorrência definem como uma aplicação atende às requisições concorrentes. Os modelos de sandboxes definem como o ambiente das aplicações são criados. Os modelos

Leia mais

Sistemas Operacionais

Sistemas Operacionais Unix: Processos e o Kernel O Kernel É um programa especial, uma parte privilegiada do sistema operacional, que roda diretamente sobre o hardware. É ele quem implementa o modelo de processos do sistema.

Leia mais

Sistemas Operacionais Distribuídos e Multiprocessados

Sistemas Operacionais Distribuídos e Multiprocessados Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes Sumário Teoria: Sistemas Multiprocessados Estudo de caso:k42 Teoria:

Leia mais

Conceitos Básicos sobre Sistemas Operacionais

Conceitos Básicos sobre Sistemas Operacionais Conceitos Básicos sobre Sistemas Operacionais Ivanovitch Medeiros Dantas da Silva Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação DCA0800 - Algoritmos e

Leia mais

Nível 3 Sistema Operacional

Nível 3 Sistema Operacional Nível 3 Sistema Operacional Universidade Tuiuti do Paraná UTP Faculdade de Ciências Exatas - FACET Tecnologia de Análise e Desenvolvimento de Sistemas Organização de Computadores Prof. André Luiz 1 Nível

Leia mais

Introdução aos Sistemas Operativos

Introdução aos Sistemas Operativos Introdução aos Sistemas Operativos Computadores e Redes de Comunicação Mestrado em Gestão de Informação, FEUP 06/07 Sérgio Sobral Nunes mail: sergio.nunes@fe.up.pt web: www.fe.up.pt/~ssn Sumário Definição

Leia mais

Threads em Java. Sistemas Operacionais - Laboratório Professor Machado

Threads em Java. Sistemas Operacionais - Laboratório Professor Machado Threads em Java Sistemas Operacionais - Laboratório Professor Machado 1 Conceitos de Programação Concorrente Uma unidade concorrente é um componente de um programa que não exige a execução seqüencial,

Leia mais

Sistemas distribuídos:comunicação

Sistemas distribuídos:comunicação M. G. Santos marcela@estacio.edu.br Faculdade Câmara Cascudo - Estácio de Sá 16 de abril de 2010 Formas de comunicação Produtor-consumidor: comunicação uni-direccional, com o produtor entregando ao consumidor.

Leia mais

Informática I. Aula 19. http://www.ic.uff.br/~bianca/informatica1/ Aula 19-20/11/06 1

Informática I. Aula 19. http://www.ic.uff.br/~bianca/informatica1/ Aula 19-20/11/06 1 Informática I Aula 19 http://www.ic.uff.br/~bianca/informatica1/ Aula 19-20/11/06 1 Ementa Histórico dos Computadores Noções de Hardware e Software Microprocessadores Sistemas Numéricos e Representação

Leia mais

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread. 5 THREADS Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread. 5.1 VISÃO GERAL Uma definição mais abrangente para threads é considerá-lo

Leia mais

Universidade Federal de São Carlos Departamento de Computação. Sistemas Operacionais. Gerenciamento de Threads no Windows

Universidade Federal de São Carlos Departamento de Computação. Sistemas Operacionais. Gerenciamento de Threads no Windows Universidade Federal de São Carlos Departamento de Computação Sistemas Operacionais Gerenciamento de Threads no Windows Gerenciamento de Processo Um sistema operacional envolve atividades assíncronas e

Leia mais

Capítulo 2. Processos e Threads. Processos e threads

Capítulo 2. Processos e Threads. Processos e threads Capítulo 2 Processos e Threads 1 Processos e threads 1. Processos 2. Threads 3. Comunicação inter processos (IPC) 4. Problemas clássicos de IPC 5. Escalonamento (Scheduling) 2 1 Processos: O modelo de

Leia mais

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia O Sistema Operacional que você usa é multitasking? Por multitasking, entende-se a capacidade do SO de ter mais de um processos em execução ao mesmo tempo. É claro que, num dado instante, o número de processos

Leia mais

Escalonamento de Processos em Multiprocessadores

Escalonamento de Processos em Multiprocessadores Sistemas Operacionais Escalonamento de Processos em Multiprocessadores Capítulo 10 IC - UFF 1 Processamento Paralelo e Distribuído Multiprocessadores X Multicomputadores Memória IC - UFF 2 Processamento

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Prof. Jó Ueyama Apresentação baseada nos slides da Profa. Dra. Kalinka Castelo Branco, do Prof. Dr. Antônio Carlos Sementille, da Profa. Dra. Luciana A. F. Martimiano e nas transparências

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Software em Sistemas Distribuídos Aplicativo ou Sistema Operacional Sincronismo Interação Controles Um sistema operacional moderno provê dois serviços fundamentais para o usuário

Leia mais

Infra-Estrutura de Software. Introdução. (cont.)

Infra-Estrutura de Software. Introdução. (cont.) Infra-Estrutura de Software Introdução (cont.) O que vimos Complexidade do computador moderno, do ponto de vista do hardware Necessidade de abstrações software Sistema computacional em camadas SO como

Leia mais

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos Capítulo 8 Sistemas com Múltiplos Processadores 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos 1 Sistemas Multiprocessadores Necessidade contínua de computadores mais rápidos modelo

Leia mais

UFRJ IM - DCC. Sistemas Operacionais I. Unidade I Introdução. 11/02/2014 Prof. Valeria M. Bastos

UFRJ IM - DCC. Sistemas Operacionais I. Unidade I Introdução. 11/02/2014 Prof. Valeria M. Bastos UFRJ IM - DCC Sistemas Operacionais I Unidade I Introdução 11/02/2014 Prof. Valeria M. Bastos 1 ORGANIZAÇÃO DA UNIDADE Introdução Conceituação de SO Funções Básicas Breve Histórico Tipos de SO Fundamentos

Leia mais