Fundamentos de Sistemas Operativos - 2024-2025
123 Questions
4 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 das opções abaixo descreve melhor uma 'tarefa' em um processo?

  • Uma implementação de uma atividade dentro de um processo. (correct)
  • Um processo que não pode ser encerrado.
  • Uma estrutura de dados que não é acessada por outros processos.
  • Uma classe que não possui dependência de código.

Uma classe que deriva da classe Thread deve implementar o método run() para funcionar corretamente.

True (A)

Qual biblioteca é utilizada para acessar a classe Thread em Java?

java.lang.Thread

Uma tarefa em Java é implementada como uma classe que herda da classe __________.

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

Associe as definições às suas respectivas classes/métodos em Java:

<p>ArrayList = Uma estrutura de dados que armazena uma lista de elementos. start() = Método usado para iniciar a execução de uma tarefa. run() = Método que contém o código a ser executado na tarefa. Thread = Classe base para a criação de tarefas em Java.</p> Signup and view all the answers

Qual dos seguintes sistemas operativos é conhecido por seu uso em computadores pessoais na década de 80?

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

Os sistemas operativos mono-utilizador permitem o uso simultâneo de vários utilizadores.

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

Quais são os principais componentes de um computador, segundo a introdução sobre sistemas operativos?

<p>Microprocessador, memória e portos de entrada e saída.</p> Signup and view all the answers

O programa que mais utilização tem em qualquer computador é o __________.

<p>sistema operativo</p> Signup and view all the answers

Associe os seguintes sistemas operativos com sua característica principal:

<p>Unix = Sistema operacional para servidores Linux = Sistema operacional de código aberto OSX = Sistema operacional da Apple MS/DOS = Sistema operacional mono-utilizador</p> Signup and view all the answers

Qual é o objetivo principal de um sistema operativo?

<p>Facilitar a gestão dos recursos hardware (D)</p> Signup and view all the answers

O que é uma máquina virtual no contexto dos sistemas operativos?

<p>Uma abstração que permite manipular dispositivos hardware de forma simples e intuitiva.</p> Signup and view all the answers

Qual foi o primeiro sistema operativo multi-utilizador amplamente divulgado?

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

O Linux é um sistema operativo proprietário.

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

Quais versões do Windows são mencionadas como evoluções do MS-DOS?

<p>Windows 95, Windows 98, Windows XP, Windows Vista, Windows 7, Windows 8 e Windows 10</p> Signup and view all the answers

O sistema operativo Unix serviu de suporte a aplicações de _____ como a edição de notícias.

<p>multi-utilizador</p> Signup and view all the answers

Associe os sistemas operativos às suas características principais:

<p>Unix = Proprietário e multi-utilizador Linux = Open source e inovador Windows 3.1 = Evolução gráfica do MS-DOS Java = Linguagem utilizada para desenvolvimento de aplicações no estudo dos sistemas operativos</p> Signup and view all the answers

Qual das seguintes opções não é um sistema operativo mencionado?

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

A abordagem modular de um sistema operativo é composta por camadas funcionais que podem ser inteiramente disjuntas.

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

Qual é a linguagem de programação utilizada para o desenvolvimento de aplicações na disciplina de Fundamentos de Sistemas Operativos?

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

Um sistema operativo é decomposto em camadas funcionais que gerenciam recursos _____ da máquina hardware.

<p>físicos</p> Signup and view all the answers

Qual é a principal característica da linguagem Java em relação à portabilidade?

<p>É executada na Java Virtual Machine, permitindo portabilidade. (B)</p> Signup and view all the answers

Um processo em Java pode ser criado sem o uso da classe ProcessBuilder.

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

O que significa o estado 'Pronto' em um processo?

<p>O processo está esperando a atribuição do processador.</p> Signup and view all the answers

Um processo em Java é criado chamando o método ______ da classe ProcessBuilder.

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

Associe os tipos de aplicações com suas respectivas categorias:

<p>Word = Editor de texto Photoshop = Editor de imagem Messenger = Programa de comunicação C++, Java = Compiladores de linguagens de programação</p> Signup and view all the answers

Qual dos seguintes estados representa um processo que está aguardando algum evento ou comunicação?

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

Os editores de texto, como o Word, são considerados processos que partilham recursos físicos de uma máquina.

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

O que acontece com um processo quando a sua execução termina?

<p>O processo entra no estado 'Terminado'.</p> Signup and view all the answers

Um processo no estado 'Inicialização' está esperando pela ______ de recursos.

<p>atribuição</p> Signup and view all the answers

Qual é o uso da classe ProcessBuilder em Java?

<p>Gerenciar processos e executar comandos do sistema. (C)</p> Signup and view all the answers

Qual a principal finalidade da classe canalComunicacao em Java?

<p>Permitir a comunicação por memória partilhada entre processos. (A)</p> Signup and view all the answers

A memória partilhada em Java é uma memória mapeada de um arquivo.

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

Qual é a dimensão máxima em bytes do buffer utilizada na classe canalComunicacao?

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

A comunicação entre processos utiliza o ________ para mapear o buffer.

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

Associe os componentes da comunicação entre processos com suas funções:

<p>File Channel = Conecta o arquivo ao buffer. MappedByteBuffer = Mapeia a memória para processos. File = Armazena os dados utilizados para a comunicação. canalComunicacao = Classe responsável pela comunicação.</p> Signup and view all the answers

Qual é um dos atributos privados da classe canalComunicacao?

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

O código da classe canalComunicacao não contém um construtor.

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

Quais são as operações principais que podem ser realizadas no nível sistêmico na comunicação entre processos?

<p>Leitura e Escrita</p> Signup and view all the answers

A classe canalComunicacao é construída para funcionar em ________ onde os processos estão localizados.

<p>um mesmo computador</p> Signup and view all the answers

Qual é a principal característica de um MappedByteBuffer?

<p>Ele permite o acesso direto à memória e sincronização com um arquivo. (D)</p> Signup and view all the answers

Qual é a principal função de um autómato não bloqueante com estado final?

