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

어떻게 여러 프로그램이 동시에 실행되는가? (원리)

운영체제 관점에서의 스레드
(!= 유저 관점에서의 스레드)


프로그램(program)

  • 컴퓨터가 실행할 수 있는 명령어들의 집합

프로세스(process)

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

CPU(Central Processing Unit)

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

메인 메모리(main memory)

  • 프로세스가 CPU에서 실행되기 위해 대기하는 곳
  • 물론, 프로세스의 명령어들과 실행중인 데이터가 있기도 함

I/O(Input/Output)

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

단일 프로세스 시스템

  • 한 번에 하나의 프로그램만 실행됌 (초창기의 시스템의 경우)

-> 단점: CPU 사용률이 좋지 않음

멀티프로그래밍(multiprogramming)

  • 여러 프로그램을 메모리에 올려놓고 동시에 실행됌

-> 장점: CPU 사용률을 극대화시킴
-> 단점: CPU 사용 시간이 길어지면, 다른 프로세스는 계속 대기

멀티태스킹(multitasking)

  • 프로세스가 한번 CPU를 사용할 때, 아주 짧은 시간(=quantum)만 실행됌
  • 프로세스의 응답 시간 최소화가 목적 (사용자 관점에서는 동시에 실행되는 것처럼 느낌)

-> 단점1: 하나의 프로세스가 동시에 여러 작업을 수행하지는 못함
// 프로세스의 컨텍스트 스위칭은 무거운 작업 //

-> 단점2: 프로세스 간에 데이터 공유가 까다로움
-> 단점3: 새로 등장한 [듀얼 코어] 를 잘 쓰고 싶음

스레드(thread)

  • 프로세스는 1개 이상의 스레드를 가질 수 있다
  • CPU에서 실행되는 단위 (=unit of execution)
  • 같은 프로세스의 스레드 간에는 컨텍스트 스위칭이 가볍다
  • 같은 프로세스의 스레드 간에는 메모리 영역을 공유한다
  • 그럼에도 각각의 스레드는 고유한 영역(=스택)이 있다

멀티스레딩(multithreading)

  • 하나의 프로세스가 (스레드로) 동시에 여러 작업을 실행하는데 목적

멀티프로세싱(multiprocessing)

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

확장된 멀티태스킹 개념

  • 여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 cpu time을 나눠 갖는 것

0개의 댓글