Post

프로그램과 프로세스 관련 용어

프로그램과 프로세스 관련 용어 정리

프로그램과 프로세스 관련 용어

프로그램 vs 프로세스

  • 프로그램 : 컴퓨터가 실행할 수 있는 명령어들의 집합
  • 프로세스 : 프로그램이 실행되면 독립적인 메모리 공간을 할당받아 프로세스가 됨

    클래스와 인스턴스의 관계와 비슷함

프로그램프로세스
실행 파일실행 중인 프로그램
정적인 상태동적인 상태
메모리에 올라가지 않음메모리에 올라가서 실행 중인 상태
실행 파일프로그램이 실행되면 프로세스가 됨

프로세스 관련 용어

  1. CPU (Central Processing Unit)
    • 명령어를 실행하는 연산장치
  2. 메인 메모리 (Main Memory)
    • 프로세스가 CPU에서 실행되기 위해 대기하는 곳
  3. IO (Input/Output)
    • 파일을 읽고 쓰는 쓰거나, 네트워크를 통해 데이터를 주고 받는 것 또는 입출력장치(키보드, 마우스)를 통해 입력을 받는 것 등을 의미함
  4. 스레드 (Thread)
    • 프로세스 내에서 실행되는 흐름의 단위
    • 프로세스 내의 메모리를 공유함 (텍스트, 데이터, 힙 영역을 공유하고, 스택 영역은 독립적으로 가짐)
    • 스레드는 프로세스 내의 메모리를 공유하기 때문에 스레드 간의 데이터 공유 및 통신이 프로세스 간의 데이터 공유 및 통신보다 빠름
  5. 컨텍스트 스위칭 (Context Switching)
    • CPU가 한 프로세스에서 다른 프로세스로 전환하는 것
    • 프로세스의 상태를 저장하고 복원하는 일련의 과정을 의미함
    • 컨텍스트 스위칭이 자주 발생하면 오버헤드가 발생함
    • 프로세스 전환시에는 컨텍스트 스위칭 비용이 크고 스레드 전환시에는 비용이 적음

패러다임에 따른 실행 방식

  1. 단일 프로세스
    • 한번에 하나의 프로그램만 실행 가능
    • CPU 사용률이 낮은 단점이 있음
  2. 멀티 프로세스
    • 여러 개의 프로그램을 메모리에 올려놓고 동시에 실행하는 방식
    • IO 작업이 발생하면 CPU가 다른 프로그램을 실행시키는 방식
    • CPU 사용 시간이 길어지면 다른 프로세스는 계속 대기하게 되는 단점이 있음
  3. 멀티 태스킹
    • CPU 사용 시간을 잘게 쪼개서 여러 프로그램을 동시에 실행하는 방식
    • 프로세스의 응답시간을 최소화하는 방식
    • 하나의 프로세스가 동시에 여러 작업을 수행하지는 못함
    • 컨텍스트 스위칭으로 인한 오버헤드가 발생함
  4. 멀티 스레딩
    • 하나의 프로세스를 여러 개의 스레드로 구성하여 각 스레드가 동시에 실행되는 방식
    • ex) thread per request. 요청을 받는 스레드와 요청을 처리하는 스레드를 분리하여 처리하는 방식. 요청을 받는 스레드는 요청을 받아서 처리하는 스레드에게 넘겨주고 다시 요청을 받는 작업을 수행함.
  5. 멀티 프로세싱
    • 두개 이상의 프로세서나 코어를 활용하는 시스템 (* 멀티 프로세싱은 멀티 태스킹과는 다른 개념임)

Quiz

  1. 싱글코어 CPU에 싱글스레드 프로세스 두개 ?
    • 멀티태스킹 - o, 멀티스레딩 - x, 멀티프로세싱 - x
  2. 싱글코어 CPU에 듀얼스레드 프로세스 한개 ?
    • 멀티태스킹 - o, 멀티스레딩 - o, 멀티프로세싱 - x
  3. 듀얼코어 CPU에 싱글스레드 프로세스 두개 ?
    • 멀티태스킹 - x, 멀티스레딩 - x, 멀티프로세싱 - o
  4. 듀얼코어 CPU에 듀얼스레드 프로세스 한개 ?
    • 멀티태스킹 - x, 멀티스레딩 - o, 멀티프로세싱 - o
  5. 듀얼코어 CPU에 듀얼스레드 프로세스 두개 ?
    • 멀티태스킹 - o, 멀티스레딩 - o, 멀티프로세싱 - o

출처 & 참고 : 쉬운코드

This post is licensed under CC BY 4.0 by the author.