📖
Tech interview를 위한 CS
  • Tech interview를 위한 CS!
  • 디자인 패턴
    • 디자인 패턴 개요
    • 싱글톤 패턴
    • 팩토리 패턴
    • 전략 패턴
    • 옵저버 패턴
    • 프록시 패턴
    • 이터레이터 패턴
    • 노출모듈 패턴
    • MVC, MVP, MVVM
  • 프로그래밍 패러다임
    • 프로그래밍 패러다임 개요
    • 선언형과 함수형 프로그래밍
    • 객체지향 프로그래밍
  • 운영체제
    • 운영체제와 컴퓨터
    • 메모리
    • 프로세스
    • PCB와 Context Switching
    • 멀티프로세싱, IPC
    • 스레드와 멀티스레딩
  • 🚧준비 중 입니다.
  • About me
  • Dev Blog
Powered by GitBook
On this page
  • Thread
  • 멀티 스레드
Edit on GitHub
  1. 운영체제

스레드와 멀티스레딩

Previous멀티프로세싱, IPCNext준비 중 입니다.

Last updated 2 years ago

Thread

  • 한 프로세스 안에서도 여러 작업이 동시에 필요할 경우 가 있다.

  • 프로세스 내 작업의 흐

ex) 유튜브 영상을 다운받으면서 실행, 게임 받으면서 패치노트 확인

  • 프로세스는 자원을 공유하지 않지만, 쓰레드는 프로세스마다 주어진 전체 자원을 공유한다

  • 속도와 효율에서 자원공유는 장점이지만, 시간문제로 발생하는 Error 발생 확률이 높다.

멀티 스레드

하나의 응용 프로그램에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리하는 것

스레드들이 공유 메모리를 통해 다수의 작업을 동시에 처리하도록 해줌

장점 : 독립적인 프로세스에 비해 공유 메모리만큼의 시간, 자원 손실이 감소 전역 변수와 정적 변수에 대한 자료 공유 가능

단점 : 안전성 문제. 하나의 스레드가 데이터 공간 망가뜨리면, 모든 스레드가 작동 불능 상태 (공유 메모리를 갖기 때문)

  • 멀티스레드의 안전성에 대한 단점은 Critical Section 기법을 통해 대비함

    하나의 스레드가 공유 데이터 값을 변경하는 시점에 다른 스레드가 그 값을 읽으려할 때 발생하는 문제를 해결하기 위한 동기화 과정

    상호 배제, 진행, 한정된 대기를 충족해야함

와 달리 스레드는 코드, 데이터, 힙은 스레드 끼리 서로 공유한다.

코드, 데이터, 스택, 힙을 각각 생성하는 프로세스
프로세스는 뭐고 스레드는 뭔가요? - YouTube