티스토리 뷰

CS

[OS] 2. 스레드(Thread)

5_Clock 2022. 8. 23. 20:35
반응형

1. 스레드

스레드(Thread)는 프로그래밍을 하다보면 다음과 같이 굉장히 많이 듣게 되는 단어이다.

멀티스레딩을 이용한다...
멀티스레딩 환경에 안전하게 설계 되었나...
스레드 풀 범위를 어떻게 설정할 것인가....

 

간단히 말하면 스레드란 경량 프로세스이다.

경량이라는 말은 프로세스보단 더 라이트한 버전이라고 할 수 있다.

그 이유는 하나의 프로세스에서 주소 공간과 같은 자원을 서로 공유하기 때문이다.

 

위의 그림에서 보듯, thread는 code, data, file을 공유하는 구조이다.

 

이 스레드를 쓰게 됨으로써 얻게 되는 장점은 크게 3가지가 있다.

  1. 응답성: 스레드의 일부가 블록되어도 나머지 부분은 계속 실행될 수 있다.
  2. 자원공유: 같은 프로세스의 스레드는 메모리나 그 외의 자원을 공유한다. 그래서 스레드간 통신에 있어 유리하다.
  3. 경제성: 프로세스 1개를 만드는 오버헤드가 스레드 1개 생성 오버헤드의 30배가량 차이가 난다.

 

그렇다면 우리는 멀티 스레딩을 하면서 중요하게 생각해야하는 것은 어느 것이 있을까?

 

위에서 말한 것처럼 스레드는 같은 주소 공간을 공유하기 때문에, 여러 스레드에서 무분별하게 변수의 값을 바꾼다면 

시스템에서의 일관성이 사라질 것이다.

 

Thread-safety

스레드 안전(thread 安全, 영어: thread safety)은 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 뜻한다. 보다 엄밀하게는 하나의 함수가 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 스레드에서의 함수의 수행 결과가 올바로 나오는 것으로 정의한다.(위키백과)

 

728x90
반응형

'CS' 카테고리의 다른 글

[OS] 5. System call(시스템 콜)  (0) 2022.08.29
[OS] 4. 멀티 프로세스와 멀티 스레드  (0) 2022.08.29
[OS] 3. CPU Scheduling  (0) 2022.08.23
[OS] 1. 프로세스  (0) 2022.08.23
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함
250x250