본문 바로가기

CS/Computer Science

멀티태스킹, 멀티 스레딩, 멀티 프로세싱

  • 프로그램: 컴퓨터에 실행할 수 있는 명령어들의 집합
  • 프로세스(process)
    • 컴퓨터에서 실행중인 프로그램 각각의 프로세슨느 독립된 메모리 공간(가상메모리) 할당, 명령어들과 데이터를 가짐
  • CPU: 명령어를 실행하는 연산 장치
  • 메인 메모리: 프로세스가 CPU에서 실행되기 위해 대기하는 곳
  • I/O(Input/Output)
    • 파일을 읽고 쓰기
    • 네트워크의 어디가과 데이터를 주고 받는것
    • 입출력 장치와 데이터를 주고 받는것
  1. 단일 프로세스 시스템 : 한번에 하나의 프로그램만 실행 -> CPU  사용률이 좋지 않음
  2. 멀티 프로그래밍: 단일 프로세스 시스템의 해결책으로 여러개 프로그램을 메모리에 올려 놓고 동시에 실행시키자
    1. I/O 작업 발생시 다른 프로세스가 CPU 점유
    2. 하나의 프로세스가  CPU 점유시간이 길어지면 다른 프로세스는 계속 대기
  3. 멀티 태스킹: 멀티 프로그래밍의 해결책으로 프로세스는 한번 CPU 사용할 때 아주 짧은 시간(quantum)만 CPU에서 실행되도록 하자
    1. 프로세스의 응답시간을 최소화하여 유저가 여러프로세스가 동시에 실행되고 있다고 느끼게 함
  4. 스레드(Thread) 등장 배경
    1. 하나의 프로세스가 동시에 여러 작업 수행 불가
    2. 프로세스의 컨텍스트 스위칭(CPU 점유를 교체하는 작업)은 매우 무거운 작업
    3. 프로세스 끼리 데이터 공유가 까다로움
    4. 듀얼코어의 등장으로 듀얼코어를 잘 사용하고 싶음
  • 스레드 특징
    • 프로세스는 한개 이상의 스레드를 가질 수 있다.
    • CPU에서 실행되는 단위(unit of execution)
    • 같은 프로세스의 스레들 끼리의 컨텍스트 스위칭은 가볍다
    • 스레드들은 자신들이 속한 프로세스 메모리 영역 공유
  • 멀티스레딩: 하나의 프로세스가 동시에 여러작업을 수행하는게 가능
    • 확장된 멀티 태스킹 - > 여러 프로세스와 여러 스레드는 아주 짧게 쪼개진(quantum)시간을 나누어 갖는것
  • 멀티 프로세싱: 두개 이상의 프로세스나 코어로 활동하는 시스템