Sistemas Operativos e Programação Java

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 foi um dos principais impactos dos primeiros sistemas operativos?

  • Tornaram os computadores acessíveis apenas a especialistas em informática.
  • Limitaram a utilização dos computadores a funções muito específicas.
  • Desmistificaram o uso dos computadores, tornando-os acessíveis a utilizadores heterogéneos. (correct)
  • Aumentaram a complexidade do uso dos computadores.

O Unix foi o primeiro sistema operativo multi-utilizador open source.

False (B)

Qual sistema operativo foi desenvolvido como alternativa open source ao Unix?

Linux

Qual método da classe Runtime é usado para executar um processo externo em Java?

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

O sistema operativo Windows 3.1 inicialmente uma evolução gráfica do sistema __________ .

<p>MS/DOS</p> Signup and view all the answers

Qual das seguintes opções descreve adequadamente a abordagem de estudo de um sistema operativo na disciplina de FSO?

<p>Estudo modular e hierárquico através de camadas funcionais. (B)</p> Signup and view all the answers

O método waitFor() faz com que o processo Java espere que o processo filho termine antes de continuar a execução.

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

Qual é a finalidade do bloco try...catch no código Java apresentado para executar o processo filho?

<p>Tratar possíveis exceções de I/O durante a execução do processo</p> Signup and view all the answers

Associe as camadas funcionais de um sistema operativo com a sua descrição:

<p>Gestão de Processos e Tarefas = Responsável pela execução e agendamento das tarefas. Sincronização = Gerencia o acesso concorrente a recursos compartilhados. Gestão de Memória = Administra a alocação e gestão da memória do sistema. Comunicação = Permite a troca de dados entre processos. Ficheiros = Organiza e controla o acesso a informação no sistema</p> Signup and view all the answers

Em Java, a comunicação entre processos independentes usando memória partilhada é conhecida como memória ______.

<p>mapeada</p> Signup and view all the answers

Qual linguagem de programação será utilizada para desenvolver aplicações na disciplina de FSO?

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

Qual protocolo de comunicação entre processos geralmente tem a menor latência quando usado com 1 core de CPU?

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

As camadas funcionais de um sistema operativo são completamente independentes e não interagem entre si.

<p>False (B)</p> Signup and view all the answers

A comunicação via sockets UDP é sempre mais rápida que a comunicação via sockets TCP, independentemente do número de núcleos da CPU.

<p>False (B)</p> Signup and view all the answers

Para comunicação entre processos em máquinas diferentes, quais tecnologias podem ser usadas?

<p>Sockets TCP e UDP</p> Signup and view all the answers

Associe as tecnologias de comunicação com os seus respectivos tempos de latência quando usado com mais de 1 core de CPU:

<p>Memória partilhada = 0,7 microsegundos TCP = 22 microsegundos UDP = 8 microsegundos</p> Signup and view all the answers

Qual é o objetivo principal da exclusão mútua no acesso a um canal de comunicação?

<p>Garantir que apenas um processo acesse o canal por vez. (D)</p> Signup and view all the answers

Um FileLock em Java é usado para garantir exclusão mútua na escrita e leitura de canais de comunicação?

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

Como se designa um conjunto de campos definidos pelo programador para comunicação entre processos?

<p>Protocolo de comunicação</p> Signup and view all the answers

Um protocolo de comunicação é constituído por um conjunto de ___________.

<p>campos</p> Signup and view all the answers

Associe os conceitos com suas descrições:

<p>Exclusão mútua = Garantia de que apenas um processo acesse um recurso por vez Protocolo de comunicação = Conjunto de campos definidos para troca de mensagens entre processos Tarefa = Parte de um processo que executa em pseudo-paralelismo Processo-pai = Processo que cria e executa as tarefas</p> Signup and view all the answers

Qual a principal diferença entre processos leves e processos tradicionais, conforme o texto?

<p>Processos leves são controlados por um processo-pai dentro do mesmo computador. (C)</p> Signup and view all the answers

As tarefas são executadas em verdadeiro paralelismo num processador com um único core.

<p>False (B)</p> Signup and view all the answers

Qual é o termo usado para abreviar o conceito de processo leve?

<p>Tarefa</p> Signup and view all the answers

Qual operação sobre um semáforo decrementa o seu valor quando s > 0, em terminologia anglo-saxónica?

<p>wait(s) (B)</p> Signup and view all the answers

Um deadlock ocorre quando os processos ficam à espera de um recurso que é sempre libertado.

<p>False (B)</p> Signup and view all the answers

Segundo o texto, qual o valor inicial ideal para um semáforo, de forma a evitar um deadlock no acesso a um recurso em exclusão mútua?

