[OS] 쓰레드의 개념과 프로세스와의 차이

2023. 5. 25. 12:00·공부/OS
728x90

https://growth-coder.tistory.com/139

 

[OS] 프로그램과 프로세스의 차이 및 프로세스 구조

프로그램과 프로세스의 차이 프로그램과 프로세스는 혼동하기 쉬운데 둘은 엄연히 다르다. 프로그램은 특정 목적을 수행하기 위한 명령문들의 집합이다. 또한 컴파일된 결과물이 디스크에 저

growth-coder.tistory.com

이전 포스팅에서 프로세스의 구조에 대해서 알아보았다.

 

이번 포스팅에서는 프로세스 내부에서 실행되는 쓰레드에 대해서 포스팅 해보려고 한다.

 

쓰레드는 프로세스와 마찬가지로 cpu의 작업 단위이다.

 

프로세스 내부에서 실행되는 흐름의 단위라고 보면 된다.

 

하나의 프로세스 내부에서는 여러 개의 쓰레드가 실행될 수 있고 여러 개의 쓰레드를 가지는 프로세스를 멀티 쓰레드 프로세스라고 한다.

 

이전 포스팅에서 프로세스는 메모리로 로딩될 때 4개의 segment로 나뉘어서 로딩된다고 배웠다.

 

text, data, heap, stack으로 이루어져 있는 다음은 쓰레드가 하나인 프로세스의 구조이다.

싱글 쓰레드

이 다음은 쓰레드가 여러 개인 프로세스의 구조이다.

 

멀티 쓰레드

보다시피 각각의 쓰레드는 고유의 스택 영역을 가지고 text, data와 같은 자원들은 다른 쓰레드와 공유한다.

 

쓰레드는 프로세스와 유사하게 동작하는데 프로세스처럼 상태 변화가 가능하고 context switching도 가능하다.

 

또한 프로세스에는 context switching을 위한 PCB (Process Control Block)이 존재하는데 역시 쓰레드에서도 context switching을 위한 TCB (Thread Control Block)이 존재한다.

 

멀티 쓰레드는 다음과 같은 장점이 존재한다.

 

  1. 프로세스 내부에서 자원을 공유하기 때문에 생성 비용이 저렴하다.
  2. 쓰레드 간의 통신이 프로세스 간의 통신보다 덜 복잡하다.
  3. context switching 비용이 저렴하다.

쓰레드 간의 통신을 할 때 전역 변수의 공간 등을 이용하여 통신을 할 수 있다.

 

 

728x90

'공부 > OS' 카테고리의 다른 글

[OS] CPU scheduling 알고리즘  (0) 2023.06.11
[OS] 프로세스 동기화 문제 (세마포어)  (0) 2023.05.27
[OS] CPU Scheduling와 프로세스 상태도  (0) 2023.05.23
[OS] 일괄 처리 시스템, 다중 프로그래밍 시스템, 시분할 시스템, 다중 프로세서 시스템  (0) 2023.03.29
[OS] 프로그램과 프로세스의 차이 및 프로세스 구조  (0) 2023.03.28
'공부/OS' 카테고리의 다른 글
  • [OS] CPU scheduling 알고리즘
  • [OS] 프로세스 동기화 문제 (세마포어)
  • [OS] CPU Scheduling와 프로세스 상태도
  • [OS] 일괄 처리 시스템, 다중 프로그래밍 시스템, 시분할 시스템, 다중 프로세서 시스템
웅대
웅대
알고리즘과 백엔드를 중심으로 열심히 공부 중입니다! 같이 소통하며 공부해요!
    250x250
  • 웅대
    웅대 개발 블로그
    웅대
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 백준 알고리즘
        • dp
        • 문자열
        • 정렬
        • 스택
        • 브루트 포스
        • 이진 탐색
        • 정리
        • 우선순위 큐
        • 자료구조
        • 그래프
        • 기타
        • 그리디
      • 컴퓨터 언어
        • Kotlin
        • Python
        • C#
      • 공부
        • Database
        • Android Studio
        • Algorithm
        • 컴퓨터 구조론
        • Spring
        • lombok
        • AWS
        • Network
        • OS
        • Git & GitHub
        • AI
        • Computer Vision
        • 보안
        • Nginx
        • 프론트
        • express
        • GCP
        • grokking concurrency
        • DevOps
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    bfs
    codetree
    nn.RNN
    ci/cd
    influxDB CLI
    embedding
    스택
    푸쉬 알람
    AWS Lambda
    binary search
    스프링 OAuth2
    파이썬
    다익스트라
    parametric search
    code tree
    Vector Store
    Merge
    openvidu 배포
    RNN
    ChatPromptTemplate
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
웅대
[OS] 쓰레드의 개념과 프로세스와의 차이
상단으로

티스토리툴바