<p>Retornar informações sobre o término ou não da atividade (B)</p> Signup and view all the answers

A estrutura de um autómato não bloqueante é igual à de um autómato não bloqueante com estado final.

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

Qual é a linguagem de programação utilizada para implementar a função de um autómato não bloqueante com estado final?

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

O robot lego-mindstorms suporta até _____ sensores e pode ter _____ atuadores.

<p>4; 3</p> Signup and view all the answers

Associe as partes do robot lego-mindstorms com suas características:

<p>Rodas de tração = Independentes e na frente Roda traseira = Independente e livre Sensores = Até 4 suportados Atuadores = Até 3 suportados</p> Signup and view all the answers

Qual o método utilizado para listar os ficheiros da diretoria corrente em Java?

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

O método Dir(String nome) verifica se um ficheiro existe antes de apresentar sua leitura.

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

O que deve fazer o método DirAll(String pathname)?

<p>Listar todos os ficheiros dentro da diretoria e os ficheiros dentro das subdiretorias.</p> Signup and view all the answers

Se o ficheiro não pode ser lido, a mensagem exibida é: 'O ________ não aceita leitura.'

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

Associa os métodos aos seus objetivos:

<p>Dir() = Lista ficheiros da diretoria corrente DirAll(String pathname) = Lista todos os ficheiros e subdiretorias isDirectory() = Verifica se é uma diretoria exists() = Verifica se o ficheiro existe</p> Signup and view all the answers

Qual o primeiro passo do método Dir(String nome) após receber o parâmetro?

<p>Criar um novo objeto File. (A)</p> Signup and view all the answers

O método BufferedReader é usado para escrever dados em um ficheiro na classe ListarDiretorias.

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

Qual é uma vantagem da utilização de uma linguagem gráfica como a UML na modelação de aplicações multi-processo?

<p>Facilitar a descrição do modelo para investigadores com formações diversas (C)</p> Signup and view all the answers

Os diagramas de atividade da UML são usados apenas para representar processos orientados a objetos.

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

O que representa a seta entre duas atividades em um diagrama de atividade?

<p>Uma transição condicional ou incondicional.</p> Signup and view all the answers

Os diagramas de atividade contêm dois tipos de atividade: atividades de ação e atividades de __________.

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

Associe os tipos de diagramas da UML com suas funções:

<p>Diagramas de atividade = Modelar um fluxo de atividades Diagramas de estado = Representar estados de um sistema Swimlanes = Descrever a sincronização entre processos Diagramas de classes = Modelar a estrutura de classes</p> Signup and view all the answers

Qual dos seguintes assuntos é abordado nos diagramas de atividade?

<p>Sincronização entre processos (C)</p> Signup and view all the answers

Uma atividade em um diagrama de atividade pode representam operações e a transferência de objetos.

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

Os diagramas de atividades da UML foram desenhados para representar um __________ de atividades.

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

Qual linguagem é utilizada para modelar aplicações multi-processo neste contexto?

<p>Unified Modelling Language (UML)</p> Signup and view all the answers

Qual atividade é executada quando o estado é ATIVIDADE2?

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

O autômato bloqueante permite transições entre atividades sem condições.

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

Qual é a condição para transitar da ATIVIDADE1 para a ATIVIDADE2?

<p>condiçãoAtividade1ParaAtividade2</p> Signup and view all the answers

Na estrutura do autômato, o estado inicial é ______________.

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

Qual é o propósito da função 'açãoTransiçãoAtividade1ParaAtividade2'?

<p>Alterar o estado para ATIVIDADE2 (D)</p> Signup and view all the answers

O autômato utiliza um loop infinito (while true) para gerenciar os estados.

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

Qual atividade é chamada quando o estado é ATIVIDADE3?

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

A transição do estado ATIVIDADE3 de volta para ATIVIDADE1 é ativada pela condição ____________.

<p>condiçãoAtividade3ParaAtividade1</p> Signup and view all the answers

Associe os estados do autômato com suas respectivas ações.

<p>ATIVIDADE1 = atividade1() ATIVIDADE2 = atividade2() ATIVIDADE3 = atividade3()</p> Signup and view all the answers

Qual das seguintes opções descreve corretamente o que acontece quando as condições de transição não são atendidas?

<p>O autômato permanece no mesmo estado (B)</p> Signup and view all the answers

Qual é a função de um 'join' em um fluxo de ações concorrentes?

<p>Sincronizar a execução de múltiplos fluxos (A)</p> Signup and view all the answers

A aplicação termina se houver sucesso no estabelecimento da comunicação com o robô.

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

Quais comportamentos são lançados após o sucesso na comunicação com o robô?

<p>Vaguear, Perseguir, Evitar</p> Signup and view all the answers

Um ponto de comunicação entre tarefas diferentes é representado pelas __________.

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

Associe os comportamentos robóticos aos seus objetivos:

<p>Vaguear = Exploração do ambiente Perseguir = Aproximar-se de um alvo Evitar = Desviar de obstáculos Finalizar = Encerrar a comunicação</p> Signup and view all the answers

Qual é o resultado de um insucesso na comunicação com o robô?

<p>A aplicação termina (A)</p> Signup and view all the answers

As swimlanes têm apenas uma forma de partição em uma aplicação.

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

Como as swimlanes são utilizadas em sistemas distribuídos?

<p>Para definir o modelo de distribuição de processos através de diferentes computadores.</p> Signup and view all the answers

Após a conclusão dos comportamentos de um robô, a aplicação deve __________ a comunicação.

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

O que acontece quando todos os fluxos concorrentes têm suas atividades concluídas?

<p>A aplicação será finalizada (B)</p> Signup and view all the answers

Qual é a função do método acquire() no contexto de um semáforo?

<p>Permite que um processo acesse o recurso. (C), Decrementa o valor do semáforo. (D)</p> Signup and view all the answers

Um semáforo deve ser iniciado com o valor 0 para evitar deadlock em processos concorrentes.

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