<p>1</p> Signup and view all the answers

Em Java, a operação de decremento do valor de um semáforo é feita com o método ______.

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

Associe as seguintes operações de semáforo com suas descrições:

<p>P(s) = Decrementa o valor do semáforo (designação original de Dijkstra) wait(s) = Decrementa o valor do semáforo (terminologia anglo-saxónica) acquire() = Decrementa o valor do semáforo e coloca o processo em espera (Java) release() = Incrementa o valor do semáforo (Java)</p> Signup and view all the answers

Qual é o problema principal de dois processos acessarem simultaneamente um canal bluetooth sem controle adequado?

<p>Conflito de acesso e corrupção dos dados transmitidos. (B)</p> Signup and view all the answers

Recursos não partilháveis, como ficheiros para escrita e periféricos, podem ser acedidos por várias tarefas simultaneamente sem problemas.

<p>False (B)</p> Signup and view all the answers

Qual é a principal função da variável 'semaforo' no contexto de exclusão mútua?

<p>Controlar o acesso a um recurso não partilhável, garantindo que apenas uma tarefa o utilize por vez.</p> Signup and view all the answers

A instrução getAndSet(AtomicBoolean) devolve o valor lógico da variável e afeta a variável com o valor ____.

<p>true</p> Signup and view all the answers

Qual das seguintes opções descreve corretamente a função da instrução getAndSet(AtomicBoolean)?

<p>Retorna o valor da variável e a define para true. (B)</p> Signup and view all the answers

Combine as seguintes terminologias de semáforos com sua respectiva ação:

<p>V(s) = Incrementar o valor do semáforo signal(s) = Incrementar o valor do semáforo s.release() = Incrementar o valor do semáforo em Java</p> Signup and view all the answers

Quem introduziu o conceito de semáforos em 1965?

<p>Edsger Dijkstra (B)</p> Signup and view all the answers

Semáforos são entidades utilizadas apenas para a sincronização de tarefas e não permitem a comunicação entre processos.

<p>False (B)</p> Signup and view all the answers

Qual é a finalidade principal da interface Runnable em Java, conforme demonstrado no código controlarRobot2?

<p>Permitir que uma classe seja executada como uma <em>thread</em>. (B)</p> Signup and view all the answers

O código controlarRobot2 cr2= new controlarRobot2(); new Thread(cr2).start(); cria e inicia uma thread, executando o método run() da classe controlarRobot2.

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

Por que a sincronização é necessária entre tarefas em um sistema operacional?

<p>A sincronização é necessária porque as tarefas são executadas de forma assíncrona e compartilham recursos.</p> Signup and view all the answers

Um ponto de _______ é um local no código onde uma tarefa espera por outra em relação às atividades a serem executadas.

<p>sincronismo</p> Signup and view all the answers

Qual técnica é utilizada para proibir o acesso simultâneo a recursos compartilhados, como o canal Bluetooth?

<p>Exclusão mútua. (D)</p> Signup and view all the answers

O acesso ao canal Bluetooth não necessita de exclusão mútua, pois cada tarefa tem o seu próprio recurso.

<p>False (B)</p> Signup and view all the answers

Na figura 3.2.2.1, o que aconteceria se duas tarefas tentassem ocupar o canal Bluetooth ao mesmo tempo sem exclusão mútua?

<p>Ocorreria uma condição de corrida, onde ambas as tarefas poderiam tentar usar o canal simultaneamente, causando falhas.</p> Signup and view all the answers

Combine os conceitos com suas descrições:

<p>Runnable = Interface que permite que uma classe seja executada como uma <em>thread</em> Sincronização = Coordenação entre tarefas para evitar conflitos de acesso a recursos Exclusão Mútua = Técnica para permitir que apenas uma tarefa acesse um recurso por vez Tarefa = Unidade de execução que pode ocorrer de forma independente</p> Signup and view all the answers

Flashcards

Exclusão mútua

O acesso de apenas um processo de cada vez a um recurso físico, garantindo que a informação seja consistente.

FileLock

Objeto em Java utilizado para implementar a exclusão mútua no acesso a um canal de comunicação.

Protocolo de comunicação

Conjunto de campos definidos para a troca de informação entre processos.

Processo leve ou Tarefa

Unidade de código que executa dentro de um processo-pai, com recursos compartilhados e cooperação para funções específicas.

Signup and view all the flashcards

Pseudo-paralelismo

Execução de múltiplas tarefas em um único núcleo de processador, criando a ilusão de paralelismo.

Signup and view all the flashcards

Paralelismo

