[CS]프로세스, 스레드, 멀티태스킹, 멀티스레딩, 멀티프로세싱, 멀티프로그래밍까지

2025. 9. 27. 22:38·cs/dev
728x90

사전 배경 지식(프로세스)

프로그램(program)

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

 

프로세스(process)

컴퓨터에서 실행 중인 프로그램

각각의 프로세스는 독립된 메모리 공간을 할당 받음

명령어들과 데이터를 가짐

 

CPU(central processing unit)

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

 

메인 메모리(main memeory)

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

 

IO(input/output)

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

입출력 장치와 데이터를 주거나 받는 것

 

동시성 병렬성

구분 동시성 병렬성
개념 동시에 처리하는 것처럼 보여주는 것 여러 작업을 동시에 처리
코어 수 싱글 코어 멀티 코어
개념적 차이 논리적인 개념 물리적인 개념

핵심 개념

프로세스 컴퓨터에서 실행되고 있는 프로그램
독립된 메모리 공간(코드, 데이터, 스택, 힙) 할당
   
단일 프로세스 시스템 한 번에 하나의 프로그램만 실행    
멀티프로그래밍 여러 개의 프로그램을 메모리에 올려놓고 동시에 실행 단일 프로세스 해결책  
멀티태스킹 프로세스는 한번 cpu를 사용할 때
아주 짧은 시간(=quantum)만 cpu에서 실행
멀티프로그래밍 해결책  
스레드 프로세스 실행 가능한 가장 작은 단위
프로세스는 여러 스레드를 가진다.
  heap 공유
stack 공유X
stack pointer, program counter 각각
멀티스레딩 하나의 프로세스가 동시에 여러 작업을 실행하는데 목적   웹 브라우저에서 여러 탭이나 여러 창
멀티태스킹 여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 cpu time을 나눠 갖는 것    
멀티프로세싱 두 개 이상의 프로세서나 코어를 활용하는 시스템   웹 브라우저의 단일 탭 또는 창 내에서 브라우저 이벤트 루프, 네트워크 처리, I/O 및 기타 작업을 관리하고 처리

 

프로세스와 스레드

프로세스는 컴퓨터에서 실행되고 있는 프로그램을 말하며 CPU스케줄링의 대상이 되는 작업이라는 용어와 거의 같은 의미로 쓰입니다. 

스레드는 프로세스 내 작업의 흐름

 

출처:면접을 위한 CS전공지식노트

프로그램이 메모리에 올라가면 프로세스가 되는 인스턴스화가 일어나고, 이후 운영체제의 CPU스케줄러에 따라 CPU가 프로세스를 실행합니다.(프로세스는 프로그램이 메모리에 올라가 인스턴스화 된 것을 말합니다.)

 

PCB는 프로세스에 대한 메타데이터를 저장한 '데이터'를 말합니다. 프로세스 제어 블록이라고도 합니다. 프로세스가 생성되면 운영체제는 해당 PCB를 생성합니다. 

프로그램이 실행되면 프로세스가 생성되고 프로세스 주고 값들에 앞서 설명한 스택, 힙 등의 구조를 기반으로 메모리가 할당됩니다. 그리고 이 프로세스의 메타데이터들이 PCB에 저장되어 관리됩니다. 이는 프로세스의 중요한 정보를 포함하고 있기 때문에 일반 사용자가 접근하지 못하도록 커널 스택의 가장 앞부분에서 관리합니다.

 

컨텍스트 스위칭

PCB를 기반으로 프로세스의 상태를 저장하고 로드시키는 과정을 말합니다.컨텍스트 스위칭을 설명할 때는 싱글코어를 기준으로 설명합니다.

출처:면접을 위한 CS전공지식노트

한 개의 프로세스 A가 실행하다 멈추고, 프로세스 A의 PCB를 저장하고 다시 프로세스 B를 로드하여 실행합니다. 그리고 다시 프로세스 B의 PCB를 저장하고 프로세스 A의 PCB를 로드합니다. 컨텍스트 스위칭이 일어날 때 유휴 시간(idle time)이 발생하는 것을 볼 수 있습니다. *유휴 시간(idle time) = 작업을 하지 않고 대기하는 시간(쉬는 시간)

 

비용:캐시미스: 컨텍스트 스위칭에 드는 비용은 캐시미스라고 합니다. 컨텍스트 스위칭이 일어날 때 프로세스가 가지고 있는 메모리 주소가 그대로 있으면 잘못된 주소 변환이 생기므로 캐시클러 과정을 겪게 되고 이 때문에 캐시미스가 발생합니다.

단일 프로세스 시스템

단일 프로세스 시스템

한 번에 하나의 프로그램만 실행됨

 

단일 프로세스 단점

CPU 사용률이 좋지 않음

예제

단일프로세스 예제

 

실행 중인 프로세스가 io작업을 하는 동안 cpu는 논다.

p1이 작업을 하다가 io작업을 만나면 io작업 동안 cpu는 논다.

또 p1하다가 io하면 논다.

 

멀티프로그래밍

단일 프로세스 해결책

멀티프로그래밍(multiprogramming)

여러 개의 프로그램을 메모리에 올려놓고 동시에 실행시키자!

IO 작업이 발생하면 다른 프로세스가 CPU에서 실행됨

 

예제

멀티프로그래밍 예제

 

cpu사용률을 극대화 시키는데 목적

 

멀티프로그래밍 단점