O que ocorre quando dois processos tentam acessar um recurso simultaneamente e não há liberdade do recurso?

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

Em Java, o código de inicialização de um semáforo deve ter um valor inicial de ________ para evitar deadlock.

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

Associe os termos associados ao semáforo com suas descrições:

<p>P(s) = Operação de teste para decremento. wait(s) = Sinônimo de acquire() em terminologia anglo-saxônica. release() = Operação que libera o recurso. acquire() = Método que solicita acesso ao recurso.</p> Signup and view all the answers

Qual é a principal característica dos processos em Java?

<p>Processos são criados utilizando a classe ProcessBuilder. (C)</p> Signup and view all the answers

Um processo no estado 'Executando' está à espera de interrupção de I/O ou evento.

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

O que é necessário para que um processo em Java seja iniciado?

<p>Chamar o método start() da classe ProcessBuilder.</p> Signup and view all the answers

Um processo aguardando a atribuição do processador está no estado __________.

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

Associe os estados de um processo com suas definições:

<p>Inicialização = O processo foi criado mas aguarda recursos. Executando = O processo está em uso pelo processador. Espera = O processo aguarda I/O ou evento. Terminado = A execução do processo foi concluída.</p> Signup and view all the answers

Qual a função da classe ProcessBuilder em Java?

<p>Criar e gerenciar processos executáveis. (B)</p> Signup and view all the answers

Os editores de texto são considerados processos que compartilham recursos de uma máquina.

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

Quais das seguintes opções são formas de comunicação entre processos independentes em Java?

<p>Sockets por TCP (B), Memória partilhada (D)</p> Signup and view all the answers

A comunicação entre processos com TCP é realizada apenas em máquinas diferentes.

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

Qual é o tempo de comunicação utilizando memória partilhada em um core de CPU?

<p>1,5 microsegundos</p> Signup and view all the answers

A técnica de comunicação entre processos que utiliza ________ é considerada eficiente e é designada em Java como memória mapeada.

<p>memória partilhada</p> Signup and view all the answers

Associe os seguintes tempos de comunicação com a técnica correspondente:

<p>Memória partilhada e 1 core de CPU = 1,5 microsegundos TCP e mais de 1 core de CPU = 22 microsegundos UDP e 1 core de CPU = 5 microsegundos Memória partilhada e mais de 1 core de CPU = 0,7 microsegundos</p> Signup and view all the answers

Qual comando é utilizado para lançar um processo Java a partir do código apresentado?

<p>Runtime.getRuntime().exec() (B)</p> Signup and view all the answers

O tempo de comunicação utilizando UDP é sempre menor que o tempo utilizando TCP.

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

Qual é a saída esperada após um processo T1 terminar na execução do código apresentado?

<p>T1 terminou.</p> Signup and view all the answers

A classe em Java para lançar processos é chamada de ________.

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

Qual das seguintes opções descreve a principal finalidade da classe canalComunicacao em Java?

<p>Implementar a comunicação por meio de memória partilhada. (B)</p> Signup and view all the answers

A dimensão máxima em bytes do buffer utilizada na classe canalComunicacao é 50.

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

Qual é o tipo de memória utilizada para a comunicação entre processos em Java?

<p>Memória mapeada de um arquivo</p> Signup and view all the answers

A classe canalComunicacao utiliza um ______ para conectar o conteúdo do arquivo ao buffer.

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

Associe os componentes da classe canalComunicacao com suas funções:

<p>File = Armazenar dados em disco FileChannel = Conectar arquivo ao buffer MappedByteBuffer = Proporcionar acesso à memória mapeada BUFFER_MAX = Definir a capacidade máxima do buffer</p> Signup and view all the answers

Qual dos seguintes atributos privados não faz parte da classe canalComunicacao?

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

O construtor da classe canalComunicacao é vazio e não realiza nenhuma inicialização.

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

Quantos processos podem utilizar a memória partilhada através da classe canalComunicacao?

<p>Vários processos</p> Signup and view all the answers

A comunicação entre processos via memória partilhada é realizada utilizando ______.

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

Qual é o valor máximo da constante BUFFER_MAX definida na classe canalComunicacao?

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

Qual das seguintes opções descreve a maneira de iniciar uma tarefa em Java?

<p>cr1.start(); (C)</p> Signup and view all the answers

Uma tarefa em Java pode ser implementada como uma classe que herda da classe Runnable.

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

Qual é a declaração necessária para uma classe que extende a classe Thread em Java?

<p>public class NomeDaClasse extends Thread</p> Signup and view all the answers

Para criar uma instância da classe controlarRobot1, usa-se a seguinte linha de código: ________ cr1 = new controlarRobot1();

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

Qual é o método que deve ser implementado na classe que herda de Thread?

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

Associe os componentes de um processo com suas características:

<p>Processo-pai = Contém múltiplas tarefas Tarefa = Implementação de uma atividade independente Heap = Memória dinâmica utilizada por um processo Stack = Armazena informações locais da função</p> Signup and view all the answers

A máquina virtual Java permite a execução de apenas uma única tarefa dentro de um processo.

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

As tarefas em Java são instâncias de classes que herdam da classe Thread e devem implementar o método ________.

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

Que estrutura de dados é utilizada pela classe controlarRobot1 para armazenar comandos?

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

Qual dos seguintes é um passo fundamental para iniciar uma tarefa em Java?

<p>Usar o método start() na instância da Thread. (A)</p> Signup and view all the answers

Flashcards

Memória Partilhada

Um mecanismo de comunicação entre processos que permite o compartilhamento direto de dados na memória.

canalComunicacao

Uma classe que permite comunicação entre processos JAVA através de memória partilhada.

Ficheiro (File)

Um arquivo que é usado para armazenar os dados compartilhados entre processos.

FileChannel

Um canal que conecta o conteúdo de um arquivo ao buffer de memória compartilhada.

Signup and view all the flashcards

MappedByteBuffer

Uma região específica de memória que permite a leitura e escrita de dados compartilhados.

Signup and view all the flashcards

Buffer

Uma região de memória que armazena dados compartilhados.

