https://www.youtube.com/watch?v=QmtYKZC0lMU&list=PLcXyemr8ZeoT-_8yBc_p_lVwRRqUaN8ET&index=6
주요 개념:
프로세스와 CPU: 프로세스는 실행 중인 프로그램을 의미하며, CPU는 이 프로세스의 명령어를 처리하는 연산 장치입니다. CPU는 메인 메모리에서 대기 중인 프로세스를 순차적으로 실행합니다.
단일 프로세스 시스템: 초기 시스템에서는 한 번에 하나의 프로그램만 실행할 수 있었고, 이 시스템은 CPU의 효율적인 사용에 한계가 있었습니다.
멀티프로그래밍: 여러 프로세스를 메모리에 올려놓고 I/O 작업 중인 프로세스를 대기하는 동안 다른 프로세스를 CPU에서 실행하는 방식입니다. 이를 통해 CPU의 사용률을 극대화하지만, 여전히 CPU가 긴 시간 한 프로세스에 묶이면 다른 프로세스는 대기해야 한다는 단점이 있었습니다.
멀티태스킹: 이 문제를 해결하기 위해 등장한 개념으로, CPU 시간을 아주아주 짧게 나누어 여러 프로세스를 번갈아가며 실행함으로써 사용자는 여러 프로그램이 동시에 실행되는 듯한 느낌을 받게 됩니다. 이는 응답 시간을 최소화하는 데 목적이 있습니다.
스레드와 멀티스레딩: 멀티태스킹 시스템에서는 한 프로세스 내에서 여러 스레드가 동시에 실행될 수 있도록 지원하며, 각 스레드는 CPU에서 실행되는 단위로 동작합니다. 같은 프로세스 내의 스레드끼리는 메모리 영역을 공유하여 데이터 공유가 용이하지만, 각 스레드는 자신의 고유한 스택을 가집니다. 이를 통해 한 프로세스가 여러 작업을 병렬로 처리할 수 있습니다.
멀티프로세싱: 두 개 이상의 CPU나 코어를 활용하는 시스템을 말하며, CPU 코어가 여러 개인 시스템에서 여러 프로세스 또는 스레드가 동시에 실행될 수 있는 시스템 구조를 의미합니다.
프로세스와 스레드의 개념을 시스템의 발전 과정에 따라 정리해보겠습니다:
현대의 컴퓨터 시스템은 멀티태스킹, 멀티스레딩, 멀티프로세싱이 모두 적용된 형태로 동작합니다.