fbpx
Wikipedia

Execution (computing)

Execution in computer and software engineering is the process by which a computer or virtual machine interpret and acts on the instructions of a computer program. Each instruction of a program is a description of a particular action which must be carried out, in order for a specific problem to be solved. Execution involves repeatedly following a "fetch–decode–execute" cycle for each instruction done by control unit. As the executing machine follows the instructions, specific effects are produced in accordance with the semantics of those instructions.

Programs for a computer may be executed in a batch process without human interaction or a user may type commands in an interactive session of an interpreter. In this case, the "commands" are simply program instructions, whose execution is chained together.

The term run is used almost synonymously. A related meaning of both "to run" and "to execute" refers to the specific action of a user starting (or launching or invoking) a program, as in "Please run the application."

Process edit

Prior to execution, a program must first be written. This is generally done in source code, which is then compiled at compile time (and statically linked at link time) to produce an executable. This executable is then invoked, most often by an operating system, which loads the program into memory (load time), possibly performs dynamic linking, and then begins execution by moving control to the entry point of the program; all these steps depend on the Application Binary Interface of the operating system. At this point execution begins and the program enters run time. The program then runs until it ends, either normal termination or a crash.

Executable edit

Executable code, an executable file, or an executable program, sometimes simply referred to as an executable or binary, is a list of instructions and data to cause a computer "to perform indicated tasks according to encoded instructions",[1] as opposed to a data file that must be interpreted (parsed) by a program to be meaningful.

The exact interpretation depends upon the use. "Instructions" is traditionally taken to mean machine code instructions for a physical CPU.[2] In some contexts, a file containing scripting instructions (such as bytecode) may also be considered executable.

Context of execution edit

The context in which execution takes place is crucial. Very few programs execute on a bare machine. Programs usually contain implicit and explicit assumptions about resources available at the time of execution. Most programs execute within multitasking operating system and run-time libraries specific to the source language that provide crucial services not supplied directly by the computer itself. This supportive environment, for instance, usually decouples a program from direct manipulation of the computer peripherals, providing more general, abstract services instead.

Context switching edit

In order for programs and interrupt handlers to work without interference and share the same hardware memory and access to the I/O system, in a multitasking operating systems running on a digital system with a single CPU/MCU it is required to have some sort of software and hardware facilities to keep track of an executing processes data (memory page addresses, registers etc.) and to save and recover them back to the state they were in before they were suspended. This is achieved by a context switching.[3]: 3.3 [4] The running programs are often assigned a Process Context IDentifiers (PCID).

In Linux-based operating systems, a set of data stored in registers is usually saved into a process descriptor in memory to implement switching of context.[3] PCIDs are also used.

Runtime edit

Runtime, run time, or execution time is the final phase of a computer program's life cycle, in which the code is being executed on the computer's central processing unit (CPU) as machine code. In other words, "runtime" is the running phase of a program.

A runtime error is detected after or during the execution (running state) of a program, whereas a compile-time error is detected by the compiler before the program is ever executed. Type checking, register allocation, code generation, and code optimization are typically done at compile time, but may be done at runtime depending on the particular language and compiler. Many other runtime errors exist and are handled differently by different programming languages, such as division by zero errors, domain errors, array subscript out of bounds errors, arithmetic underflow errors, several types of underflow and overflow errors, and many other runtime errors generally considered as software bugs which may or may not be caught and handled by any particular computer language.

Implementation details edit

When a program is to be executed, a loader first performs the necessary memory setup and links the program with any dynamically linked libraries it needs, and then the execution begins starting from the program's entry point. In some cases, a language or implementation will have these tasks done by the language runtime instead, though this is unusual in mainstream languages on common consumer operating systems.

Some program debugging can only be performed (or is more efficient or accurate when performed) at runtime. Logic errors and array bounds checking are examples. For this reason, some programming bugs are not discovered until the program is tested in a production environment with real data, despite sophisticated compile-time checking and pre-release testing. In this case, the end-user may encounter a "runtime error" message.

