CISSP Practice question #80

When a CPU can execute multiple processes concurrently it is called?
A: Multithreading.
B: Multiprocessing.
C: Multitasking.
D: Multiprogramming.

CBK 3: Security Engineering
Source: ThorTeaches.com practice tests

Answer


A: Multithreading is the ability of a central processing unit (CPU) or a single core in a multi-core processor to execute multiple processes or threads concurrently, appropriately supported by the operating system.

show less

IT security trainer.
Sharing my knowledge, to help you reach your IT certification goals.
CISSP, C|EH, PMP, CCNP, CompTIA Security+, SCP, CCNA-Security, CCNA, et. Al.

You may also like

57 Comments

  1. Answer: C: Multitasking

    Multiprogramming
    In a multiprogramming system there are one or more programs loaded in main memory which are ready to execute. Only one program at a time is able to get the CPU for executing its instructions (i.e., there is at most one process running on the system) while all the others are waiting their turn.
    The main idea of multiprogramming is to maximize the use of CPU time. Indeed, suppose the currently running process is performing an I/O task (which, by definition, does not need the CPU to be accomplished). Then, the OS may interrupt that process and give the control to one of the other in-main-memory programs that are ready to execute (i.e. process context switching). In this way, no CPU time is wasted by the system waiting for the I/O task to be completed, and a running process keeps executing until either it voluntarily releases the CPU or when it blocks for an I/O operation. Therefore, the ultimate goal of multiprogramming is to keep the CPU busy as long as there are processes ready to execute.
    Note that in order for such a system to function properly, the OS must be able to load multiple programs into separate areas of the main memory and provide the required protection to avoid the chance of one process being modified by another one. Other problems that need to be addressed when having multiple programs in memory is fragmentation as programs enter or leave the main memory. Another issue that needs to be handled as well is that large programs may not fit at once in memory which can be solved by using pagination and virtual memory. Please, refer to this article for more details on that.
    Finally, note that if there are N ready processes and all of those are highly CPU-bound (i.e., they mostly execute CPU tasks and none or very few I/O operations), in the very worst case one program might wait all the other N-1 ones to complete before executing.

    Multiprocessing
    Multiprocessing sometimes refers to executing multiple processes (programs) at the same time. This might be misleading because we have already introduced the term “multiprogramming” to describe that before.
    In fact, multiprocessing refers to the hardware (i.e., the CPU units) rather than the software (i.e., running processes). If the underlying hardware provides more than one processor then that is multiprocessing. Several variations on the basic scheme exist, e.g., multiple cores on one die or multiple dies in one package or multiple packages in one system.
    Anyway, a system can be both multiprogrammed by having multiple programs running at the same time and multiprocessing by having more than one physical processor.

    Multitasking
    Multitasking has the same meaning of multiprogramming but in a more general sense, as it refers to having multiple (programs, processes, tasks, threads) running at the same time. This term is used in modern operating systems when multiple tasks share a common processing resource (e.g., CPU and Memory). At any time the CPU is executing one task only while other tasks waiting their turn. The illusion of parallelism is achieved when the CPU is reassigned to another task (i.e. process or thread context switching).
    There are subtle differences between multitasking and multiprogramming. A task in a multitasking operating system is not a whole application program but it can also refer to a “thread of execution” when one process is divided into sub-tasks. Each smaller task does not hijack the CPU until it finishes like in the older multiprogramming but rather a fair share amount of the CPU time called quantum.
    Just to make it easy to remember, both multiprogramming and multitasking operating systems are (CPU) time sharing systems. However, while in multiprogramming (older OSs) one program as a whole keeps running until it blocks, in multitasking (modern OSs) time sharing is best manifested because each running process takes only a fair quantum of the CPU time.

    Multithreading
    Up to now, we have talked about multiprogramming as a way to allow multiple programs being resident in main memory and (apparently) running at the same time. Then, multitasking refers to multiple tasks running (apparently) simultaneously by sharing the CPU time. Finally, multiprocessing describes systems having multiple CPUs. So, where does multithreading come in?
    Multithreading is an execution model that allows a single process to have multiple code segments (i.e., threads) run concurrently within the “context” of that process. You can think of threads as child processes that share the parent process resources but execute independently. Multiple threads of a single process can share the CPU in a single CPU system or (purely) run in parallel in a multiprocessing system
    Why should we need to have multiple threads of execution within a single process context?
    Well, consider for instance a GUI application where the user can issue a command that require long time to finish (e.g., a complex mathematical computation). Unless you design this command to be run in a separate execution thread you will not be able to interact with the main application GUI (e.g., to update a progress bar) because it is going to be unresponsive while the calculation is taking place.
    Of course, designing multithreaded/concurrent applications requires the programmer to handle situations that simply don’t occur when developing single-threaded, sequential applications. For instance, when two or more threads try to access and modify a shared resource (race conditions), the programmer must be sure this will not leave the system in an inconsistent or deadlock state. Typically, this thread synchronization is solved using OS primitives, such as mutexes and sempaphores.

    https://gabrieletolomei.wordpress.com/miscellanea/operating-systems/multiprogramming-multiprocessing-multitasking-multithreading/

  2. Interesting question (it’s simple and require understanding). It mentions only ONE CPU then it does not relate to multiprocessing. Multiprogramming is also not a consideration because it related to the obsolete technology of mainframe. Multithreading addresses concurrent threads inside a process. The correct answer should be C – multitasking.

    1. I like your analysis, but this question relies on some vagueries of the english language. Note the “can execute concurrently” part of the question… What is the “concurrent execution” – multiple processes per clock tick – called? Hyperthreading. Remember that all CPUs can multitask – as this is a function of OS. But running *concurrent* processes – meaning lieterally “at the same time” on the die level is not multitasking… it’s multi threading. Try this: analyse the question with an eye towards proving the hyperthreading theory and see what you get.

    2. Mickey Foo Yes I knew the links. But if there is just only question and answer, between right and wrong and without reasoning, reference and even thoughts, how can I find such a interesting discussion like this with you. Anyway, thank you 🙂

    1. Process:

      A process is an instance of a computer program that is being executed. It contains the program code and its current activity. Depending on the operating system (OS), a process may be made up of multiple threads of execution that execute instructions concurrently. Process-based multitasking enables you to run the Java compiler at the same time that you are using a text editor. In employing multiple processes with a single CPU,context switching between various memory context is used. Each process has a complete set of its own variables.

      Task:

      A task is a set of program instructions that are loaded in memory.

    2. Before the terms “thread” or “multithreading” were even invented a multitask capable OS could run multiple processes (tasks) simultaneously.

      A process in the current age basically is a container for threads.

      Run the ps command in linux or get-process / tasklist in windows powershell and you will see what I mean.

      Multitasking is executing different processes at the same time and multithreading is executing different threads of a process (or processes) at the same time.

      Also in multitasking we allocate separate hardware resources to processes and in multithreading threads that belong to the same process share the same memory and resources as the process.

      I am a Software Engineer for 20 years and I can talk for hours on computer architecture.

      The issue here for us is to determine what the (ISC)2 wants to hear as a correct answer and not argue between us for something that is already very well established in computer science.

    3. Thanks, Christos Sarris, in question, it is explicitly asked about the multi-processes running at the same time, not about multi-tasks.
      Multitasking: let CPU to execute multiple tasks at the same time.
      Multithreading: let CPU to execute multiple threads of a process simultaneously.
      I could be wrong, but with my very limited knowledge, I’ll go with option `A`.

    4. Muhammad Mohsin Yasin I may be wrong as well based by how (ISC)2 interpreted the terms.

      It is not about being right or wrong, but to exchange thoughts and opinions between us, listen to the advice of expert teachers like Thor and learn how to pass the exam.

      We will be colleagues in the future my friend, so disagreeing in something does not change my respect on your opinion.

  3. A single cpu? with a single core? Or a multi core cpu?
    Hmm, could be a few of them, processes/tasks can be the same thing. Could multithreading be dependent on the chipset? Once it’s kicked off, apart from the way memory is handled, it’s effectively multitask/processing.

    Not sure about this one.

Leave a Reply