Gestão de Processos em Sistemas Operativos
50 Questions
1 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Qual é a função principal da gestão de processos em um sistema operativo?

  • Executar atualizações de software automaticamente.
  • Gerenciar o armazenamento de arquivos.
  • Partilhar a máquina física entre programas independentes ou interdependentes. (correct)
  • Controlar acessos de usuários ao sistema.

Qual é o estado em que um processo espera pela atribuição do processador?

  • Pronto. (correct)
  • Terminado.
  • Execução.
  • Inicialização.

Como se cria um processo em Java?

  • Usando a classe ProcessBuilder e chamando o método start(). (correct)
  • Utilizando comandos do sistema operativo diretamente.
  • Instanciando a classe Runtime diretamente.
  • Usando a classe ProcessExecutor.

O que representa o estado 'Terminado' de um processo?

<p>A execução do processo foi concluída. (C)</p> Signup and view all the answers

Qual das seguintes aplicações pode ser considerada um processo?

<p>Um editor de texto. (C)</p> Signup and view all the answers

Qual é a função do método start() na classe ProcessBuilder?

<p>Iniciar a execução do processo especificado. (A)</p> Signup and view all the answers

No diagrama de estados de um processo, o que acontece durante a 'Inicialização'?

<p>O processo aguarda a atribuição de recursos. (B)</p> Signup and view all the answers

O que significa um processo estar em estado de 'Espera'?

<p>O processo está aguardando um evento ou I/O. (A)</p> Signup and view all the answers

Qual é a função do método start() no processo de execução em Java?

<p>Executar um processo (C)</p> Signup and view all the answers

O que deve ser verificado antes de chamar o método waitFor()?

<p>Se o objeto Process é nulo (D)</p> Signup and view all the answers

Qual é o primeiro passo para criar um arquivo JAR executável em Eclipse?

<p>Selecionar File-&gt; Export-&gt; Runnable JAR file (C)</p> Signup and view all the answers

Qual é a finalidade do método lancarProcessoWin32 na classe lancarEsperarProcessoWin32?

<p>Iniciar um processo Win32 (C)</p> Signup and view all the answers

Qual é o tipo do objeto retornado pelo método start()?

<p>Process (A)</p> Signup and view all the answers

O que acontece se ocorrer uma IOException ao iniciar um processo?

<p>O objeto Process será nulo (C)</p> Signup and view all the answers

Qual é a extensão correta para um arquivo JAR executável em Java?

<p>.jar (C)</p> Signup and view all the answers

Após definir a Launch configuration, qual é o próximo passo na criação de um arquivo JAR executável?

<p>Clicar em NEXT (A)</p> Signup and view all the answers

Qual é o propósito do código apresentado na classe 'lancarEEsperarProcessoJAVA'?

<p>Executar um arquivo JAR e esperar sua conclusão. (D)</p> Signup and view all the answers

Quais tecnologias podem ser usadas para comunicação entre processos independentes na mesma máquina?

<p>Memória partilhada, Sockets TCP e Sockets UDP. (A)</p> Signup and view all the answers

Qual é a ordem de grandeza do tempo para comunicação via TCP com 1 core de CPU?

<p>30 microsegundos. (A)</p> Signup and view all the answers

Qual técnica de comunicação em JAVA é considerada eficiente para processos independentes?

<p>Uso de memória mapeada. (A)</p> Signup and view all the answers

Quais são os tempos aproximados para comunicação via UDP com mais de 1 core de CPU?

<p>8 microsegundos. (C)</p> Signup and view all the answers

Em situações de comunicação entre máquinas diferentes, qual tecnologia não é utilizada?

<p>Memória partilhada. (A)</p> Signup and view all the answers

Qual é a alternativa correta sobre a execução de processos em JAVA?

<p>Um processo pode ser iniciado usando o Runtime.exec(). (D)</p> Signup and view all the answers

No código apresentado, o que acontece se a variável 'p' for nula?

<p>Um erro será lançado sem tratamento apropriado. (D)</p> Signup and view all the answers

Qual é a finalidade do método abrirCanal()?

<p>Cria um ficheiro para comunicação. (C)</p> Signup and view all the answers

O que o método receberMensagem() retorna?

<p>Uma mensagem convertida em String. (A)</p> Signup and view all the answers

O que acontece se o ficheiro comunicacao.dat não for encontrado ao abrir o canal?