Application errors (exceptions) edit

Exception handling is one language feature designed to handle runtime errors, providing a structured way to catch completely unexpected situations as well as predictable errors or unusual results without the amount of inline error checking required of languages without it. More recent advancements in runtime engines enable automated exception handling which provides "root-cause" debug information for every exception of interest and is implemented independent of the source code, by attaching a special software product to the runtime engine.

Runtime system edit

A runtime system, also called runtime environment, primarily implements portions of an execution model.[clarification needed] This is not to be confused with the runtime lifecycle phase of a program, during which the runtime system is in operation. When treating the runtime system as distinct from the runtime environment (RTE), the first may be defined as a specific part of the application software (IDE) used for programming, a piece of software that provides the programmer a more convenient environment for running programs during their production (testing and similar), while the second (RTE) would be the very instance of an execution model being applied to the developed program which is itself then run in the aforementioned runtime system.

Most programming languages have some form of runtime system that provides an environment in which programs run. This environment may address a number of issues including the management of application memory, how the program accesses variables, mechanisms for passing parameters between procedures, interfacing with the operating system, and otherwise. The compiler makes assumptions depending on the specific runtime system to generate correct code. Typically the runtime system will have some responsibility for setting up and managing the stack and heap, and may include features such as garbage collection, threads or other dynamic features built into the language.[5]

Instruction cycle edit

The instruction cycle (also known as the fetch–decode–execute cycle, or simply the fetch-execute cycle) is the cycle that the central processing unit (CPU) follows from boot-up until the computer has shut down in order to process instructions. It is composed of three main stages: the fetch stage, the decode stage, and the execute stage.

 
This is a simple diagram illustrating the individual stages of the fetch-decode-execute cycle.

In simpler CPUs, the instruction cycle is executed sequentially, each instruction being processed before the next one is started. In most modern CPUs, the instruction cycles are instead executed concurrently, and often in parallel, through an instruction pipeline: the next instruction starts being processed before the previous instruction has finished, which is possible because the cycle is broken up into separate steps.[6]

Interpreter edit

A system that executes a program is called an interpreter of the program. Loosely speaking, an interpreter directly executes a program. This contrasts with a language translator that converts a program from one language to another before it is executed.

Virtual machine edit

A virtual machine (VM) is the virtualization/emulation of a computer system. Virtual machines are based on computer architectures and provide functionality of a physical computer. Their implementations may involve specialized hardware, software, or a combination.

Virtual machines differ and are organized by their function, shown here:

Some virtual machine emulators, such as QEMU and video game console emulators, are designed to also emulate (or "virtually imitate") different system architectures thus allowing execution of software applications and operating systems written for another CPU or architecture. OS-level virtualization allows the resources of a computer to be partitioned via the kernel. The terms are not universally interchangeable.

See also edit

References edit

  1. ^ "executable". Merriam-Webster's Online Dictionary. Merriam-Webster. Retrieved 2008-07-19.
  2. ^ "Machine Instructions". GeeksforGeeks. 2015-11-03. Retrieved 2019-09-18.
  3. ^ a b Bovet, Daniel P. (2005). Understanding the Linux Kernel. Marco Cesati (3 ed.). Sevastopol, CA: O'Reilly. ISBN 0-596-00565-2. OCLC 64549743.
  4. ^ "Difference between Swapping and Context Switching". GeeksforGeeks. 2021-06-10. Retrieved 2022-08-10.
  5. ^ Aho, Alfred V.; Lam, Monica Sin-Ling; Sethi, Ravi; Ullman, Jeffrey David (2007). Compilers: Principles, Techniques and Tools (2nd ed.). Boston, MA, US: Pearson Education. p. 427. ISBN 978-0-321-48681-3.
  6. ^ Crystal Chen, Greg Novick and Kirk Shimano (2000). "Pipelining". Retrieved 2019-06-26.

