프로세스, 스레드, 멀티태스킹, 멀티스레딩, 멀티프로세싱, 멀티프로그래밍

Erdos·2025년 6월 23일

감상

목록 보기
35/36

정리의 배경

  • 최근 읽은 책들 덕분에 프로세스, 스레드, 멀티태스킹, 멀티스래딩 등의 개념은 어렴풋하게 알게 되었다. (정말 개념만!!)
  • c언어를 하던 중 멀티프로세스를 만났는데,
    정말 공교롭게도 그게 멀티프로세스라고 미처 인식을 하지 못했다.
    c언어는 절차 지향 언어인데???? 하면서 그만 멘탈이 사정없이 흔들렸는데
    (결과는 잘 나오니 이게 왜 되지!? 하는 상황)
    되돌아보니 fork를 한 순간부터 멀티프로세스를 생각했어야 하지 않았나..!
    이게 개념만 인지하고 아직 개념이 몸에 배지 않은 상황이구나 잠시 반성하는 시간을 가졌다.
    사실 멀티프로세스를 다루는 과제다! 라고 초반에 분명 인식했었는데 딱 그 코드 몇 줄이 멀티프로세스로 동작하는 상황이라는 걸 그제까지 정말 몰랐다..!

프로세스(process)

  • 컴퓨터에서 실행 중인 프로그램
  • 각각의 프로세스는 독립된 메모리 공간을 할당 받음
  • 명령어들과 데이터를 가짐

CPU

  • 명령어를 실행하는 연산장치

메인 메모리(main memory)

  • 프로세스가 cpu에서 실행되기 위해 대기하는 곳

IO(input/output)

  • 파일을 읽고 쓰거나 네트워크 어딘가와 데이터를 주고 받는 것
  • 입출력 장치와 데이터를 주거나 받는 것

변천사

단일 프로세스

  • cpu의 사용률이 좋지 않음
  • 실행 중인 프로세스가 I/O작업을 하는 동안에는 cpu가 놀고 있다.

멀티 프로그래밍(multiprogramming)

  • 이 문제를 해결하기위해 여러 개의 프로그램을 메모리에 올려 놓고 동시에 실행시키자! IO 작업이 발생하면 다른 프로세스가 cpu에서 실행됨
  • cpu 사용률을 극대화 시키는데 목적
  • 단점: cpu 사용 시간이 길어지면 다른 프로세스는 대기

멀티태스킹(multitasking- 위 문제의 해결책)

  • 프로세스는 한번 cpu를 사용할 때 아주 짧은 시간(quantum)만 cpu에서 실행되도록 하자!
  • 프로세스의 응답 시간을 최소화 시키는데 목적
  • 이게 여러 프로세스가 동시에 실행되는 것처럼 느껴지게 만듦
  • 타임 시간을 아주아주아주 잘게 쪼개서 프로세스들이 교대로 번갈아가면서 실행
  • 그렇지만 여전히 아쉽다.
    1) 하나의 프로세스가 동시에 여러 작업을 수행하지는 못한다.
    2) 프로세스의 컨텍스트 스위칭은 무거운 작업이다.
    - 컨텍스트 스위칭(context switch) : 어느 한 프로세스에서 다른 프로세스로 교체되는 것
    3) 프로세스끼리 데이터 공유가 까다롭다.
    4) 듀얼 코어가 등장했는데 잘 쓰고 싶다.(2000년대 초중반)

쓰레드(thread)

  • 특징
    1) 프로세스는 한 개 이상의 스레드를 가질 수 있다.
    2) cpu에서 실행되는 단위(unit of execution)
    3) 같은 프로세스의 스레드들끼리 컨텍스트 스위칭이 가볍다.
    4) 스레드들은 자신들이 속한 프로세스의 메모리 영역을 공유한다.
    - 이 덕분에 컨텍스트 스위칭이 가볍고 프로세스 내 스레드끼리 데이터 공유가 쉽다.

멀티스레딩(Multithreading)

  • 하나의 프로세스가 동시에 여러 작업을 실행하는데 목적
  • 멀티태스킹의 확장: 여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 cpu time을 나눠 갖는 것

멀티 프로세싱(multiprocessing)

  • 두 개 이상의 프로세서나 코어를 활용하는 시스템

여기서의 스레드는 운영체제의 스레드다.

profile
수학을 사랑하는 애독자📚 Stop dreaming. Start living. - 'The Secret Life of Walter Mitty'

0개의 댓글