Signup and view all the flashcards

BUFFER_MAX

O tamanho máximo em bytes que o buffer de memória compartilhada pode armazenar.

Signup and view all the flashcards

Comunicação por Memória Partilhada

Um método que permite a comunicação entre processos utilizando memória partilhada.

Signup and view all the flashcards

Comunicação entre Processos JAVA

Permite a comunicação entre processos na mesma máquina, permitindo que compartilhem dados e recursos.

Signup and view all the flashcards

Processo

Um processo que pode acessar e modificar dados na memória compartilhada juntamente com outros processos.

Signup and view all the flashcards

O que é um Sistema Operativo?

Um programa fundamental que administra os recursos de um computador, como o processador, memória e dispositivos de entrada e saída. Permite aos usuários interagir com o hardware de forma mais fácil.

Signup and view all the flashcards

Sistemas Operativos Mono-Usuário

Os Sistemas Operativos Mono-Usuário eram utilizados em computadores pessoais antigos. Exemplos: CPM e MS-DOS.

Signup and view all the flashcards

Linguagem Máquina

Linguagem de baixo nível compreendida pelo processador. É uma sequência de instruções. Cada instrução manipula os dados diretamente.

Signup and view all the flashcards

Máquina Virtual

Os Sistemas Operativos facilitam o uso do hardware, criando uma abstração chamada máquina virtual.

Signup and view all the flashcards

Nível de Abstração

Refere-se à camada de software que torna o hardware acessível aos usuários. Cria uma interface de usuário amigável, gerenciando o acesso aos recursos.

Signup and view all the flashcards

Objetivo do Sistema Operativo

O objetivo principal do sistema operativo é facilitar e maximizar o uso dos recursos do hardware do computador.

Signup and view all the flashcards

Sistemas Operativos Multi-Usuário

Modelos modernos que permitem que múltiplos usuários acessem e utilizem o mesmo computador ao mesmo tempo, como Windows, Linux e macOS.

Signup and view all the flashcards

Sistemas Operativos Multi-utilizador

Sistemas operativos projetados para serem usados por vários usuários simultaneamente, permitindo que diferentes processos compartilhem recursos do sistema, como a CPU e memória.

Signup and view all the flashcards

Windows 3.1

Um sistema operacional proprietário que deu origem a uma série de evoluções e versões, incluindo Windows 95, 98, XP, Vista, 7, 8 e 10.

Signup and view all the flashcards

Camadas funcionais

Camadas funcionais, que representam módulos de gerenciamento de recursos do sistema, cada camada é responsável pela gestão eficiente de um recurso físico da máquina hardware.

Signup and view all the flashcards

Tarefas em Java

Um processo pode ser dividido em múltiplas tarefas. Cada tarefa é uma atividade executada dentro do processo, possuindo código e dados independentes das outras tarefas. Uma tarefa em Java é implementada como uma classe que deriva da classe Thread, herdando seus métodos.

Signup and view all the flashcards

Abordagem modular

Uma abordagem estrutural que organiza o sistema operacional em módulos independentes, permitindo que cada módulo seja desenvolvido, testado e depurado separadamente.

Signup and view all the flashcards

Classe Thread

A classe Thread é a base para criar e gerenciar tarefas em Java. Ela está disponível na biblioteca java.lang.Thread e implementa a interface Runnable. Ao estender a classe Thread, sua classe se torna uma tarefa que pode ser executada dentro de um processo.

Signup and view all the flashcards

Gestão de Processos e Tarefas

Gerenciamento de Processos e Tarefas, uma parte fundamental do sistema operacional que é responsável por controlar a execução de processos e tarefas, garantindo que seus recursos sejam alocados e gerenciados de forma eficiente.

Signup and view all the flashcards

Sincronização

Sincronização, um mecanismo que garante que os processos compartilhem recursos de forma segura, evitando conflitos e garantindo a consistência dos dados.

Signup and view all the flashcards

Criando Classes Thread

Existem duas formas de definir uma classe do tipo Thread em Java: herdar diretamente da classe Thread ou implementar a interface Runnable. Ambas permitem criar tarefas, mas a primeira oferece métodos para gerenciamento de threads diretamente na classe da tarefa.

Signup and view all the flashcards

Gestão de Memória

Gerenciamento de Memória, uma camada crucial que aloca e gerencia a memória disponível no sistema, garantindo que os processos tenham acesso à quantidade de memória que precisam para funcionar corretamente.

Signup and view all the flashcards

Iniciando uma Tarefa

O método start() da classe Thread inicia a execução da tarefa, permitindo que ela seja executada em paralelo com o código principal do processo. Ao usar start(), você chama o método run() da classe Thread, que é a base da execução da tarefa.

Signup and view all the flashcards

Método run()

O método run() é o coração da classe Thread. Ele define as ações que a tarefa realiza. Quando o método start() é chamado, o método run() da classe Thread é executado como uma thread separada.

Signup and view all the flashcards

Comunicação

Comunicação, um mecanismo que permite que diferentes processos se comuniquem entre si e com dispositivos externos, facilitando a troca de informações.

Signup and view all the flashcards

Ficheiros

Gerenciamento de Ficheiros, um componente que organiza e administra os arquivos do sistema, garantindo que a informação seja armazenada e recuperada de forma segura e eficiente.

Signup and view all the flashcards

Gestão de processos

A gestão de processos é o mecanismo pelo qual o sistema operativo permite que múltiplos programas (processos) partilhem os recursos físicos da máquina, permitindo que sejam executados em simultâneo.

Signup and view all the flashcards

Estados de um processo

Um processo pode passar por diferentes estados de funcionamento, como inicialização (criado, mas ainda não em execução), pronto (esperando por sua vez para executar), execução (a executar), espera (aguardando um evento) e terminado (execução concluída).

Signup and view all the flashcards

Inicialização de um processo (Java)

A inicialização é a primeira fase de um processo onde o programa é criado, mas ainda precisa obter os recursos necessários para começar a executar.

Signup and view all the flashcards

