2024. 4. 1. 00:03ㆍCS
1. 프로그램(Program)
프로세스와 스레드를 알기 위해서는 프로그램이 무엇인지 알 필요가 있습니다. 프로그램은 프로세스와 스레드에 비해 훨씬 친숙한 단어일 것입니다. 프로그램은 기본적으로 컴퓨터에게 수행할 작업을 알려주는 명령어들의 집합입니다. 이러한 명령어들은 C, JAVA, Python 등의 언어로 작성해서 완성됩니다.
아직 실행하지 않은 상태이기 때문에 정적 프로그램(Static Program)을 줄여서 프로그램이라고 부른 것입니다. 프로그램은 저장 매체에 저장되어 있지만, 이것이 실행되기 위해서는 CPU가 이러한 명령어들을 읽고 처리해야 합니다. 사용자가 프로그램을 실행하면, 프로그램은 디스크에서 메모리로 로드되며, 이때부터 프로그램은 프로세스의 형태로 컴퓨터에 의해 관리됩니다. 이러한 프로세스는 컴퓨터의 자원을 할당받아 작동하며, 필요에 따라 다른 프로세스와 정보를 교환하거나 동시에 여러 작업을 처리할 수 있습니다.
2. 프로세스(Process)
프로그램이 정적인 상태라면, 프로세스(Process)는 프로그램이 실행되어 돌아가는 동적인 상태를 말합니다.

우리가 프로그램을 강제 종료하기 위해 자주 접했던 작업관리자에서 실행 중인 프로그램을 확인할 수 있는데, 이것이 프로세스입니다.
3. 스레드(Thread)
스레드(Thread)는 프로세스 내에서 실행되는 실행의 단위입니다. 우리는 한 프로그램 내에서 여러 작업들을 동시에 할 수 있습니다. 이것이 가능하게 하는 것이 스레드입니다. 스레드는 프로세스의 자원을 공유하면서 동작하며, 각각 독립적인 실행흐름을 가집니다. 스레드는 프로세스보다 더 가벼운 실행 단위이므로, 리소스의 할당과 스케줄링이 더 효율적입니다. 이를 통해 멀티태스킹과 병렬처리가 가능해져, 응답성이 개선되고 처리 성능이 증가합니다.

멀티스레딩은 하나의 프로세스 내에서 여러 스레드를 동시에 실행하는 기술입니다. 이를 통해 컴퓨터의 다중 코어를 효율적으로 활용하여, 여러 작업을 병렬로 처리할 수 있습니다. 예를 들어, 웹 브라우저는 사용자 인터페이스를 관리하는 스레드, 웹 페이지를 로드하는 스레드, 멀티미디어를 처리하는 스레드 등 여러 스레드를 동시에 실행하여 사용자에게 더 빠르고 부드러운 경험을 제공할 수 있습니다.
'CS' 카테고리의 다른 글
| 비트(bit)란? (1) | 2024.05.01 |
|---|---|
| 자바(JAVA) 컬렉션(Collection) (1) | 2024.04.19 |
| [JAVA] Garbage Collection(가비지 컬렉션) (1) | 2024.04.13 |
| 메모리의 구조 (0) | 2024.04.09 |
| CPU 스케줄링 (0) | 2024.04.04 |