프로그램(Program)
프로그램(Static Program)은 실행 가능한 코드의 모음으로, 디스크와 같은 저장 매체에 저장되어 있습니다. 이것은 정적인 상태로 존재하며, 사용자가 실행을 요청할 때까지 아무런 작업도 수행하지 않습니다. 프로그램은 명령어들과 함께 데이터와 메타데이터를 포함할 수 있습니다. 실행되기 위해서는 프로세스로 변환되어야 합니다.
프로세스(Process)
프로세스는 실행 중인 프로그램의 인스턴스입니다. 운영 시스템은 프로세스를 관리하여 CPU 시간, 메모리 공간 등의 자원을 할당합니다. 프로세스는 자신만의 주소 공간과 실행에 필요한 다양한 자원들(예: 파일 핸들, 네트워크 연결 등)을 가지며, 하나 이상의 쓰레드를 포함할 수 있습니다.
쓰레드(Thread)
쓰레드는 프로세스 내에서 실행되는 실행 흐름의 단위입니다. 각 쓰레드는 독립적인 실행 경로를 가지며, 프로세스의 자원을 공유합니다. 이를 통해 멀티쓰레딩을 사용하면 여러 작업을 병렬로 처리할 수 있어 효율성이 높아집니다. 각 쓰레드는 자신의 콜 스택을 가지고 있지만, 메모리나 파일 같은 프로세스 자원은 다른 쓰레드와 공유합니다.
쓰레드의 등장배경
과거에는 프로그램을 실행할 때 하나의 프로세스만 사용했지만, 프로그램의 복잡성이 증가하면서 이 방식은 한계를 드러냈습니다.단일 프로세스를 사용할 경우, 멀티태스킹이 어려워 작업이 끝날 때까지 다른 작업을 할 수 없었고, 여러 프로세스로 작업을 분할하면 메모리와 자원을 비효율적으로 사용해야 했습니다. 이러한 문제를 해결하기 위해 쓰레드가 도입되었습니다.
요약
- 프로그램: 저장 매체에 저장된 실행 가능한 코드의 집합, 실행되기 전의 정적 상태.
- 프로세스: 실행 중인 프로그램의 인스턴스로, 시스템 자원을 할당받아 작업을 수행.
- 쓰레드: 프로세스 내에서 작업 실행의 흐름을 담당하는 단위, 프로세스의 자원을 공유하면서 동시에 여러 작업 처리 가능.
프로그램(Program)
프로그램(Static Program)은 실행 가능한 코드의 모음으로, 디스크와 같은 저장 매체에 저장되어 있습니다. 이것은 정적인 상태로 존재하며, 사용자가 실행을 요청할 때까지 아무런 작업도 수행하지 않습니다. 프로그램은 명령어들과 함께 데이터와 메타데이터를 포함할 수 있습니다. 실행되기 위해서는 프로세스로 변환되어야 합니다.
프로세스(Process)
프로세스는 실행 중인 프로그램의 인스턴스입니다. 운영 시스템은 프로세스를 관리하여 CPU 시간, 메모리 공간 등의 자원을 할당합니다. 프로세스는 자신만의 주소 공간과 실행에 필요한 다양한 자원들(예: 파일 핸들, 네트워크 연결 등)을 가지며, 하나 이상의 쓰레드를 포함할 수 있습니다.
쓰레드(Thread)
쓰레드는 프로세스 내에서 실행되는 실행 흐름의 단위입니다. 각 쓰레드는 독립적인 실행 경로를 가지며, 프로세스의 자원을 공유합니다. 이를 통해 멀티쓰레딩을 사용하면 여러 작업을 병렬로 처리할 수 있어 효율성이 높아집니다. 각 쓰레드는 자신의 콜 스택을 가지고 있지만, 메모리나 파일 같은 프로세스 자원은 다른 쓰레드와 공유합니다.
쓰레드의 등장배경
과거에는 프로그램을 실행할 때 하나의 프로세스만 사용했지만, 프로그램의 복잡성이 증가하면서 이 방식은 한계를 드러냈습니다.단일 프로세스를 사용할 경우, 멀티태스킹이 어려워 작업이 끝날 때까지 다른 작업을 할 수 없었고, 여러 프로세스로 작업을 분할하면 메모리와 자원을 비효율적으로 사용해야 했습니다. 이러한 문제를 해결하기 위해 쓰레드가 도입되었습니다.
요약
- 프로그램: 저장 매체에 저장된 실행 가능한 코드의 집합, 실행되기 전의 정적 상태.
- 프로세스: 실행 중인 프로그램의 인스턴스로, 시스템 자원을 할당받아 작업을 수행.
- 쓰레드: 프로세스 내에서 작업 실행의 흐름을 담당하는 단위, 프로세스의 자원을 공유하면서 동시에 여러 작업 처리 가능.