[OS] 쓰레드란

Jaehyeong Kwon·2022년 4월 30일
0

쓰레드란?

프로세스 내에서 존재하는 실행의 흐름이자 단위이다. 한 프로그램은 하나의 쓰레드를 갖고 있지만 프로그램의 환경에 따라 둘 이상의 쓰레드를 가질 수 있다. 여러 개의 쓰레드를 갖는 방식을 멀티 쓰레드라고 한다.

프로세스와 쓰레드 비교

쓰레드는 하나의 프로세스 안에 여러개 존재할 수 있다. 여러 개의 쓰레드를 생성하여도 코드, 데이터, 파일 등은 공유할 수 있기에 경량화 프로세스라고도 불린다.
프로세스끼리는 메모리에서 Stack 공간을 따로 쓰며 침범하는 일이 없으나 쓰레드들은 Stack 영역을 공유한다.

쓰레드 사용시 문제점

프로세스 내의 쓰레드들은 코드, 변수 등 자원을 공유한다. 서로 다른 쓰레드가 같은 자원을 처리할 때 자원의 수정이 변동이 안될 수도 있다. (동기화) 이러한 문제가 발생할 수 있는 데이터들의 공간을 Critical section이라고 한다.

해결방안

한 쓰레드가 사용 중인 데이터를 작업이 완료할 때 까지 다른 쓰레드가 사용하지 못하는 방식을 통해 Critical Section 문제를 해결한다. 이 같은 방식을 Mutex라고 한다. (Mutual Exclusion)

profile
나무와 같이 성장하는 사람

0개의 댓글