<p>O método retorna false. (B)</p> Signup and view all the answers

Qual é a função do método fecharCanal()?

<p>Fecha o canal de comunicação. (A)</p> Signup and view all the answers

O que o método enviarMensagem(String msg) faz?

<p>Envia uma String como mensagem através do canal. (D)</p> Signup and view all the answers

Qual é o tipo de retorno do método abrirCanal()?

<p>boolean (C)</p> Signup and view all the answers

Qual é o papel do buffer no contexto da comunicação?

<p>Armazenar temporariamente mensagens recebidas. (C)</p> Signup and view all the answers

Que tipo de exceções os métodos do canal podem lançar, baseando-se na lógica apresentada?

<p>IOException (D)</p> Signup and view all the answers

O que indica o caractere ' ull' no método receberMensagem()?

<p>Fim da mensagem. (C)</p> Signup and view all the answers

O método canalComunicacao() é responsável por:

<p>Inicializar atributos do canal de comunicação. (C)</p> Signup and view all the answers

Qual a função principal do semáforo em um sistema de exclusão mútua?

<p>Garantir que apenas uma tarefa acesse um recurso não partilhável de cada vez (B)</p> Signup and view all the answers

Por que a execução das tarefas Tarefa 1 e Tarefa 2 deve ser feita em exclusão mútua?

<p>Porque isso garante a integridade dos dados ao acessar um recurso não partilhável. (B)</p> Signup and view all the answers

Qual é o resultado de chamar a função getAndSet(semaforo) em relação ao semáforo?

<p>A função altera o semáforo para false e retorna o valor anterior. (D)</p> Signup and view all the answers

Qual foi a contribuição de Dijkstra para a comunicação entre processos?

<p>Introduziu o conceito de semáforo como meio de comunicação. (D)</p> Signup and view all the answers

Qual é a operação correspondente ao incremento do valor de um semáforo em Java?

<p>s.release() (D)</p> Signup and view all the answers

O que caracteriza um recurso não partilhável?

<p>Deve ser acessado apenas por uma tarefa de cada vez. (A)</p> Signup and view all the answers

Por que o canal bluetooth é considerado um recurso não partilhável?

<p>Porque sua utilização deve ser controlada para evitar interferências. (A)</p> Signup and view all the answers

Qual é um exemplo de recurso não partilhável, conforme mencionado?

<p>Arquivo de texto para escrita (C)</p> Signup and view all the answers

Qual é o resultado da execução de dois processos que adquirem semáforos em ordem inversa?

<p>Ocorrerá uma situação de deadlock. (D)</p> Signup and view all the answers

Qual é a função do método 'acquire()' em um semáforo?

<p>Suspender o processo até que o semáforo esteja disponível. (A)</p> Signup and view all the answers

Qual é a consequência de um semáforo com valor unitário?

<p>Apenas um processo pode adquiri-lo de cada vez. (A)</p> Signup and view all the answers

O que acontece quando um semáforo é adquirido e não é liberado?

<p>Outros processos que tentarem adquirir o semáforo ficarão suspensos. (B)</p> Signup and view all the answers

Como a sequência incorreta de chamadas 'acquire()' pode levar a deadlock?

<p>Os processos esperam indefinidamente uns pelos outros. (A)</p> Signup and view all the answers

O que deve ser feito após a utilização de um semáforo para evitar deadlocks?

<p>Chamar o método 'release()'. (C)</p> Signup and view all the answers

Qual dos seguintes enunciados é verdadeiro sobre a partilha de semáforos?

<p>Se o valor do semáforo for n, n processos podem partilhar. (D)</p> Signup and view all the answers

Qual é a estrutura utilizada para implementar a classe 'Tarefa' que exemplifica um sistema com semáforos?

<p>A classe Thread. (C)</p> Signup and view all the answers

Flashcards

Processo

Um programa que pode ser executado pelo sistema operativo e realiza uma atividade específica no computador.

Gestão de Processos

A forma como o sistema operativo partilha a máquina física entre vários programas que estão a ser executados.

Inicialização

O estado em que um processo foi criado, mas ainda não recebeu recursos para começar a executar.

Pronto

O estado em que um processo está pronto para ser executado, mas está a espera que o processador fique disponível.

Signup and view all the flashcards

Execução

O estado em que um processo está a executar as suas instruções e tem acesso aos recursos da máquina.

Signup and view all the flashcards

Espera