Execução de múltiplas tarefas em um processador com múltiplos núcleos, permitindo que as tarefas trabalhem verdadeiramente em paralelo.

Signup and view all the flashcards

Compartilhamento de recursos em tarefas

Tarefas que compartilham os recursos do processo-pai e seus dados.

Signup and view all the flashcards

Modelo de memória Multitarefa

Modelo em que várias tarefas são executadas dentro de um processo-pai, dividindo o espaço de memória de forma organizada para múltiplas tarefas.

Signup and view all the flashcards

Sistemas Operativos Multi-Utilizador

Sistemas operativos que permitem a utilização simultânea por múltiplos utilizadores, tornando os computadores mais acessíveis e eficientes. Facilitaram a utilização de computadores, que antes eram restritos a especialistas.

Signup and view all the flashcards

Unix

O sistema operativo multi-utilizador que iniciou a popularização do acesso a computadores para diversos fins. Foi um dos primeiros sistemas operativos a oferecer suporte para aplicações multi-utilizador.

Signup and view all the flashcards

Linux

Um sistema operativo de código aberto que se assemelha ao Unix. Foi desenvolvido como uma alternativa gratuita ao Unix, permitindo o desenvolvimento de aplicações inovadoras.

Signup and view all the flashcards

Windows

A série de sistemas operativos da Microsoft que evoluiu para um ambiente multi-utilizador e multi-processo. Começou como uma interface gráfica para o DOS e se tornou um dos sistemas operativos mais utilizados no mundo.

Signup and view all the flashcards

Camadas Funcionais

A divisão de um sistema operativo em camadas que gerenciam recursos específicos da máquina, como memória, processos e comunicação. Essa organização modular facilita o desenvolvimento e manutenção do sistema operativo.

Signup and view all the flashcards

Gestão de Processos

A gestão de processos é a função do sistema operativo que controla a execução de programas, alocando recursos e garantindo que eles funcionem de forma eficiente e segura.

Signup and view all the flashcards

Gestão de Memória

O sistema operativo gerencia a memória, alocando espaço para os programas e garantindo que eles não interfiram um com o outro. A gestão de memória garante o desempenho eficiente dos programas e previne erros.

Signup and view all the flashcards

Comunicação

A gestão de comunicação permite que diferentes programas e dispositivos interajam entre si, seja dentro do computador ou em uma rede. É essencial para a comunicação entre programas e usuários em diferentes locais.

Signup and view all the flashcards

Comunicação entre processos (IPC)

Em Java, a comunicação entre processos (IPC) é o processo de troca de dados entre dois ou mais programas em execução em um sistema. A comunicação entre processos é essencial para o desenvolvimento de aplicações complexas, permitindo que programas distintos trabalhem juntos para atingir um objetivo comum.

Signup and view all the flashcards

Memória Partilhada

A memória partilhada é um mecanismo de comunicação entre processos (IPC - Inter-Process Communication) que permite que processos diferentes acessem um espaço de memória comum. Esse recurso permite que processos compartilhem dados de forma eficiente.

Signup and view all the flashcards

Memória mapeada em Java

Em Java, a memória partilhada também é conhecida como memória mapeada. Isso significa que um arquivo ou região de memória é mapeado para um espaço de endereço virtual específico em cada processo que acessa a memória compartilhada.

Signup and view all the flashcards

Protocolo TCP

O protocolo TCP (Transfer Control Protocol) é um protocolo de rede que garante a entrega confiável de dados entre dois dispositivos. É usado na maioria das aplicações que exigem comunicação estável e confiável, como páginas web e emails.

Signup and view all the flashcards

Protocolo UDP

O protocolo UDP (User Datagram Protocol) é um protocolo de rede que permite a comunicação rápida, mas não garante a entrega confiável de dados. É frequentemente usado para aplicações que priorizam a velocidade, como streaming de áudio e vídeo.

Signup and view all the flashcards

Sockets

Sockets são interfaces de programação que permitem que programas se comuniquem através de uma rede. Os sockets podem ser usados com diferentes protocolos de rede, como TCP e UDP, para enviar e receber dados entre dispositivos.

Signup and view all the flashcards

Runtime.getRuntime().exec() em Java

Em Java, o método exec() da classe Runtime é usado para executar comandos do sistema operacional. Essa funcionalidade permite que o Java interaja com o ambiente do sistema operacional, permitindo a execução de programas externos ou scripts.

Signup and view all the flashcards

p.waitFor() em Java

O método waitFor() em Java é utilizado para fazer com que um programa espere até que um processo filho tenha terminado sua execução. Essa funcionalidade garante que o programa principal espere até que o processo filho finalize antes de prosseguir com sua própria execução.