cpu사용 시간이 길어지면 다른 프로세스는 계속 대기

멀티프로그래밍 단점

멀티태스킹

멀티프로그래밍 해결책

멀티태스킹(multitasking)

프로세스는 한번 cpu를 사용할 때

아주 짧은 시간(=quantum)만 cpu에서 실행되도록 하자!

 

예제

멀티태스킹

프로세스의 응답 시간을 최소화 시키는데 목적

 

아쉬움1..

하나의  프로세스가 동시에 여러 작업을 수행하지는 못함

 

아쉬움2..

프로세스의 컨텍스트 스위칭은 무거운 작업

 

아쉬움3..

프로세스끼리 데이터 공유가 까다로움(독립적인 공간)

 

아쉬움4..

듀얼 코어가 등장했는데 잘 스고 싶음

스레드

해결책

스레드(thread)!!

특징

- 프로세스는 한 개 이상의 스레드 가질 수 있다.

- cpu에서 실행되는 단위(unit of execution)

- 같은 프로세스의 스레드들까리 컨텍스트 스위칭은 가볍다.

- 스레드들은 자신이 속한 프로세스의 메모리 영역을 공유

 

메모리 구조 비교(싱글 스레드 vs 멀티 스레드)

주목: stack, heap, stack pointer, program counter 

 

스레드들은 자신이 속한 프로세스의 메모리 영역을 공유한다 -> heap을 공유

스레드들의 고유한 영역도 있다 -> stack은 공유X stack pointer, program counter(다음에 실행되어야 할 명령어가 가진 메모리 주소를 가르킨다) 들도 각각

 

예제

멀티태스킹처럼 동작

시간이 있으면 짧게 조개고 서로 짧은 시간 나눠서 

 

cpu인데 코어 2개 스레드 2개를 가지는 프로세스는?

멀티스레딩

멀티스레딩(multithreading)

병렬적으로 실행

 

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

 

멀티태스킹

확장된 멀티태스킹 개념

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

멀티프로세싱

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

멀티프로세싱(mutiprocessing)

예제로 살펴보는 개념

예제1) 싱글코어 cpu에 싱글-스레드 프로세스 두 개

 

예제2) 싱글코어 cpu에 듀얼-스레드 프로세스 한 개

cpu가 하나라서 멀티프로세싱X

 

예제3) 듀얼코어 cpu에 싱글-스레드 프로세스 2개

 

예제4) 듀얼코어 cpu에 듀얼-스레드 프로세스 한 개

 

예제5) 듀얼코어 cpu에 듀얼-스레드 프로세스 두 개

 

교차하듯이? 오늘 날 컴퓨터와 현상이 비슷

 

실생활 예시

멀티스레딩

하나의 프로세스 내에서 여러 개의 스레드(실행 흐름)를 동시에 실행

  • 웹 브라우저에서 여러 탭이나 여러 창

멀티프로세싱

여러 개의 CPU(코어)를 활용하여 여러 프로세스(프로그램)를 동시에 실행

  • 웹 브라우저의 단일 탭 또는 창 내에서 브라우저 이벤트 루프, 네트워크 처리, I/O 및 기타 작업을 관리하고 처리

 

출처

쉬운코드 BJ.5 프로세스, 스레드, 멀티태스킹, 멀티스레딩, 멀티프로세싱, 멀티프로그래밍까지 한 방에 깔끔하게 설명합니다!! 콘텐츠 퀄리티 만족하실 겁니다!

https://www.youtube.com/watch?v=QmtYKZC0lMU

 

728x90
반응형

'cs > dev' 카테고리의 다른 글

[CS]RDB단점과 NoSQL이란?  (0) 2025.10.16
[Spring] Spring Batch란?  (0) 2025.09.28
2022년 한이음 ICT 멘토링 후기 [공공데이터를 이용한 마이데이터 서비스 개발]  (0) 2025.09.26
2022년 한이음 ICT 멘토링 후기[챗봇을 활용한 학사관리 시스템 구축]  (0) 2025.09.26
[CS]인터페이스와 추상클래스?  (0) 2025.09.17
'cs/dev' 카테고리의 다른 글
  • [CS]RDB단점과 NoSQL이란?
  • [Spring] Spring Batch란?
  • 2022년 한이음 ICT 멘토링 후기 [공공데이터를 이용한 마이데이터 서비스 개발]
  • 2022년 한이음 ICT 멘토링 후기[챗봇을 활용한 학사관리 시스템 구축]
lakedata
lakedata
lakedata 님의 블로그 입니다.
  • lakedata
    lakedata 님의 블로그
    lakedata
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • cs (82)
        • dev (28)
        • sec (29)
        • ops (25)
      • 자격증 (32)
        • 정보처리기사 (20)
        • 정보보안기사 (1)
        • aws dva (6)
        • aws dop (2)
      • IT서적 (27)
        • 클린아키텍처 (10)
        • 객체지향의사실과오해 (7)
        • 오브젝트 (10)
      • 코테 (42)
        • 알고리즘 (20)
        • 백준 (13)
        • 프로그래머스 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    docker
    AWS
    SQL
    CS
    Spring
    Java
    Security
    알고리즘
  • 최근 댓글

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
lakedata
[CS]프로세스, 스레드, 멀티태스킹, 멀티스레딩, 멀티프로세싱, 멀티프로그래밍까지
상단으로

티스토리툴바