O estado em que um processo está a esperar por um evento específico, como a conclusão de uma operação de I/O, para poder continuar a executar.

Signup and view all the flashcards

Terminado

O estado em que um processo concluiu a sua execução, mas está a esperar pelo término por parte do processo pai.

Signup and view all the flashcards

Criar um Processo em Java

Um processo é criado em Java utilizando um objeto da classe ProcessBuilder, que recebe o nome do processo como parâmetro.

Signup and view all the flashcards

Início de um processo em Java

Em Java, um processo é iniciado através da utilização do método start() da classe ProcessBuilder. O ProcessBuilder recebe como argumento o comando ou programa a ser executado.

Signup and view all the flashcards

Classe ProcessBuilder

A classe ProcessBuilder em Java é responsável por criar e configurar um processo a ser executado.

Signup and view all the flashcards

Método waitFor()

O método waitFor() em Java permite aguardar o término da execução do processo.

Signup and view all the flashcards

Comando java -jar

O comando Java java -jar executa arquivos JAR que contêm aplicações Java.

Signup and view all the flashcards

Arquivo JAR

Um arquivo JAR (Java Archive) é um formato de arquivo que contém múltiplos arquivos Java compilados, incluindo classes, recursos e metadados. Ele facilita a distribuição e execução de aplicativos Java.

Signup and view all the flashcards

Método main()

O método main() é o ponto de entrada principal para a execução de um programa Java. É executado quando a aplicação é iniciada.

Signup and view all the flashcards

Exceção IOException

Em Java, o IOException é uma exceção lançada quando ocorrem erros relacionados a operações de entrada/saída, como a leitura ou escrita de arquivos.

Signup and view all the flashcards

Criação de um arquivo JAR

Um programa Java pode ser convertido em um arquivo executável JAR usando as funcionalidades de 'export' do ambiente de desenvolvimento (como o Eclipse).

Signup and view all the flashcards

Lançamento e Espera de Processos em Java

É um método para executar processos em Java, usando a classe Runtime e o método exec(). Ele permite executar arquivos JAR, scripts, etc., e gerenciar o processo resultante usando a classe Process.

Signup and view all the flashcards

Classe Process

O processo p, retornado pelo método exec(), permite controlar o processo iniciado, como por exemplo, esperar por sua finalização.

Signup and view all the flashcards

Comunicação Inter-Processos (IPC)

A comunicação Inter-Processos (IPC) refere-se a como diferentes processos em um sistema operacional podem se comunicar entre si.

Signup and view all the flashcards

Memória Compartilhada

A memória compartilhada é um mecanismo IPC onde processos compartilham uma área de memória para comunicação.

Signup and view all the flashcards

Sockets TCP

Sockets TCP são um mecanismo IPC baseado em conexões, onde processos comunicam-se através de fluxos de dados.

Signup and view all the flashcards

Sockets UDP

Sockets UDP são um mecanismo IPC sem conexões, onde processos enviam e recebem datagramas.

Signup and view all the flashcards

Memória Mapeada

Memória mapeada é um tipo de memória compartilhada que permite que processos em Java acessem diretamente a mesma área de memória.

Signup and view all the flashcards

abrirCanal()

Esta função abre um canal de comunicação entre dois processos.

Signup and view all the flashcards

receberMensagem()

Esta função recebe uma mensagem enviada pelo outro processo e a converte para uma string.

Signup and view all the flashcards

enviarMensagem(String msg)

Esta função envia uma string como mensagem para o outro processo.

Signup and view all the flashcards

fecharCanal()

Esta função fecha o canal de comunicação entre dois processos.

Signup and view all the flashcards

ficheiro

Um ficheiro que armazena a comunicação entre dois processos.

Signup and view all the flashcards

canal

Um canal de comunicação que permite a leitura e escrita do ficheiro, abrindo o canal de comunicação.

Signup and view all the flashcards

buffer

Um buffer que guarda as mensagens, permitindo a escrita e leitura das mensagens.

Signup and view all the flashcards

char

No buffer, cada caractere ocupa 2 bytes de memória.

Signup and view all the flashcards

BUFFER_MAX

Uma constante que define o tamanho máximo do buffer.

Signup and view all the flashcards

RandomAccessFile

Um tipo de acesso ao ficheiro que permite a escrita e leitura em qualquer posição do ficheiro.

Signup and view all the flashcards

Recurso não partilhável