execution, computing, execution, computer, software, engineering, process, which, computer, virtual, machine, interpret, acts, instructions, computer, program, each, instruction, program, description, particular, action, which, must, carried, order, specific, . Execution in computer and software engineering is the process by which a computer or virtual machine interpret and acts on the instructions of a computer program Each instruction of a program is a description of a particular action which must be carried out in order for a specific problem to be solved Execution involves repeatedly following a fetch decode execute cycle for each instruction done by control unit As the executing machine follows the instructions specific effects are produced in accordance with the semantics of those instructions Programs for a computer may be executed in a batch process without human interaction or a user may type commands in an interactive session of an interpreter In this case the commands are simply program instructions whose execution is chained together The term run is used almost synonymously A related meaning of both to run and to execute refers to the specific action of a user starting or launching or invoking a program as in Please run the application Contents 1 Process 2 Executable 3 Context of execution 3 1 Context switching 4 Runtime 4 1 Implementation details 4 2 Application errors exceptions 5 Runtime system 6 Instruction cycle 7 Interpreter 8 Virtual machine 9 See also 10 ReferencesProcess editFurther information Program lifecycle phase Prior to execution a program must first be written This is generally done in source code which is then compiled at compile time and statically linked at link time to produce an executable This executable is then invoked most often by an operating system which loads the program into memory load time possibly performs dynamic linking and then begins execution by moving control to the entry point of the program all these steps depend on the Application Binary Interface of the operating system At this point execution begins and the program enters run time The program then runs until it ends either normal termination or a crash Executable editMain article Executable Executable code an executable file or an executable program sometimes simply referred to as an executable or binary is a list of instructions and data to cause a computer to perform indicated tasks according to encoded instructions 1 as opposed to a data file that must be interpreted parsed by a program to be meaningful The exact interpretation depends upon the use Instructions is traditionally taken to mean machine code instructions for a physical CPU 2 In some contexts a file containing scripting instructions such as bytecode may also be considered executable Context of execution editThe context in which execution takes place is crucial Very few programs execute on a bare machine Programs usually contain implicit and explicit assumptions about resources available at the time of execution Most programs execute within multitasking operating system and run time libraries specific to the source language that provide crucial services not supplied directly by the computer itself This supportive environment for instance usually decouples a program from direct manipulation of the computer peripherals providing more general abstract services instead Context switching edit Main article Context switch In order for programs and interrupt handlers to work without interference and share the same hardware memory and access to the I O system in a multitasking operating systems running on a digital system with a single CPU MCU it is required to have some sort of software and hardware facilities to keep track of an executing processes data memory page addresses registers etc and to save and recover them back to the state they were in before they were suspended This is achieved by a context switching 3 3 3 4 The running programs are often assigned a Process Context IDentifiers PCID In Linux based operating systems a set of data stored in registers is usually saved into a process descriptor in memory to implement switching of context 3 PCIDs are also used Runtime editRuntime run time or execution time is the final phase of a computer program s life cycle in which the code is being executed on the computer s central processing unit CPU as machine code In other words runtime is the running phase of a program A runtime error is detected after or during the execution running state of a program whereas a compile time error is detected by the compiler before the program is ever executed Type checking register allocation code generation and code optimization are typically done at compile time but may be done at runtime depending on the particular language and compiler Many other runtime errors exist and are handled differently by different programming languages such as division by zero errors domain errors array subscript out of bounds errors arithmetic underflow errors several types of underflow and overflow errors and many other runtime errors generally considered as software bugs which may or may not be caught and handled by any particular computer language Implementation details edit When a program is to be executed a loader first performs the necessary memory setup and links the program with any dynamically linked libraries it needs and then the execution begins starting from the program s entry point In some cases a language or implementation will have these tasks done by the language runtime instead though this is unusual in mainstream languages on common consumer operating systems Some program debugging can only be performed or is more efficient or accurate when performed at runtime Logic errors and array bounds checking are examples For this reason some programming bugs are not discovered until the program is tested in a production environment with real data despite sophisticated compile time checking and pre release testing In this case the end user may encounter a runtime error message Application errors exceptions edit Exception handling is one language feature designed to handle runtime errors providing a structured way to catch completely unexpected situations as well as predictable errors or unusual results without the amount of inline error checking required of languages without it More recent advancements in runtime engines enable automated exception handling which provides root cause debug information for every exception of interest and is implemented independent of the source code by attaching a special software product to the runtime engine Runtime system editMain article Runtime system A runtime system also called runtime environment primarily implements portions of an execution model clarification needed This is not to be confused with the runtime lifecycle phase of a program during which the runtime system is in operation When treating the runtime system as distinct from the runtime environment RTE the first may be defined as a specific part of the application software IDE used for programming a piece of software that provides the programmer a more convenient environment for running programs during their production testing and similar while the second RTE would be the very instance of an execution model being applied to the developed program which is itself then run in the aforementioned runtime system Most programming languages have some form of runtime system that provides an environment in which programs run This environment may address a number of issues including the management of application memory how the program accesses variables mechanisms for passing parameters between procedures interfacing with the operating system and otherwise The compiler makes assumptions depending on the specific runtime system to generate correct code Typically the runtime system will have some responsibility for setting up and managing the stack and heap and may include features such as garbage collection threads or other dynamic features built into the language 5 Instruction cycle editMain article Instruction cycle The instruction cycle also known as the fetch decode execute cycle or simply the fetch execute cycle is the cycle that the central processing unit CPU follows from boot up until the computer has shut down in order to process instructions It is composed of three main stages the fetch stage the decode stage and the execute stage nbsp This is a simple diagram illustrating the individual stages of the fetch decode execute cycle In simpler CPUs the instruction cycle is executed sequentially each instruction being processed before the next one is started In most modern CPUs the instruction cycles are instead executed concurrently and often in parallel through an instruction pipeline the next instruction starts being processed before the previous instruction has finished which is possible because the cycle is broken up into separate steps 6 Interpreter editMain article Interpreter computing A system that executes a program is called an interpreter of the program Loosely speaking an interpreter directly executes a program This contrasts with a language translator that converts a program from one language to another before it is executed Virtual machine editMain article Virtual machine A virtual machine VM is the virtualization emulation of a computer system Virtual machines are based on computer architectures and provide functionality of a physical computer Their implementations may involve specialized hardware software or a combination Virtual machines differ and are organized by their function shown here System virtual machines also termed full virtualization VMs provide a substitute for a real machine They provide functionality needed to execute entire operating systems A hypervisor uses native execution to share and manage hardware allowing for multiple environments which are isolated from one another yet exist on the same physical machine Modern hypervisors use hardware assisted virtualization virtualization specific hardware primarily from the host CPUs Process virtual machines are designed to execute computer programs in a platform independent environment Some virtual machine emulators such as QEMU and video game console emulators are designed to also emulate or virtually imitate different system architectures thus allowing execution of software applications and operating systems written for another CPU or architecture OS level virtualization allows the resources of a computer to be partitioned via the kernel The terms are not universally interchangeable See also editExecutable Run time system Runtime program phase Program counterReferences edit executable Merriam Webster s Online Dictionary Merriam Webster Retrieved 2008 07 19 Machine Instructions GeeksforGeeks 2015 11 03 Retrieved 2019 09 18 a b Bovet Daniel P 2005 Understanding the Linux Kernel Marco Cesati 3 ed Sevastopol CA O Reilly ISBN 0 596 00565 2 OCLC 64549743 Difference between Swapping and Context Switching GeeksforGeeks 2021 06 10 Retrieved 2022 08 10 Aho Alfred V Lam Monica Sin Ling Sethi Ravi Ullman Jeffrey David 2007 Compilers Principles Techniques and Tools 2nd ed Boston MA US Pearson Education p 427 ISBN 978 0 321 48681 3 Crystal Chen Greg Novick and Kirk Shimano 2000 Pipelining Retrieved 2019 06 26 Retrieved from https en wikipedia org w index php title Execution computing amp oldid 1217805119 Runtime, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.