Processo pronto (Java)

Um processo está em estado pronto quando está pronto para começar a executar, mas está esperando sua vez na fila de espera para obter o CPU.

Signup and view all the flashcards

Processo em execução (Java)

Um processo em estado de execução está a usar o CPU e a executar tarefas específicas.

Signup and view all the flashcards

Processo em espera (Java)

Um processo em estado de espera está a aguardar que um evento ocorra, como a entrada do utilizador, dados de uma rede ou a conclusão de uma operação I/O.

Signup and view all the flashcards

Processo terminado (Java)

Um processo está em estado terminado quando a execução é concluída e os recursos do sistema são libertados.

Signup and view all the flashcards

Criar um processo em Java

Em Java, pode-se criar um processo utilizando a classe ProcessBuilder, um objeto que recebe como parâmetro o nome do programa e path.

Signup and view all the flashcards

Método start() (Java)

O método start() da classe ProcessBuilder é usado para iniciar a execução do processo, ativando o programa especificado.

Signup and view all the flashcards

O que faz o método DirAll?

O método DirAll é chamado com um nome de diretoria. Se o nome for uma diretoria, o método lista todos os arquivos dentro da diretoria e os arquivos dentro das subdiretorias, referindo as subdiretorias.

Signup and view all the flashcards

Qual parâmetro o método DirAll recebe?

O método DirAll recebe o caminho para uma diretoria como parâmetro.

Signup and view all the flashcards

O que o método DirAll mostra?

O método DirAll lista os arquivos dentro da diretoria e as subdiretorias, fornecendo o caminho completo de cada arquivo.

Signup and view all the flashcards

Qual é o objetivo do método Dir?

O método Dir recebe um nome, geralmente um nome de arquivo. Se o nome for uma diretoria, o método mostra a lista de arquivos dentro dessa diretoria.

Signup and view all the flashcards

Como o método Dir determina se o caminho é uma diretoria?

O método Dir usa File.isDirectory() para verificar se o caminho fornecido é uma diretoria. Se for, o método mostra os arquivos dentro da diretoria.

Signup and view all the flashcards

Como o método Dir exibe os arquivos dentro da diretoria?

O método Dir usa File.listFiles() para obter uma lista de arquivos dentro da diretoria. Em seguida, itera pela lista e mostra o nome de cada arquivo.

Signup and view all the flashcards

Como o método Dir verifica se o arquivo pode ser lido?

O método Dir usa File.canRead() para verificar se o arquivo pode ser lido. Se não, o método mostra uma mensagem indicando que o arquivo não pode ser lido.

Signup and view all the flashcards

Autómato não bloqueante com estado final

Um autómato não bloqueante com estado terminal difere de um autómato não bloqueante sem estado terminal, pois retorna uma informação sobre a conclusão da atividade através de uma função.

Signup and view all the flashcards

Exemplo de autómato não bloqueante com estado final

No exemplo do diagrama de atividades com 2 atividades completamente ligadas, o código retorna true quando a atividade final é concluída e false caso contrário.

Signup and view all the flashcards

Estrutura do robot LEGO NXT Mindstorms

O robot LEGO NXT Mindstorms tem uma estrutura modelar com duas rodas de tração independentes na frente e uma roda livre atrás.

Signup and view all the flashcards

Funcionalidades do robot LEGO NXT Mindstorms

O robot LEGO NXT Mindstorms pode suportar até 4 sensores (por exemplo, de distância, cor, som) e 3 atuadores, como motores.

Signup and view all the flashcards

Conexão do robot LEGO NXT Mindstorms

O robot LEGO NXT Mindstorms pode ser ligado a um computador através de uma ligação USB ou Bluetooth, permitindo programar e controlar suas ações.

Signup and view all the flashcards

Join (Junção)

Um ponto de sincronização entre dois ou mais fluxos concorrentes de ações, onde a execução de uma sequência depende da conclusão de todas as outras.

Signup and view all the flashcards

Swimlanes (Faixas de Natação)

Mecanismo para modelar a comunicação e sincronização entre tarefas diferentes dentro de uma aplicação. Representam a colaboração e interdependência.

Signup and view all the flashcards

Iniciar uma Tarefa (start())

Processo de executar uma tarefa. A tarefa é iniciada para executar em paralelo com o código principal.

Signup and view all the flashcards

Autómato Bloqueante

O autómato bloqueante é um tipo de máquina de estados finitos que é usado para implementar diagramas de atividades. Ele possui um número finito de estados e transições entre esses estados. A estrutura do autómato é definida pelas ações a serem realizadas em cada estado (atividades) e pelas condições que determinam a transição de um estado para outro.

Signup and view all the flashcards

Estado no Autômato Bloqueante

Cada estado no autómato bloqueante representa uma atividade do diagrama de atividades. Cada atividade possui um conjunto de ações a serem executadas quando o autómato estiver nesse estado.

Signup and view all the flashcards

Transição no Autômato Bloqueante

As transições no autómato bloqueante são definidas por condições que devem ser satisfeitas para que ocorra a mudança de estado. A condição para cada transição representa um evento ou condição que desencadeia a mudança do estado atual para outro.

Signup and view all the flashcards

Ações de Transição

Ações de transição são ações executadas quando ocorre uma transição de um estado para outro. Estas ações podem ser usadas para atualizar o estado do sistema, enviar mensagens ou executar outras tarefas.

Signup and view all the flashcards

Estado Inicial

O estado inicial do autómato bloqueante, onde o processo começa a ser executado.

Signup and view all the flashcards

Estados Finais

O conjunto de estados finais do autómato bloqueante, onde o processo termina sua execução.

Signup and view all the flashcards

Ciclo de Vida do Autômato

O ciclo de vida do autómato bloqueante é definido pelo loop infinito, que continua até que o processo seja interrompido. O loop é responsável por verificar as condições de transição e executar as ações correspondentes.

Signup and view all the flashcards

Estrutura Genérica