Um recurso que só pode ser utilizado por um processo de cada vez. Exemplos: canal Bluetooth, ficheiros para escrita, áreas de dados que se pretendem modificar.

Signup and view all the flashcards

Exclusão Mútua

Uma técnica que garante que apenas um processo pode aceder a um recurso não partilhável em cada momento.

Signup and view all the flashcards

Semáforo

Uma variável que controla o acesso a um recurso não partilhável, garantindo a exclusão mútua.

Signup and view all the flashcards

getAndSet

Uma instrução que verifica o estado de um semáforo e o modifica.

Signup and view all the flashcards

Semáforo

Um conceito que permite a comunicação entre processos. Foi introduzido por Dijkstra.

Signup and view all the flashcards

Release

Uma operação em semáforos que aumenta o seu valor, permitindo que mais processos acessem o recurso.

Signup and view all the flashcards

Sincronização

O processo de garantir que apenas um processo tem acesso a um recurso em cada momento.

Signup and view all the flashcards

Acesso Concorrente a Recursos

Um problema que ocorre quando múltiplos processos tentam aceder ao mesmo recurso, como um canal Bluetooth, simultaneamente, resultando em conflitos.

Signup and view all the flashcards

O que é um Semáforo?

Um semáforo é uma variável inteira que controla o acesso a um recurso compartilhado. O valor do semáforo indica o número de processos ou threads que podem acessar o recurso simultaneamente.

Signup and view all the flashcards

O que faz o método acquire()?

O método acquire() diminui o valor do semáforo em uma unidade. Se o valor for menor que zero, a thread que chamou acquire() será bloqueada até que um outro processo ou thread chame release() em semáforo.

Signup and view all the flashcards

O que faz o método release()?

O método release() aumenta o valor semáforo em uma unidade. Isso libera um recurso que estava bloqueado, permitindo que uma thread que estava bloqueada em acquire() continue sua execução.

Signup and view all the flashcards

O que é Deadlock?

Um deadlock ocorre em sistemas multitarefa quando dois ou mais processos ficam bloqueados, esperando, indefinidamente, que um evento ocorra. Isso impede que os processos continuem suas execuções.

Signup and view all the flashcards

Como Deadlock pode ocorrer?

Uma situação de deadlock pode ocorrer quando dois processos tentam acessar os mesmos recursos que não podem ser compartilhados e ficam bloqueados em um ciclo de espera.

Signup and view all the flashcards

O que é Concorrência?

Em um sistema multitarefa, um processo é considerado concorrente quando ele disputa com outros processos por recursos compartilhados. Isso pode levar à instabilidade e a erros imprevisíveis.

Signup and view all the flashcards

Como o valor inicial de um semáforo influencia a partilha de recursos?

O valor inicial de um semáforo define o número de processos que podem acessar simultaneamente o recurso que ele controla. Se o semáforo for unitário (valor inicial 1), apenas um processo pode acessar o recurso. Se o valor for 'n', então 'n' processos podem acessar o recurso.

Signup and view all the flashcards

Qual o impacto da ordem de acquire e release em semáforos?

Uma sequência incorreta de acquire e release em vários semáforos pode levar a uma situação de deadlock. Se os processos forem programados para acessar os semáforos em uma ordem que crie um ciclo de espera mútuo, o sistema pode congelar.

Signup and view all the flashcards

Study Notes

Fundamentos de Sistemas Operativos

  • O sistema operativo é o programa mais utilizado em computadores.
  • É usado em todas as áreas de utilização do computador, desde jogos a programação de sistemas.
  • Sistemas operativos conhecidos: UNIX, Linux, OSX, e Windows.
  • Um computador é uma arquitetura hardware com microprocessador, memória e portas de entrada/saída.
  • A programação em linguagem máquina é complexa e demorada para configuração e gestão de hardware.
  • O sistema operativo cria uma camada de abstração (máquina virtual) facilitando a utilização do hardware.
  • Esta abstração simplifica a manipulação de dispositivos hardware para os utilizadores.

Tipos de Sistemas Operativos

  • Mono-utilizador: Sistemas usados em computadores pessoais nos anos 80 como CPM e MS-DOS. Eram simples e tornaram os computadores acessíveis para um público mais amplo.
  • Multi-utilizador: Sistemas como o Unix foram os primeiros sistemas operativos multi-utilizador com grande divulgação. O modelo open-source do Linux permitiu o desenvolvimento de muitas aplicações inovadoras. Windows 3.1 utilizou um modelo gráfico semelhante a do MS-DOS, mas evoluiu para modelos multi-processo e multi-utilizador, como Windows 95,98, XP, Vista, 7, 8 e 10.

