SóProvas


ID
645391
Banca
AOCP
Órgão
BRDE
Ano
2012
Provas
Disciplina
Programação
Assuntos

Sobre Multiprogramação e Threads em Java, analise as assertivas e assinale a alternativa que aponta as corretas.

I. A Multiprogramação é uma maneira de alcançar uma forma limitada de paralelismo, mesmo em um computador com apenas uma CPU.

II. Mesmo em um computador com apenas uma CPU, diferentes threads de uma aplicação gráfica como exemplo, podem parecer estar todas sendo executadas ao mesmo tempo.

III. Java threads são objetos que podem cooperar e comunicar-se entre si para compartilhar objetos em memória, a tela, ou outros tipos de recursos e periféricos.

IV. A troca entre as threads sendo executadas ocorre rapidamente porque cada thread possui sua própria pilha armazenada na memória da Máquina Virtual Java. A pilha de cada thread contém as varáveis locais e os frames dos métodos que a thread está executando atualmente.

Alternativas
Comentários
  • e-

    In concurrent programming, there are two basic units of execution: processes and threads. In the Java programming language, concurrent programming is mostly concerned with threads, though processes are also important.

    A computer system normally has many active processes and threads, even in systems that only have a single execution core, and thus only have one thread actually executing at any given moment. Processing time for a single core is shared among processes and threads through an OS feature called time slicing.

    Processes- with a self-contained execution environment, a process generally has a complete, private set of basic run-time resources; in particular, each process has its own memory space. To facilitate communication between processes, most operating systems support Inter Process Communication (IPC) resources, such as pipes and sockets. IPC is used not just for communication between processes on the same system, but processes on different systems. Most implementations of the Java virtual machine run as a single process. A Java application can create additional processes using a ProcessBuilder object.

    Threads- lightweight processes whose creation requires fewer resources than creating a new process. Threads exist within a process — every process has at least one. Threads share the process's resources, including memory and open files.

    https://docs.oracle.com/javase/tutorial/essential/concurrency/procthread.html

  • Multiprogramação consiste na capacidade de o sistema operacional lidar com vários processos (concorrentemente ou paralelamente), não existe "forma limitada" de paralelismo, ou ele ocorre ou não ocorre. Paralelismo real só acontece quando o sistema operacional suporta múltiplos processadores e, dessa forma, os processos, de fato, são executados paralelamente. A meu ver a alternativa (A) não está correta.

  • 1) "Forma limitada" devido os recursos da máquina, cpu é limitado, memoria ram é limitada etc

    2) Cada thread tem suas prioridades, por isso o CPU parece que atende todas ao mesmo tempo, mas é feito o escalonamento

    3) Todo processo/thread independente que seja java ou não, coopera e comunica-se compartilhando recursos (ex: a impressora, vários processos pode utiliza-la ao mesmo tempo, porém será executado na sua vez e depois cederá sua vez pra outro)

    4) Cada thread usa um quantidade de recurso, por isso quando uma terá uma pilha de tamanho variável, utilização e liberação de recurso, além de sua prioridade.