A estrutura genérica do autómato bloqueante é uma estrutura que descreve a lógica do sistema. Ela define a estrutura básica do autómato e é reutilizável em diferentes diagramas de atividades.

Signup and view all the flashcards

Atividades

As ações a serem realizadas em cada estado são chamadas de atividades. As atividades são parte fundamental do processo definido pelo diagrama de atividades.

Signup and view all the flashcards

Condições de Transição

Condições que definem as transições entre os estados são usadas para determinar quando as atividades devem mudar. As transições são disparadas quando as condições forem satisfeitas.

Signup and view all the flashcards

Diagramas de atividade da UML

Os diagramas de atividade da UML (Unified Modelling Language) são ferramentas poderosas para modelar o comportamento de sistemas, incluindo aplicações multi-processo. Eles permitem visualizar o fluxo de atividades, transições entre estados e interações entre diferentes componentes do sistema.

Signup and view all the flashcards

Aplicações multi-processo

Uma aplicação multi-processo ou multi-tarefa consiste em vários processos ou tarefas que trabalham em conjunto para realizar uma função específica.

Signup and view all the flashcards

Swimlanes da UML

Swimlanes são um elemento de diagramas UML que representam diferentes processos ou partes de um sistema, separando visualmente as atividades que cada um executa.

Signup and view all the flashcards

Diagramas de atividade para processos

Os diagramas de atividade podem ser adaptados para modelar cada processo dentro de uma aplicação multi-processo. Cada processo é representado como um conjunto de atividades conectadas por transições, que representam o fluxo de execução do processo.

Signup and view all the flashcards

Atividades de ação

As actividades de ação representam uma operação individual dentro de um diagrama de atividade, como uma operação matemática, uma requisição de dados ou uma atualização de um estado.

Signup and view all the flashcards

Atividades de subatividade

As atividades de subatividade no diagrama de atividade representam um conjunto de ações ou operações dentro de um processo, que podem até ser modeladas por outros diagramas de atividade.

Signup and view all the flashcards

Transições em diagramas de atividade

As transições entre atividades em um diagrama de atividade podem ser condicionais ou incondicionais, dependendo de uma condição específica ou de um evento que precisa ocorrer para a próxima atividade acontecer.

Signup and view all the flashcards

Representação de atividades

As atividades podem representar operações, métodos, transferência de objetos entre processos e especificação dos objetos a transferir. Isso permite modelar de forma mais rica e precisa a interação entre os processos.

Signup and view all the flashcards

Padronização da UML

A linguagem gráfica standard para modelar aplicações multi-processo é a UML, o que facilita a comunicação entre desenvolvedores e a colaboração na criação de soluções para aplicações complexas.

Signup and view all the flashcards

Memória Partilhada em JAVA

A memória partilhada em JAVA é uma memória mapeada de um ficheiro que tem de ser conhecido dos vários processos através do path e nome do ficheiro.

Signup and view all the flashcards

Classe canalComunicacao

A classe canalComunicacao é uma classe que permite a comunicação entre processos JAVA através de memória partilhada. Permite partilhar dados entre diferentes processos.

Signup and view all the flashcards

O que é o FileChannel?

O FileChannel é um canal que conecta o conteúdo de um ficheiro ao buffer de memória compartilhada. Permite o acesso direto aos bytes do ficheiro.

Signup and view all the flashcards

Para que serve o MappedByteBuffer?

O MappedByteBuffer é uma região específica de memória que permite a leitura e escrita de dados compartilhados. É como uma janela para ver e editar os dados.

Signup and view all the flashcards

Para que serve o BUFFER_MAX?

O BUFFER_MAX é a dimensão máxima em bytes que o buffer de memória compartilhada pode armazenar. Controla a quantidade de dados que podem ser partilhados.

Signup and view all the flashcards

O que é o File?

O File é um objeto que representa um ficheiro no sistema. Define o caminho e nome do ficheiro.

Signup and view all the flashcards

Para que serve o buffer?

O buffer é uma região de memória que armazena dados compartilhados. É como um recipiente para armazenar os dados antes de serem partilhados.

Signup and view all the flashcards

O que é o canal?

O canal é um objeto que permite a comunicação entre o buffer e o File. Ele permite que a memória compartilhada seja sincronizada com o ficheiro.

Signup and view all the flashcards

Para que serve o construtor da classe canalComunicacao?

O construtor da classe canalComunicacao é usado para inicializar os membros da classe, incluindo o ficheiro, FileChannel e MappedByteBuffer. É como a primeira etapa para configurar a comunicação.

Signup and view all the flashcards

O que é a comunicação por memória partilhada?

A comunicação por memória partilhada é um método que permite a comunicação entre processos utilizando memória partilhada. É como uma área comum onde todos os processos podem trocar informações.

Signup and view all the flashcards

O que é um processo?

Um processo é uma unidade básica de execução em um sistema operacional. Ele representa um programa em execução, que possui seu próprio espaço de endereço e recursos, como memória e arquivos.

Signup and view all the flashcards

O que é uma tarefa?

Uma tarefa é um bloco de trabalho dentro de um processo, geralmente representada por uma função (ou uma série de funções) que manipula dados do processo.

Signup and view all the flashcards

Como as tarefas são implementadas em Java?

Um processo pode ser desenhado para conter múltiplas tarefas. Cada tarefa é implementada como uma classe Java que deriva da classe Thread.

Signup and view all the flashcards

Como a JVM gerencia tarefas?

A máquina virtual Java (JVM) permite a execução de múltiplas tarefas ('Threads') dentro de um processo. Isso permite que um programa execute diferentes partes de sua lógica simultaneamente.

Signup and view all the flashcards

Como acessar a classe Thread?

A classe Thread é acessada através da biblioteca java.lang.Thread e tem a declaração: public class Thread extends Object implements Runnable

Signup and view all the flashcards

Quais são as maneiras de definir uma classe do tipo Thread?

Existem duas maneiras de definir uma classe do tipo Thread: 1. Herdando diretamente da classe Thread 2. Implementando a interface Runnable.

Signup and view all the flashcards

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

