실행기
실행기는 컴퓨터 과학 및 정보기술 분야에서 특정 작업, 프로그램 또는 명령을 시작하고 수행하는 역할을 하는 소프트웨어 또는 하드웨어 구성 요소를 가리킨다. 가장 일반적인 의미에서는 사용자가 응용 프로그램을 실행시키기 위해 사용하는 인터페이스나 도구를 의미하며, 더 넓게는 특정 코드를 해석하고 작동시키는 모든 것을 포함할 수 있다.
개요
실행기는 사용자와 컴퓨터 시스템 또는 다른 프로그램 간의 상호작용을 통해 원하는 기능을 수행하도록 지시하는 매개체 역할을 한다. 운영체제 수준에서 실행기는 사용자가 설치된 프로그램을 쉽게 찾고 실행할 수 있도록 돕는 주요 구성 요소이며, 소프트웨어 개발 분야에서는 특정 태스크나 코드를 관리하고 실행하는 모듈을 의미하기도 한다.운영체제에서의 실행기
대부분의 현대 운영체제는 사용자가 응용 프로그램을 시작할 수 있는 다양한 형태의 실행기를 제공한다. 이러한 실행기는 사용자의 편의성을 높이고, 설치된 프로그램을 체계적으로 관리할 수 있게 해준다.- 메뉴 기반 실행기: 윈도우의 시작 메뉴, 리눅스의 다양한 데스크톱 환경(GNOME, KDE 등)의 애플리케이션 메뉴가 여기에 해당한다. 프로그램 목록을 탐색하거나 검색하여 실행한다.
- 독(Dock) 또는 런치패드(Launchpad): macOS의 Dock이나 Launchpad, 모바일 운영체제(Android, iOS)의 홈 화면 및 앱 서랍 등은 자주 사용하는 앱을 쉽게 접근하고 실행할 수 있도록 시각적인 아이콘 목록 형태로 제공한다.
- 명령 줄 인터페이스 (CLI): 윈도우의 명령 프롬프트(cmd), 파워셸(PowerShell), 유닉스/리눅스 계열의 셸(Bash, Zsh 등)은 사용자가 직접 명령어를 입력하여 프로그램을 실행하거나 스크립트를 수행하는 방식의 실행기이다.
- 파일 탐색기/관리자: 파일 탐색기(Windows Explorer), 파인더(macOS Finder) 등은 실행 가능한 파일(.exe, .app 등)을 직접 클릭하여 실행시키는 기능을 제공한다.
- 빠른 실행 또는 검색 기반 실행기: 운영체제에 내장되거나 별도의 유틸리티로 제공되는 것으로, 키보드 단축키를 누른 후 프로그램 이름의 일부를 입력하여 빠르게 검색하고 실행하는 방식이다 (예: 윈도우의 "실행" 대화상자, Spotlight 검색, Alfred 등).
소프트웨어 개발에서의 실행기
소프트웨어 개발 맥락에서 실행기는 특정 코드 조각, 함수, 스레드 또는 태스크를 관리하고 실행하는 구성 요소를 의미한다.- 스레드 풀 실행기 (Thread Pool Executor): 병렬 처리를 위해 스레드를 미리 생성해 두고, 태스크가 들어오면 해당 스레드에 할당하여 실행하는 방식이다. Java의
java.util.concurrent.ExecutorService
인터페이스를 구현한 클래스들이 대표적이다. - 태스크 러너 (Task Runner): 웹 개발 등에서 자주 사용되며, 코드 컴파일, 압축, 테스트 실행 등 반복적인 개발 관련 태스크를 자동화하고 실행하는 도구이다 (예: Grunt, Gulp, npm scripts 등). 넓은 의미에서 이러한 도구들도 특정 태스크를 실행하는 실행기로 볼 수 있다.
- 런타임 환경 (Runtime Environment): 특정 프로그래밍 언어로 작성된 코드를 해석하고 실행하는 환경 전체를 실행기로 볼 수도 있다 (예: Java Virtual Machine(JVM), Node.js 런타임).
관련 개념
- 프로세스: 실행기는 일반적으로 하나 이상의 프로세스를 생성하거나 관리한다. 실행기가 실행하는 각각의 프로그램 인스턴스는 독립적인 프로세스로서 운영체제에 의해 관리된다.
- 런처 (Launcher): 운영체제 수준에서 응용 프로그램을 시작하는 데 특화된 실행기를 흔히 런처라고 부른다.
- 스케줄러: 실행할 태스크나 프로세스의 순서, 시점 등을 결정하는 역할을 하며, 실행기는 스케줄러의 결정에 따라 실제 실행을 수행한다.