itisjustK
코딩과 사람 사는 이야기
itisjustK
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • 일이삼사오육칠팔구십일이삼사오육칠팔구십일이삼사오육칠.. (0)
    • Web (43)
      • html & css (9)
      • django & python (15)
      • java script (9)
    • iOS (51)
      • Swift (42)
      • SwiftUI (5)
    • CS (25)
      • 자료구조 (6)
      • 운영체제 (3)
      • 데이터베이스 (9)
      • 네트워크 (7)
    • PS (34)
      • 알고리즘 & 자료구조 (0)
    • Life (36)
    • Retrospective (15)
    • Book (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 점주
  • 개발자
  • nosql
  • AppleDevloperAcademy
  • 어플
  • mongodb
  • SwiftUI
  • SWIFT
  • 생활코딩 #이고잉 #HTML #코딩 #개발자
  • crud
  • 독립서점
  • 킨디
  • ios
  • binding
  • POSTECH
  • CoreData
  • 연결리스트
  • 세그멘테이션
  • CS
  • 생활코딩

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
itisjustK

코딩과 사람 사는 이야기

[CS - 운영체제] 스레드와 멀티 스레드 (Feat. 멀티 프로세스 vs 멀티 스레드)
CS/운영체제

[CS - 운영체제] 스레드와 멀티 스레드 (Feat. 멀티 프로세스 vs 멀티 스레드)

2023. 4. 4. 18:13

스레드 (Thread)

 

  • 개념
    • 한 프로세스에서 실행되는 동작(기능 function)의 단위
    • 하나의 프로세스 내부에 스레드가 한 개일 수도, 여러 개일 수도 있음. 이때 여러 개인 경우를 멀티 스레드(Multi Thread)
    • 예) 유튜브라는 하나의 프로세스를 진행할 때 동영상 렌더링(스레드1), 댓글 조회(스레드2), 추천 동영상 탐색(스레드3) 등
    • 각 스레드는 프로세스에 할당된 메모리 영역 중 코드, 데이터, 힙 영역을 공유
    • 각 스레드는 스택 메모리 영역을 독립적으로 사용

  • 독립적인 스택 메모리 필요
    • 스레드는 하나의 실행 단위 → 함수를 호출함
    • 함수를 호출하기 위해 인자 전달, return address 저장, 함수 내 지역 변수 저장 등을 위한 독립적인, 개별적인 공간 필요
    • 독립적인 공간이 필요하다는 건 독립적인 함수 호출이 가능하다는 의미
    • 즉, 독립적인 실행 흐름이 추가되는 것의 의미로 독립적인 스택을 할당

 

  • 개별적인 PC (Program Counter) register 필요
    • Multi Thread의 동시성(concurrency)을 위해 필요
    • 여러 스레드를 동시에 처리하기 때문에, 각 스레드의 context나 PC를 독립적으로 저장할 필요
    • TCB(Thread Control Block)에서 각 스레드의 PC 저장
    • CPU는 실행해야 할 스레드의 PC값을 TCB를 참고하여 자신의 PC register에 저장

 

  • 스레드 포인트 3가지
    1. 프로세스의 실행 단위
    2. 프로세스 내부에서 코드∙데이터∙힙 영역 공유
    3. 스택은 독립적으로 사용

 

 

멀티 스레드 (Multi Thread)

  • 개념
    • 하나의 프로세스를 여러 스레드로 나누어 동시에 처리하는 것

 

  • 장점 (같은 일을 Multi Process로 하는 것과 비교)
    • 메모리 공간, 시스템 자원 소모 줄어듦
    • 스레드 간의 통신 방법이 간단함
    • 스레드 간의 context switching이 일어날 때 캐시 메모리를 비울 필요 없음
    • → 메모리를 적게 쓰고, 연산도 가볍고 빠름

 

  • 단점
    • Multi Process는 작업 간에 독립성이 유지되지만 (프로세스끼리 침범하는 게 없음) Multi Thread는 코드∙데이터∙힙 영역을 공유하기 떄문에 여기서 파생되는 문제를 신경써야 함
      • 동기화 작업이 필요 (다른 스레드가 사용중인 변수나 자료구조에 접근해 엉뚱한 값을 수정하는 일 발생할 수 있음)
      • → 작업 처리 순서, 공유 자원에 대한 접근 컨트롤 필요
    • 병목 현상 발생해 성능 저하될 가능성이 있음 → 과도한 락으로 인한 병목 현상 줄여야 함

 

 

  • Muti Process vs Multi Thread
    • 멀티 프로세스
      • 하나의 프로세스가 줄어도 다른 프로세스에 영향 없음
      • 많은 메모리 공간, CPU 시간 차지
    • 멀티 스레딩
      • 적은 메모리 공간, switching이 빠름
      • 동기화 문제, 하나의 스레드 죽으면 전체가 타격

 

 

멀티 프로세스 vs 멀티 스레드

 

멀티 프로세스

  • 핵심 차이점
    • 메모리에서 각각의 공간 차지 → 메모리 공간이 구분됨

 

  • 특징
    • 각각의 메모리 공간을 차지 → 메모리 공간을 많이 차지함
    • Context switching 시 각각의 메모리 공간을 옮겨다녀야 함 → Context switching 속도가 느림
    • 독립적인 데이터 공간 사용 → 데이터 통신 비용이 많이 듦
    • 많은 메모리 공간, CPU 시간 차지 → 자원 이용 효율성이 떨어짐

 

멀티 스레드

  • 핵심 차이점
    • 코드∙데이터∙힙 영역 공유 & 스택 영역 독립적으로 사용

 

  • 특징
    • 코드∙데이터∙힙 영역 공유 → 적은 메모리 공간 사용
    • Context switching 시 하나의 메모리 공간 내부 옮겨다님 → Context switching 속도가 빠름
    • 데이터 영역 공유 → 데이터 통신 비용 줄어듦, 데이터 동기화 문제 가능성 있음
    • 자원 이용 효율성이 좋음

 

비교

    •  

 

저작자표시 (새창열림)

'CS > 운영체제' 카테고리의 다른 글

[CS - 운영체제] 프로세스와 멀티 프로세스 (Process, Multi Process)  (0) 2023.04.01
[CS - 운영체제] 메모리 (Memory)  (0) 2023.01.19
    'CS/운영체제' 카테고리의 다른 글
    • [CS - 운영체제] 프로세스와 멀티 프로세스 (Process, Multi Process)
    • [CS - 운영체제] 메모리 (Memory)
    itisjustK
    itisjustK

    티스토리툴바