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

김승현·2023년 1월 16일
0

기본 용어 정리

  • 프로그램(program) : 컴퓨터가 실행할 수 있는 명령어들의 집합
  • 프로세스(process) : 컴퓨터에서 실행 중인 프로그램. 각각의 프로세스는 독립된 메모리 공간을 할당 받음. 메모리 공간에 명령어들과 데이터를 가짐
  • CPU(Central Processing Unit) : 명령어를 실행하는 연산 장치
  • 메인 메모리(main memory) : 프로세스가 CPU에서 실행되기 위해 대기하는 곳. 메인 메모리에는 프로세의 명령어들과 실행 중인 데이터들도 있다.
  • I/O(Input/Output) : 파일을 읽고 쓰거나 네트워크의 어딘가와 데이터를 주고 받는 것. 입출력 장치(마우스, 키보드, 프린터 등)와 데이터를 주고 받는 것

  1. 단일 프로세스 시스템
    • 한 번에 하나의 프로그램만 실행됨
    • 단점 : CPU 사용률이 좋지 않음
    • 해결책 : 여러 개의 프로그램을 메모리에 올려놓고 동시에 실행. I/O작업이 발생하면 다른 프로세스가 CPU에서 실행됨 → 멀티 프로그래밍(multiprogramming)


  2. 멀티프로그래밍(multiprogramming)
    • 여러 개의 프로그램을 메모리에 올려놓고 동시에 실행. I/O작업이 발생하면 다른 프로세스가 CPU에서 실행됨
    • 목적 : CPU 사용률을 극대화 시키는데 목적
    • 단점 : CPU 사용시간이 길어지면 다른 프로세스는 계속 대기
    • 해결책 : 프로세스는 한번 CPU를 사용할 때 아주 짧은 시간(=quantum)만 CPU에서 실행되도록 하자! → 멀티태스킹(multitasking)

  3. 멀티태스킹(multitasking)
    • 프로세스는 한번 CPU를 사용할 때 아주 짧은 시간(=quantum)만 CPU에서 번갈아 가며 실행
    • 목적 : 프로세스의 응답 시간을 최소화 시키는데 목적
    • 일반사용자가 느끼기에는 여러 프로그램이 동시에 실행되는 것 처럼 느껴짐
    • 아쉬운점
      • 하나의 프로세스가 동시에 여러 작업을 수행하지 못함.
      • 프로세스의 컨텍스트 스위칭(한 프로세스에서 다른 프로세스로 교체 되는 것)은 무거운 작업
      • 프로세스끼리 데이터 공유가 까다로움
      • 듀얼 코어(하나의 CPU안에 두개의 코어)가 등장했는데 잘 쓰고 싶음
    • 해결책 : 스레드(thread)

  4. 스레드(thread) → OS 운영체제 레벨에서의 스레드
    • 목적 : 한 프로세스 안에서 여러 개의 작업을 동시에 실행하기 위함
      - 특징
      - CPU에서 실행되는 단위(unit of execution)
      - 예전에는 프로세스가 CPU에서 실행되는 단위였는데 변경됨
      - 프로세스는 한 개 이상의 스레드를 가질 수 있다.
      - 스레드들은 자신들이 속한 프로세스의 메모리 영역을 공유
      - 같은 프로세스의 스레드들끼리 컨텍스트 스위칭이 가볍다.
      - 같은 프로세스의 스레드들끼리 데이터 공유가 쉽다.
      - 각 스레드들의 고유의 영역도 있다(stack)

  5. 멀티스레딩(multithreading)
    • 목적 : 하나의 프로세스가 동시에 여러 작업(thread를 통해서)을 실행하는데 목적

  6. 확장된 멀티태스킹 개념
    • 여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 CPU time을 나눠 갖는 것

  7. 멀티프로세싱(multiprocessing)
    - 두 개 이상의 프로세서나 코어를 활용하는 시스템

참조

쉬운코드 - 프로세스, 스레드, 멀티태스킹, 멀티스레딩, 멀티프로세싱, 멀티프로그래밍, 이 모든 것을 한 방에 깔끔하게 설명합니다!! 콘텐츠 퀄리티 만족하실 겁니다!

profile
개발자로 매일 한 걸음

0개의 댓글