실행(컴퓨팅)
Execution (computing)프로그램 실행 |
---|
일반적인 개념 |
코드의 종류 |
컴파일 전략 |
주목할 만한 런타임 |
주목할 만한 컴파일러 및 툴 체인 |
컴퓨터 및 소프트웨어 엔지니어링에서 실행은 컴퓨터 또는 가상 시스템이 컴퓨터 프로그램의 명령을 읽고 실행하는 프로세스입니다.프로그램의 각 명령은 특정 문제를 해결하기 위해 수행해야 하는 특정 작업에 대한 설명입니다.실행에는 제어 유닛에 의해 실행되는 각 명령에 대해 '가져오기-디코딩-실행' 사이클을 반복하여 따라야 합니다.실행기가 지시를 따르면서 이들 명령의 의미에 따라 특정 효과가 발생한다.
컴퓨터를 위한 프로그램은 인간의 상호작용 없이 배치 프로세스로 실행되거나 사용자가 인터프리터의 인터랙티브 세션에서 명령을 입력할 수 있다.이 경우 "명령어"는 단순히 프로그램 명령어로 실행이 체인으로 연결되어 있습니다.
run이라는 용어는 거의 동의어로 사용됩니다."실행"과 "실행"의 관련 의미는 "애플리케이션을 실행해 주세요"와 같이 사용자가 프로그램을 시작(또는 실행 또는 호출)하는 특정 작업을 의미합니다.
과정
프로그램을 실행하기 전에 먼저 작성해야 합니다.이것은 보통 소스 코드로 이루어지며, 그 후 컴파일 시(링크 시 정적 링크)에 실행 파일을 생성하기 위해 컴파일됩니다.이 실행 파일은, 대부분의 경우, operating system에 의해서 기동됩니다.이러한 순서는, 프로그램을 메모리에 로드해, 다이나믹 링크를 실행해, 프로그램의 엔트리 포인트로 제어를 이동해 실행을 개시합니다.이러한 순서는, operating system의 애플리케이션 바이너리 인터페이스에 의존합니다.이 시점에서 실행이 시작되고 프로그램이 실행 시간에 들어갑니다.그 후 프로그램은 종료될 때까지 실행됩니다(일반 종료 또는 크래시).
실행 파일
실행 가능 코드, 실행 가능 파일 또는 실행 가능 프로그램(단순히 실행 가능 파일 또는 바이너리라고도 함)은 프로그램이 의미 있게 해석(파싱)해야 하는 데이터 파일과 달리 컴퓨터가 "부호화된 명령에 따라 지시된 작업을 수행"[1]하도록 하는 명령 및 데이터 목록입니다.
정확한 해석은 용도에 따라 다릅니다."Instructions"는 전통적으로 물리적 CPU에 [2]대한 기계 코드 명령을 의미합니다.상황에 따라서는 스크립트 명령이 포함된 파일(바이트 코드 등)도 실행 가능한 것으로 간주될 수 있습니다.
실행 상황
실행이 실행되는 컨텍스트는 매우 중요합니다.베어 머신에서 실행되는 프로그램은 거의 없습니다.프로그램에는 일반적으로 실행 시 사용 가능한 리소스에 대한 암묵적이고 명시적인 가정이 포함됩니다.대부분의 프로그램은 컴퓨터 자체에서 직접 제공되지 않는 중요한 서비스를 제공하는 소스 언어에 고유한 멀티태스킹 운영 체제 및 런타임 라이브러리에서 실행됩니다.예를 들어, 이러한 지원 환경은 보통 프로그램을 컴퓨터 주변기기의 직접 조작으로부터 분리하여 보다 일반적인 추상적인 서비스를 제공합니다.
콘텍스트 스위칭
프로그램 및 인터럽트 핸들러가 간섭 없이 동작하여 동일한 하드웨어 메모리와 I/O시스템에 대한 액세스를 공유하기 위해서는 단일 CPU/MCU를 갖춘 디지털 시스템에서 실행되는 멀티태스킹 운영체제에서는 실행 중인 프로세스 데이터를 추적하기 위한 일종의 소프트웨어 및 하드웨어 설비가 필요합니다(메모리 페이지).e 주소, 등록부 등) 및 일시정지 전 상태로 저장 및 복구한다.이거는 컨텍스트스위칭에 [3]: 3.3 의해 실현됩니다.실행 중인 프로그램에는 프로세스 컨텍스트 ID(PCID)가 할당되는 경우가 많습니다.
Linux 기반 운영 체제에서 레지스터에 저장된 데이터 세트는 컨텍스트 [3]전환을 구현하기 위해 일반적으로 메모리의 프로세스 기술자에 저장됩니다.PCID도 사용됩니다.
런타임 시스템
런타임 환경이라고도 불리는 런타임 시스템은 주로 실행 [clarification needed]모델의 일부를 구현합니다.이는 런타임 시스템이 동작하는 프로그램의 런타임 라이프 사이클 단계와 혼동해서는 안 됩니다.런타임 시스템을 런타임 환경(RTE)과 구별하여 취급하는 경우, 첫 번째는 프로그래밍에 사용되는 애플리케이션 소프트웨어(IDE)의 특정 부분으로 정의될 수 있습니다.이것은 프로그래머에게 프로덕션(테스트 등) 중 프로그램을 실행하는 데 보다 편리한 환경을 제공하는 소프트웨어입니다.두 번째(RTE)는 프로그램 실행 시 사용할 수 있습니다.)는 앞서 언급한 런타임 시스템에서 실행되는 개발 프로그램에 적용되는 실행 모델의 바로 그 인스턴스가 될 것입니다.
대부분의 프로그래밍 언어에는 프로그램이 실행되는 환경을 제공하는 일종의 런타임 시스템이 있습니다.이 환경에서는 애플리케이션 메모리의 관리, 프로그램의 변수 액세스 방법, 프로시저 간의 파라미터 전달 메커니즘, 운영체제와의 인터페이스 등 다양한 문제에 대처할 수 있습니다.컴파일러는 올바른 코드를 생성하기 위해 특정 런타임 시스템에 따라 가정합니다.일반적으로 런타임 시스템은 스택과 힙의 셋업과 관리를 담당하며 가비지 컬렉션, 스레드 또는 [4]언어에 내장된 기타 동적 기능 등의 기능을 포함할 수 있습니다.
명령 사이클
명령 사이클(fetch-decode-execute cycle 또는 단순히 fetch-execute cycle이라고도 함)은 명령을 처리하기 위해 중앙 처리 장치(CPU)가 부팅부터 컴퓨터가 종료될 때까지 이어지는 사이클입니다.이 단계는 가져오기 단계, 디코딩 단계 및 실행 단계의 세 가지 주요 단계로 구성됩니다.
보다 단순한 CPU에서는 명령 사이클이 순차적으로 실행되며, 각 명령은 다음 명령이 시작되기 전에 처리된다.대부분의 최신 CPU에서 명령 사이클은 명령 파이프라인을 통해 동시에, 그리고 종종 병렬로 실행됩니다.다음 명령은 이전 명령이 완료되기 전에 처리되기 시작합니다.이것은 사이클이 다른 단계로 [5]분할되기 때문에 가능합니다.
통역사
프로그램을 실행하는 시스템을 프로그램 인터프리터라고 합니다.대략적으로 말하면, 통역사가 직접 프로그램을 실행한다.이는 프로그램을 실행하기 전에 한 언어에서 다른 언어로 변환하는 언어 번역기와 대조됩니다.
가상 머신
가상 머신(VM)은 컴퓨터 시스템의 가상화/에뮬레이션입니다.가상 시스템은 컴퓨터 아키텍처를 기반으로 하며 물리적 컴퓨터의 기능을 제공합니다.이러한 구현에는 전용 하드웨어, 소프트웨어 또는 조합이 포함될 수 있습니다.
가상 시스템은 다음과 같이 서로 다르며 기능에 따라 구성됩니다.
- 시스템 가상 머신(완전 가상화 VM이라고도 함)은 실제 머신을 대체할 수 있습니다.운영 체제 전체를 실행하는 데 필요한 기능을 제공합니다.하이퍼바이저는 네이티브 실행을 사용하여 하드웨어를 공유 및 관리하므로 서로 분리되어 있지만 동일한 물리적 머신에 존재하는 여러 환경이 허용됩니다.최신 하이퍼바이저는 하드웨어 지원 가상화, 가상화 고유의 하드웨어를 주로 호스트 CPU에서 사용합니다.
- 프로세스 가상 시스템은 플랫폼에 의존하지 않는 환경에서 컴퓨터 프로그램을 실행하도록 설계되었습니다.
QEMU나 비디오 게임 콘솔 에뮬레이터와 같은 일부 가상 머신 에뮬레이터는 다른 시스템 아키텍처를 에뮬레이트(또는 사실상 모방)하도록 설계되어 다른 CPU 또는 아키텍처용으로 작성된 소프트웨어 애플리케이션 및 운영 체제를 실행할 수 있습니다.운영체제 수준의 가상화를 통해 컴퓨터 리소스를 커널을 통해 분할할 수 있습니다.그 용어들은 보편적으로 교환할 수 있는 것은 아니다.
레퍼런스
- ^ "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.
- ^ Aho, Alfred V.; Lam, Monica Sin-Ling; Sethi, Ravi; Ullman, Jeffrey David (2007). Compilers: Principles, Techniques and Tools (2nd ed.). Boston, MA, USA: Pearson Education. p. 427. ISBN 978-0-321-48681-3.
- ^ Crystal Chen, Greg Novick and Kirk Shimano (2000). "Pipelining". Retrieved 2019-06-26.