O método start() inicia a execução da tarefa, permitindo que ela seja executada em paralelo com o código principal do processo.

Signup and view all the flashcards

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

O método run() é o coração da classe Thread, definindo as ações que a tarefa realiza quando ela é executada.

Signup and view all the flashcards

Como as tarefas compartilham recursos?

A JVM permite que múltiplas tarefas compartilhem os recursos do processo-pai, o que requer mecanismos de sincronização para garantir que as tarefas não interfiram umas com as outras ao acessar dados compartilhados.

Signup and view all the flashcards

O que é memória compartilhada?

A memória compartilhada é um mecanismo de comunicação entre processos e tarefas onde os processos podem acessar e modificar diretamente os dados na memória.

Signup and view all the flashcards

Como criar um processo em Java?

Em Java, o processo pode ser criado utilizando a classe ProcessBuilder. O nome do processo e o caminho para o executável são parâmetros de entrada para a classe. A criação do processo ocorre através da instanciação da classe ProcessBuilder e chamada do método start(). Exemplo:

ProcessBuilder pb = new ProcessBuilder("nomeProcesso");
Process p = pb.start();   // inicia o processo
Signup and view all the flashcards

Estados e Transições de um Processo

Um processo pode estar em diferentes estados dependendo do momento. O diagrama de estados mostra as diferentes fases do ciclo de vida de um processo. As transições entre estados são representadas por setas que indicam os eventos que causam a mudança de estado.

Signup and view all the flashcards

Comunicação entre Processos

A comunicação entre processos permite que diferentes processos compartilhem dados, recursos e controlem a sua execução. Em Java, a comunicação pode ser realizada através de vários mecanismos, como memória compartilhada ou mensagens.

Signup and view all the flashcards

Threads em Java

Em Java, um processo pode ser dividido em múltiplas tarefas, chamadas de threads. Cada thread pode executar uma tarefa específica dentro do processo, tornando-o mais eficiente.

Signup and view all the flashcards

Sincronização de Threads

A sincronização entre threads é crucial para garantir a consistência e integridade dos dados. Por exemplo, em um sistema de banco, várias threads podem acessar a mesma conta bancária. A sincronização garante que as operações sejam executadas em ordem e de forma segura.

Signup and view all the flashcards

P(s) (ou 'acquire')

Uma operação que decrementa o valor de um semáforo quando este é maior do que zero.

Signup and view all the flashcards

Deadlock

Uma situação em que dois ou mais processos ficam bloqueados indefinidamente, esperando que um recurso seja libertado pelo outro.

Signup and view all the flashcards

Semáforo

Um objeto que controla o acesso concorrente a recursos em um sistema multi-processo.

Signup and view all the flashcards

Release()

Uma operação que permite a um processo liberar um recurso, sinalizando que ele está disponível para outros processos.

Signup and view all the flashcards

Swimlanes

A função Swimlanes em um diagrama de atividade, representada por faixas de natação, serve para destacar visualmente os processos ou componentes do sistema que desempenham diferentes tarefas. Ela ajuda a visualizar a colaboração entre processos e a divisão de responsabilidades dentro do sistema.

Signup and view all the flashcards

Sockets por TCP

A comunicação entre processos em Java pode ser realizada através de Sockets por TCP (Transfer Control Protocol), que fornece um mecanismo confiável e orientado à conexão para troca de dados entre processos em uma rede.

Signup and view all the flashcards

Sockets por UDP

A comunicação entre processos em Java pode ser realizada através de Sockets por UDP (User Datagram Protocol), que oferece um protocolo leve e sem conexão para troca de dados entre processos em uma rede. É ideal para aplicações com baixa latência e onde a confiabilidade não é crítica.

Signup and view all the flashcards

Transições no Autômato Bloqueante

As transições no autómato bloqueante são representadas como setas no diagrama de atividade, indicando a mudança de um estado para outro, dependendo de uma condição específica. Essas transições definem o fluxo de trabalho e determinam como o processo progride de uma etapa para a próxima.

Signup and view all the flashcards

Study Notes

Fundamentos de Sistemas Operativos - 2024-2025

  • O sistema operativo é o programa mais utilizado em qualquer computador, utilizado para todas as áreas de funcionalidade.
  • Os sistemas operativos mais conhecidos são: UNIX, Linux, OSX e Microsoft Windows.
  • Um computador é uma arquitetura hardware que engloba microprocessador, memória e portos de entrada/saída.
  • Um exemplo de arquitetura é o Arduino, um microsistema já trabalhado em Computação Física.
  • A programação ao nível da linguagem máquina de um microprocessador é complexa e consume muito tempo.
  • O principal objetivo do sistema operativo é facilitar a gestão dos recursos hardware, criando um nível de abstração para o utilizador (máquina virtual).
  • A máquina virtual permite uma forma mais intuitiva de manipular os dispositivos hardware.

Tipos de Sistemas Operativos

  • Sistemas Operativos Mono-Utilizador - Foram os primeiros sistemas utilizados em computadores pessoais (anos 80), como CPM ou MS-DOS.
  • Sistemas Operativos Multi-Utilizador - São utilizados em computadores de médio porte, onde várias pessoas podem utilizar um mesmo computador. Um exemplo é Unix e Linux, considerados os precursores dos sistemas modernos.
  • Windows 3.1, 95, 98, XP, Vista, 7, 8 e 10 são exemplos de sistemas multi-utilizador e multi-processos.

Estudo de um Sistema Operativo

  • Um sistema operativo pode ser decomposto em camadas funcionais, cada uma gerindo um recurso do hardware.
  • As camadas não são inteiramente disjuntas, mas complementares.
  • As camadas são estudadas de forma modular.
  • Processos e tarefas são estudados numa linguagem Java, usando APIs, como a Java Virtual Machine, para facilitar a acessibilidade do código para vários hardware.
  • Gestão de processos e tarefas envolve a partilha de recursos, como editores de textos, compiladores, outros programas, e dispositivos de entrada/saída.

