What is the difference between a thread/process/task?

后端 未结 7 2113
离开以前
离开以前 2021-01-29 20:04

What is the difference between a thread/process/task?

相关标签:
7条回答
  • 2021-01-29 20:22

    from wiki clear explanation

    1:1 (Kernel-level threading)

    Threads created by the user are in 1-1 correspondence with schedulable entities in the kernel.[3] This is the simplest possible threading implementation. Win32 used this approach from the start. On Linux, the usual C library implements this approach (via the NPTL or older LinuxThreads). The same approach is used by Solaris, NetBSD and FreeBSD.

    N:1 (User-level threading)

    An N:1 model implies that all application-level threads map to a single kernel-level scheduled entity;[3] the kernel has no knowledge of the application threads. With this approach, context switching can be done very quickly and, in addition, it can be implemented even on simple kernels which do not support threading. One of the major drawbacks however is that it cannot benefit from the hardware acceleration on multi-threaded processors or multi-processor computers: there is never more than one thread being scheduled at the same time.[3] For example: If one of the threads needs to execute an I/O request, the whole process is blocked and the threading advantage cannot be utilized. The GNU Portable Threads uses User-level threading, as does State Threads.

    M:N (Hybrid threading)

    M:N maps some M number of application threads onto some N number of kernel entities,[3] or "virtual processors." This is a compromise between kernel-level ("1:1") and user-level ("N:1") threading. In general, "M:N" threading systems are more complex to implement than either kernel or user threads, because changes to both kernel and user-space code are required. In the M:N implementation, the threading library is responsible for scheduling user threads on the available schedulable entities; this makes context switching of threads very fast, as it avoids system calls. However, this increases complexity and the likelihood of priority inversion, as well as suboptimal scheduling without extensive (and expensive) coordination between the userland scheduler and the kernel scheduler.

    0 讨论(0)
  • 2021-01-29 20:26

    Wikipedia sums it up quite nicely:

    Threads compared with processes

    Threads differ from traditional multitasking operating system processes in that:

    • processes are typically independent, while threads exist as subsets of a process
    • processes carry considerable state information, whereas multiple threads within a process share state as well as memory and other resources
    • processes have separate address spaces, whereas threads share their address space
    • processes interact only through system-provided inter-process communication mechanisms.
    • Context switching between threads in the same process is typically faster than context switching between processes.

    Systems like Windows NT and OS/2 are said to have "cheap" threads and "expensive" processes; in other operating systems there is not so great a difference except the cost of address space switch which implies a TLB flush.

    Task and process are used synonymously.

    0 讨论(0)
  • 2021-01-29 20:30

    Short answer:

    A thread is a scheduling concept, it's what the CPU actually 'runs' (you don't run a process). A process needs at least one thread that the CPU/OS executes.

    A process is data organizational concept. Resources (e.g. memory for holding state, allowed address space, etc) are allocated for a process.

    0 讨论(0)
  • 2021-01-29 20:34

    At the minimum, a process or task needs the following:

    Shared among member Threads

    1.The code or firmware, the instructions These are in the memory and have addresses 2.The data that the code is manipulating The data starts in the memory and may be moved to registers. The data has addresses

    Proprietary to each Thread

    3.CPU and associated physical registers 4.A stack 5.Status information Processes (tasks) vs. Threads

    0 讨论(0)
  • 2021-01-29 20:35

    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.

    Thread:

    A thread is a basic unit of CPU utilization, consisting of a program counter, a stack, and a set of registers. A thread of execution results from a fork of a computer program into two or more concurrently running tasks. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process. Multiple threads can exist within the same process and share resources such as memory, while different processes do not share these resources. Example of threads in same process is automatic spell check and automatic saving of a file while writing. Threads are basically processes that run in the same memory context. Threads may share the same data while execution. Thread Diagram i.e. single thread vs multiple threads

    Task:

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

    0 讨论(0)
  • 2021-01-29 20:35

    To explain on simpler terms

    Process: process is the set of instruction as code which operates on related data and process has its own various state, sleeping, running, stopped etc. when program gets loaded into memory it becomes process. Each process has atleast one thread when CPU is allocated called sigled threaded program.

    Thread: thread is a portion of the process. more than one thread can exist as part of process. Thread has its own program area and memory area. Multiple threads inside one process can not access each other data. Process has to handle sycnhronization of threads to achieve the desirable behaviour.

    Task: Task is not widely concept used worldwide. when program instruction is loaded into memory people do call as process or task. Task and Process are synonyms nowadays.

    0 讨论(0)
提交回复
热议问题