Estudo de um Sistema Operativo

  • O Sistema Operativo é composto por camadas funcionais que gerenciam os recursos de hardware.
  • As camadas não são completamente independentes, mas estruturam a maneira modular de funcionar o sistema.

Gestão de Processos e Tarefas

  • A gestão de processos permite a partilha do hardware por programas.
  • Um processo executa uma tarefa específica no computador
  • Um processo tem vários estados, incluindo inicialização, pronto, execução e espera.
  • O diagrama de estados de um processo é ilustrado na figura 3.2

Comunicação entre processos em Java

  • A comunicação entre processos (IPC) em Java pode ser feita usando memória partilhada ou sockets.
  • Memória partilhada é mais rápida que sockets quando ambos os processos estão no mesmo sistema.
  • Existem várias tecnologias para comunicação entre processos (exclusão mútua).

Comunicação entre processos com Memória Partilhada

  • A memória mapeada em Java permite que um processo mapeie o conteúdo de um ficheiro para uma área da memória virtual, facilitando o acesso e a manipulação dos dados.
  • As instâncias do tipo MappedByteBuffer são acessíveis a diferentes processos.
  • A manipulação do MappedByteBuffer é igual à de um Buffer comum.

Processos Leves ou Tarefas

  • Processos leves são partes de um processo-pai.
  • Eles cooperam para executar tarefas em pseudo-paralelismo ou paralelismo.
  • Eles compartilham os recursos do processador-pai.
  • O contexto de memória para cada tarefa é ilustrado na figura 3.2.1

Tarefa em Java

  • As tarefas em Java derivam da classe Thread.
  • Existem formas de definir uma classe como Thread.

Sincronização entre Tarefas

  • A sincronização é importante quando múltiplas tarefas acessam os mesmos recursos.
  • Exclusão mútua é uma técnica para garantir que apenas uma tarefa acessa um recurso específico de cada vez

Monitores versus Semáforos

  • Semáforos permitem acesso simultâneo, enquanto monitores garantem exclusão mútua.
  • Utilização de monitores para aceder a recursos de forma controlada.

Sistema de Ficheiros

  • Os ficheiros são entidades geridas pelo sistema de ficheiros.
  • O acesso a ficheiros pode ser feito utilizando o modelo “Abrir-Ler/Escrever-Fechar”.
  • Os ficheiros são organizados em blocos (clusters) de dados em suportes físicos como discos rígidos.
  • O sistema de ficheiros gerencia a organização e proteção dos ficheiros.

Volumes

  • Volumes são um conjunto organizado de clusters.
  • A estrutura de uma partição (como o MASTER BOOT RECORD) organiza dados em discos.
  • Volumes agrupam clusters de informação.

Estrutura duma Diretoria

  • Diretórias contêm informação sobre os ficheiros, nomes, atributos etc.
  • Cada diretoria tem campos específicos, para armazenar os dados do ficheiro.

Estrutura duma FAT

  • A FAT é uma tabela que descreve a alocação dos clusters em um volume.
  • A FAT permite encontrar clusters livres ou ocupados.

Manipulação de Ficheiros em Java

  • As streams em Java permitem a manipulação de dados (leitura e escrita) em ficheiros e dispositivos de entrada/saída.
  • Existem classes para leitura e escrita de caracteres ou bytes com base na hierarquia.

Diagramas de Atividade e Autómatos

  • Diagramas de atividades e autómatos são usados para modelar aplicações multiprocessos.
  • Swimlanes ilustram diferentes processos e sincronização.
  • Fork/Join é utilizado para sincronizar a execução de tarefas.

Robot NXT e EV3

  • Descrição das características e funcionalidades do Lego NXT.
  • Modelos computador-robot (detalhes de comunicação e comandos para movimentos e sensores).
  • Descrição de comandos do Robot EV3 e dos seus sensores, e formas de comunicação com os sistemas de apoio.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

Description

Este quiz explora conceitos fundamentais da gestão de processos em sistemas operativos, incluindo a criação de processos em Java e diferentes estados dos processos. Teste seus conhecimentos sobre o funcionamento interno de processos e suas interações no ambiente de execução.

More Like This

Use Quizgecko on...
Browser
Browser