프로세스 & 스레드

SSamYang·2024년 10월 20일

https://www.youtube.com/watch?v=QmtYKZC0lMU&list=PLcXyemr8ZeoT-_8yBc_p_lVwRRqUaN8ET&index=6

주요 개념:

  • 프로세스: 실행 중인 프로그램으로, 독립된 메모리 공간 할당
  • 스레드: CPU에서 실행되는 단위, 같은 프로세스의 메모리 공간 공유
  • CPU: 명령어를 실행하는 연산 장치
  • I/O: 입출력 작업 (파일, 네트워크, 주변기기 등)

프로세스와 CPU: 프로세스는 실행 중인 프로그램을 의미하며, CPU는 이 프로세스의 명령어를 처리하는 연산 장치입니다. CPU는 메인 메모리에서 대기 중인 프로세스를 순차적으로 실행합니다.

단일 프로세스 시스템: 초기 시스템에서는 한 번에 하나의 프로그램만 실행할 수 있었고, 이 시스템은 CPU의 효율적인 사용에 한계가 있었습니다.

  • 한 번에 하나의 프로그램만 실행 가능
  • CPU 사용률이 비효율적 (I/O 작업 중 CPU가 유휴 상태)

멀티프로그래밍: 여러 프로세스를 메모리에 올려놓고 I/O 작업 중인 프로세스를 대기하는 동안 다른 프로세스를 CPU에서 실행하는 방식입니다. 이를 통해 CPU의 사용률을 극대화하지만, 여전히 CPU가 긴 시간 한 프로세스에 묶이면 다른 프로세스는 대기해야 한다는 단점이 있었습니다.

  • 여러 프로그램을 메모리에 올려놓고 동시 실행
  • CPU 사용률 극대화가 목적
  • 단점: CPU 사용 시간이 길면 다른 프로세스는 대기해야 함

멀티태스킹: 이 문제를 해결하기 위해 등장한 개념으로, CPU 시간을 아주아주 짧게 나누어 여러 프로세스를 번갈아가며 실행함으로써 사용자는 여러 프로그램이 동시에 실행되는 듯한 느낌을 받게 됩니다. 이는 응답 시간을 최소화하는 데 목적이 있습니다.

  • CPU 시간을 매우 짧은 단위(quantum)로 쪼개어 프로세스들이 번갈아 실행
  • 프로세스의 응답시간 최소화가 목적
  • 사용자에게 동시 실행되는 듯한 체감 제공
  • 단점
    • 하나의 프로세스가 동시에 여러 작업을 수행하지 못함
    • 프로세스를 여러 개 만들어서 동작시킬 수 있지만 큰 단점이 있음
      • 프로세스의 컨텍스트 스위칭은 무거운 작업
      • 프로세스끼리 데이터 공유가 까다로움

스레드와 멀티스레딩: 멀티태스킹 시스템에서는 한 프로세스 내에서 여러 스레드가 동시에 실행될 수 있도록 지원하며, 각 스레드는 CPU에서 실행되는 단위로 동작합니다. 같은 프로세스 내의 스레드끼리는 메모리 영역을 공유하여 데이터 공유가 용이하지만, 각 스레드는 자신의 고유한 스택을 가집니다. 이를 통해 한 프로세스가 여러 작업을 병렬로 처리할 수 있습니다.

  1. 멀티스레딩
  • 하나의 프로세스가 여러 작업을 동시에 실행
  • 장점:
    • 같은 프로세스의 스레드끼리 컨텍스트 스위칭이 가벼움
    • 스레드들은 프로세스의 메모리 영역 공유 (데이터 공유 용이)
    • 듀얼 코어 등에서 진정한 병렬 실행 가능

멀티프로세싱: 두 개 이상의 CPU나 코어를 활용하는 시스템을 말하며, CPU 코어가 여러 개인 시스템에서 여러 프로세스 또는 스레드가 동시에 실행될 수 있는 시스템 구조를 의미합니다.

프로세스와 스레드의 개념을 시스템의 발전 과정에 따라 정리해보겠습니다:

  1. 멀티프로세싱
  • 두 개 이상의 프로세서나 코어를 활용하는 시스템
  • 실제 병렬 처리 가능

현대의 컴퓨터 시스템은 멀티태스킹, 멀티스레딩, 멀티프로세싱이 모두 적용된 형태로 동작합니다.

profile
공부 기록장📕

0개의 댓글