Signup and view all the flashcards

Comunicação entre Tarefas

A comunicação entre tarefas exige sincronização porque o tempo de processamento de cada tarefa e a sua execução é imprevisível num computador. As tarefas executam-se de forma assíncrona.

Signup and view all the flashcards

Ponto de Sincronismo

Um ponto de sincronismo é um ponto no código em que uma tarefa espera por outra tarefa em relação às atividades a executar. Isso é necessário para que as tarefas cooperem e trabalhem juntas de forma organizada.

Signup and view all the flashcards

Recursos Não Partilhados

Quando duas ou mais tarefas tentam acessar os mesmos recursos não partilhados, como dispositivos de entrada/saída, canais de comunicação, ficheiros ou dados em memória, é preciso proteger esses recursos para evitar conflitos.

Signup and view all the flashcards

Canal Bluetooth como Recurso Único

O canal Bluetooth é considerado um recurso único. Se duas tarefas tentarem usar o Bluetooth ao mesmo tempo, é preciso usar a técnica de exclusão mútua para garantir que apenas uma tarefa tenha acesso ao Bluetooth por vez e evitar conflitos.

Signup and view all the flashcards

Classe controlarRobot2 como Runnable

A classe controlarRobot2 implementa a interface Runnable, o que a torna capaz de ser executada em uma thread separada. Isso significa que ela pode ser executada em paralelo com outras tarefas no sistema.

Signup and view all the flashcards

ArrayList comandos na controlarRobot2

A classe controlarRobot2 define um ArrayList chamado comandos. Este ArrayList é usado para armazenar uma lista de comandos que o robô deverá executar.

Signup and view all the flashcards

Criar e Iniciar Threads

A linha new Thread(cr2).start(); cria e inicia uma nova thread. Esta thread executa o método run() da classe controlarRobot2, que pode conter os comandos para controlar o robô.

Signup and view all the flashcards

Recursos não partilháveis

Um recurso não partilhável é qualquer recurso que só pode ser usado por uma tarefa de cada vez. Exemplos incluem periféricos, arquivos para escrita e áreas de dados que precisam ser modificadas.

Signup and view all the flashcards

Semáforo

O semáforo é uma ferramenta que permite a comunicação entre processos ao controlar o acesso a recursos compartilhados. Ele age como uma chave que só permite a entrada para um processo por vez, garantindo a exclusão mútua.

Signup and view all the flashcards

getAndSet(AtomicBoolean)

A instrução getAndSet(AtomicBoolean) é uma operação atômica que garante a exclusão mútua. Ele retorna o valor atual de uma variável booleana e a define para 'true' em uma única operação.

Signup and view all the flashcards

Espera

Uma tarefa que tenta acessar um recurso bloqueado por outra tarefa é colocada em espera até que o recurso seja liberado.

Signup and view all the flashcards

Liberação do Recurso

A liberação do recurso ocorre quando a tarefa que está usando o recurso termina sua operação e o libera para outras tarefas usarem.

Signup and view all the flashcards

Condição de corrida

A condição de corrida ocorre quando duas ou mais tarefas competem para acessar o mesmo recurso, e o resultado final depende da ordem em que as tarefas acessam o recurso.

Signup and view all the flashcards

Semaforos em Java

Os semaforos são estruturas de dados que são adicionados a sistemas operacionais para fornecer exclusão mútua de recursos

Signup and view all the flashcards

Operação P(s) (ou wait(s))

Uma operação sobre um semáforo que decrementa o seu valor quando este é maior que zero. Em Java, é chamada de s.acquire().

Signup and view all the flashcards

Deadlock

Uma situação em que dois ou mais processos estão bloqueados indefinidamente à espera de um recurso que o outro processo possui e não liberta.

Signup and view all the flashcards

Código de acesso concorrente a canal Bluetooth em Java

O código Java que permite o acesso concorrente a um recurso físico (canal Bluetooth) em exclusão mútua, usando uma variável de sincronização do tipo "semaforo".

Signup and view all the flashcards

Inicialização do semáforo com valor 1

A inicialização de um semáforo com valor 1 garante que apenas um processo pode usar o recurso protegido pelo semáforo de cada vez. Isso previne deadlocks.

Signup and view all the flashcards

Operação release() do semáforo

O método release() do semáforo aumenta o valor deste em 1, liberando o recurso para outros processos. Em Java, é chamado de s.release().

Signup and view all the flashcards

Study Notes

