본문 바로가기
IT면접

[용어 정리] 멀티 태스킹/프로그래밍/프로세싱/스레딩

2021. 7. 20.

운영체제에서 처리하는 작업의 단위인 태스크, 어떤 작업을 위해 실행할 수 있는 파일인 프로그램, 컴퓨터에서 연속적으로 실행되고 있는 프로그램인 프로세스, 그리고 프로세스 내에서 실행되는 여러 흐름의 단위인 스레드. 항상 헷갈리는 4가지 용어에 대해 정리해보았다.

 

Task, Program, Process, Thread 용어 정의

Task

  • 운영체제에서 처리하는 작업의 단위
  • 정해진 일을 수행하기 위한 명령어의 집합
  • Process보다 확장된 개념

Program

  • 어떤 작업을 위해 실행할 수 있는 '파일'

Process

정의

  • 컴퓨터에서 연속적으로 실행되고 있는 프로그램 (a Program in Execution)
  • 메모리에 올라와 실행되고 있는 프로그램의 인스턴스 (독립적인 개체)
  • OS로부터 시스템 자원을 할당받는 작업의 단위
    • 시스템 자원: CPU 시간/주소 공간/독립된 메모리 영역(code/data/heap/stack)

특징

  • 프로세스는 각각 독립된 메모리 영역을 할당받는다.
  • 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가진다.
  • 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다.
  • 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC)을 사용해야 한다.
    • (ex) 파이프, 파일, 소켓 등을 이용한 통신

Thread

정의

  • 프로세스 내에서 실행되는 여러 흐름의 단위
  • 프로세스의 특정한 수행 경로
  • 프로세스가 할당받은 자원을 이용하는 실행 단위

특징

  • 스레드는 프로세스 내에서 각각 Stack만 할당받고, 주소 공간이나 Code/Data/Heap 자원들은 같은 프로세스 내의 스레드들끼리 공유하며 실행된다.
  • Java에는 프로세스가 없고 스레드만 존재하며(JVM 자체가 하나의 프로세스), Java Thread는 JVM에 의해 스케줄링되는 실행 단위 코드 블록이다.

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

Multi-Tasking

  • Task가 하나의 프로세서 상에서 OS의 스케줄링 방식에 따라 조금씩 번갈아가며 수행되는 것
    • 빠른 속도로 번갈아가며 처리하기 때문에 사용자는 동시에 처리된다고 느낌
    • 스케줄링 방식: 멀티프로그래밍, 시분할, 실시간 시스템,...

Multi-Programming

  • 단일 프로세서 상에서 여러 개의 프로그램이 동시에 실행되는 것
    • 동시에 실행: 프로세서는 한 번에 한 작업만 수행 가능하므로 진짜로 동시에 수행되는 것이 아니라 빠르게 번갈아가며 수행됨
  • Multi-Tasking을 구현하는 스케줄링의 한 방식이다.
  • OS의 최대 목적인 Reduce Idling Time을 위해 사용

Multi-Processing

  • 여러 개의 프로세스(CPU)가 서로 협력적으로 일을 처리하는 것, 작업을 병렬 처리하는 것
  • 프로세스가 주변장치, 대용량 저장장치, 전원 공급 장치를 서로 공유하고 있기 때문에 여러 개의 단일 프로세싱보다 비용이 절약될 수 있음
  • 한 프로세서가 고장 나도 속도가 좀 느려질 뿐 시스템이 정지하지 않음 -> 신뢰성 증가

Multi-Threading

  • 하나의 프로세스 내에 여러 개의 스레드를 생성하여 작업을 처리하는 것

멀티 스레딩, 멀티 태스킹, 멀티 프로세싱의 차이점

멀티 스레딩 vs 멀티 태스킹

  • 멀티 스레딩은 스레드 간 자원 공유가 가능하고, 프로그래밍을 통해 구현 가능
  • 멀티 태스킹은 OS에서 지원하며, 자원 공유를 위해 IPC를 구현해야 하기 때문에 멀티 스레딩에 비해 OS에 부담을 줄 수 있음. 서로 간의 독립된 메모리를 갖고 있기 때문에 독립된 수행이 가능함.

멀티 프로세싱 vs 멀티 스레딩

멀티 프로세싱

  • fork를 통해 프로세스를 여러 개로 복제하므로 서로 통신하려면 IPC를 통해야 함
  • 하나의 프로세스가 죽더라도 다른 프로세스를 죽이지 않음
  • critical section 문제 X
  • 멀티 스레딩보다 더 많은 리소스가 요구됨

멀티 스레딩

  • 프로세스를 복사하지 않고 하나의 프로세스에서 function 단위로 실행(단일 프로세스) -> 부하 적음
  • context switching시 공유 메모리만큼 자원(시간) 손실이 줄어듦
  • 오류로 하나의 스레드가 종료되면 전체 스레드가 종료될 수 있음
  • critical section 문제 O
728x90

댓글