Comunicação entre Processos em Java

  • Comunicação entre processos em JAVA pode ser realizada por memória partilhada, ou sockets TCP (Transfer Control Protocol) ou UDP (User Datagram Protocol).
  • A memória partilhada em JAVA é mapeada para uma área de memória virtual do conteúdo de um ficheiro.
  • A troca de dados entre processos é mais rápida utilizando Memória partilhada.
  • Os tempos de acesso para troca de dados utilizando memória partilhada e um core de CPU, são de 1,5 microsegundos e mais de 1 core de CPU são de 0,7 microsegundos.
  • Os tempos de acesso utilizando TCP e um core de CPU são de 30 microsegundos e mais de 1 core de CPU são de 22 microsegundos.
  • Os tempos de acesso utilizando UDP e um core de CPU são de 5 microsegundos e mais de 1 core de CPU são de 8 microsegundos.

Comunicação entre processos com Memória Partilhada

  • Há um buffer de acesso direto com conteúdo igual ao de um ficheiro, permitindo acesso simultâneo.
  • Qualquer processo Java pode alterar o conteúdo do buffer.
  • Se um processo fecha ou trunca o buffer, outros processos deixam de ter acesso, gerando um erro de acesso.
  • A manipulação de um buffer mapeado é semelhante à de um buffer convencional.
  • As funções 'force()', 'isLoaded()' e 'load()' são específicas para buffers mapeados e permitem controlar o acesso à memória principal.

Comunicação entre Processos em Java (utilizando Memória Partilhada)

  • Um programa Java pode executar um ficheiro .JAR.
  • O método main() é a base de uma aplicação Java.
  • As classes para execução de processos em Java são: lançarEEsperarProcessoWin32 e lancarEEsperarProcessoJAVA. Estas classes facilitam a criação e gestão de processos.

Tarefa em Java

  • Um processo pode conter múltiplas tarefas (threads).
  • Uma tarefa em Java é uma classe que deriva da classe Thread (e implementa Runnable).
  • Várias tarefas podem ser executadas dentro do mesmo processo, permitindo concorrência.
  • A classe ControlarRobot1 e ControlarRobot2 demonstram como criar e lançar tarefas em Java usando threads para executar diferentes ações.

Sincronização entre Tarefas

  • A comunicação entre tarefas requer sincronização, devido ao processamento ser imprevisível em tempo real.
  • A exclusão mútua garante que apenas uma tarefa aceda a um determinado recurso em simultâneo.
  • Semáforos são um mecanismo para controlar o acesso concorrente, prevenindo problemas como o deadlock. É fundamental para impedir acessos simultâneos que poderiam gerar incoerências.
  • A declaração e o uso adequado de semáforos são essenciais para prevenir deadlock e garantir consistência.

Monitores

  • As tarefas são sincronizadas usando monitores, oferecendo exclusão mútua dentro da própria linguagem Java.
  • Monitores geridos pela linguagem Java, onde cada objeto possui um monitor.
  • O acesso aos monitores é controlado pela diretiva synchronized, garantindo exclusão mútua.
  • Sincronização ao método - Permite que um processo aceda ao método somente quando seu monitor é desbloqueado (terminando sua execução ou usando wait()).
  • Sincronização ao bloco - Limita o uso de synchronized dentro de um bloco específico, protegendo variáveis.

Sistema de Ficheiros

  • O sistema de ficheiros organiza os ficheiros numa estrutura hierárquica (árvore de subdiretoria), com diretoria raiz.
  • O Open-Read/Write-Close é um padrão de modelo de acesso a ficheiros, onde o utilizador abre, lê/escreve e fecha o ficheiro.
  • Os ficheiros são estruturados em blocos (clusters) de dados.
  • Usam uma tabela (FAT) que descreve o uso de cada bloco, incluindo cluster estragados, clusters livres e clusters usados, além de outras informações como tempo de criação, data e hora de acesso, e proteção.
  • Um volume (disco) é dividido em partições com diferentes tipos (FAT, etc) e estrutura física, com o setor de inicialização, tabelas de alocação, e blocos de dados.
  • O Master Boot Record (MBR) contém o código de arranque e informações sobre a partição e o sistema operacional.

Manipulação de Ficheiros em Java com Streams

  • As classes java.io.Reader e java.io.Writer são usadas para manipulação de caracteres.
  • As classes java.io.InputStream e java.io.OutputStream são usadas para manipulação de bytes.
  • Classes como BufferedReader, BufferedWriter, FileReader, FileWriter, FileInputStream, FileOutputStream facilitam a leitura e escrita de ficheiros de forma eficiente e gerenciando fluxos de dados com grande eficiência.

Diagramas de Atividade

  • Os diagramas de atividade modelam fluxos de controlo concorrentes, especialmente importantes em aplicações multi-thread.
  • Eles descrevem atividades, transições entre atividades, e condições (eventos) disparando as transiçoes.
  • As swimlanes organizam atividades dentro de diferentes participantes (processos ou threads), facilitando a visualização clara da colaboração entre eles.
  • Usados para representar fluxos de trabalho em aplicações multi-thread.

Outros Anexos

  • Os anexos descrevem robôs (Lego NXT e EV3), seus componentes (computador, sensores, atuadores), e a interação entre o robô e o ambiente através de interfaces de programação, como a comunicação USB e Bluetooth, e consideram os tempos de processamento mínimos. Também detalham o modelo computadorn-robô.

Studying That Suits You

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

Quiz Team

Description

Descubra os conceitos fundamentais dos sistemas operativos e suas aplicações em computação. Este quiz cobre arquiteturas de hardware, tipos de sistemas operativos e a importância da máquina virtual na gestão de recursos. Teste seu conhecimento sobre sistemas conhecidos como UNIX, Linux e Windows.

More Like This

Operating Systems Overview
8 questions

Operating Systems Overview

ImpeccableMaclaurin avatar
ImpeccableMaclaurin
Operating System Concepts Chapter 1
8 questions
Computer Systems Architecture Quiz
40 questions
Use Quizgecko on...
Browser
Browser