-
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.