Fundamentos de Sistemas Operativos

  • Um sistema operativo é o programa mais utilizado em computadores, abrangendo desde tarefas lúdicas a desenvolvimento de aplicações.
  • Existem sistemas operativos conhecidos como UNIX, Linux, OSX e Microsoft Windows.
  • Um computador é uma arquitetura hardware, composta por microprocessador, memória e portos de entrada/saída.
  • A programação diretamente na linguagem da máquina é difícil, motivo pelo qual os sistemas operativos abstraem o hardware para o utilizador.
  • Máquina virtual é um nível de abstração criado pelo sistema operativo para facilitar a interação dos utilizadores com os dispositivos hardware.
  • Os sistemas operativos mono-utilizador foram os primeiros sistemas operativos utilizados em computadores pessoais, como CPM da Digital Research ou MS/DOS da Microsoft.
  • Os sistemas operativos multi-utilizador surgiram para suportar múltiplos utilizadores simultaneamente, como o Unix e a sua versão open-source, o Linux.
  • Os sistemas operativos multi-utilizador, multi-processo e multi-programados mais atuais, são exemplos de evoluções, como Windows 3.1, Windows 95, 98, XP, Vista, 7, 8 e 10.
  • A gestão de tarefas é uma forma de gerenciar recursos do hardware por um conjunto de programas independentes ou interdependentes.
  • Um processo é um programa que executa uma determinada tarefa.

Estudo de um Sistema Operativo

  • Os sistemas operativos são compostos por camadas funcionais, cada camada responsável por gerenciar um recurso físico do hardware.
  • Gestão de Processos e Tarefas: gerenciamento dos programas em execução.
  • Sincronização: coordenação entre processos que compartilham recursos.
  • Gestão de Memória: gerenciamento da memória RAM.
  • Comunicação: comunicação entre processos.
  • Ficheiros: gerenciamento de arquivos.
  • O estudo de cada camada utilizará a API disponibilizada na linguagem Java.
  • Permite que o código desenvolvido seja portável em diferentes plataformas.
  • A gestão de processos é o compartilhamento dos recursos de um computador entre programas diferentes.

Comunicação entre processos em Java

  • Comunicação entre processos independentes (IPC- Inter-Process Communication) na mesma máquina pode ser realizada através de memória partilhada, sockets TCP ou UDP.
  • Memória partilhada: um buffer compartilhado entre os processos para comunicação.
  • Sockets TCP: comunicação orientada a conexão, com maior confiabilidade.
  • Sockets UDP: comunicação não orientada a conexão, mais rápido.

Comunicação entre processos com Memória Partilhada

  • Memória mapeada de um ficheiro na qual se faz a comunicação entre os processos.
  • O acesso a um MappedByteBuffer pode ser feito por qualquer processo, permitindo alterações simultâneas ao conteúdo do buffer.
  • É preciso garantir a consistência da informação através de exclusão mútua para se evitar problemas de concorrencia.
  • Uma técnica fundamental é a utilização da classe FileLock em JAVA para garantir que só um processo accede ao buffer simultaneamente.

Processos leves ou Tarefas

  • Os processos leves são partes de um único processo-pai e cooperam em pseudo-paralelismo ou paralelismo para realizar tarefas.
  • Em Java, uma tarefa é implementada usando classes que herdarem da classe 'Thread'.
  • Esta forma de organização permite maior flexibilidade e concorrência em aplicações.

Sincronização entre tarefas

  • A sincronização é fundamental para evitar conflitos e garantir consistência quando os processos compartilham recursos.
  • Algumas técnicas de sincronização incluem a exclusão mútua, usando semáforos, e o monitor, permitindo que um recurso seja usado por apenas um processo por vez.
  • Os semáforos são variáveis que controlam o acesso a um recurso compartilhado.

Monitores

  • Os monitores são estruturas de dados que tornam os processos sincronizados.
  • Os monitores permitem que diferentes processos acessem dados em conjunto sem conflitos e problemas de consistência.
  • As técnicas de exclusão mútua com monitores fornecem uma maneira mais estruturada para sincronizar as tarefas dentro de um sistema.

Monitor versus Semáforos

  • Semáforos permitem acesso múltiplo, tornando mais simples a implementação.

  • Monitores garantem exclusão mútua, permitindo que apenas um processo utilize um recurso por vez.

  • Os monitores melhoram a confiabilidade ao fornecer estruturas bem definidas para sincronizar processos.

Studying That Suits You

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

Quiz Team

Related Documents

More Like This

Java Programming
10 questions

Java Programming

CreativeTrust6309 avatar
CreativeTrust6309
Java Concurrency and Multithreading
10 questions
Fundamentos de Sistemas Operativos
40 questions
Use Quizgecko on...
Browser
Browser