본문 바로가기

Study for Backend/Computer Science

[컴퓨터 공학] Thread (스레드)

1. Thread

- 하나의 프로세스에 여러개의 스레드 생성 가능

- 스레드들은 동시에 실행 가능

- 프로세스 안에 있으므로, 프로세스의 데이터를 모두 접근 가능 (Light Weight Process)

- 각 개별적인 Stack 을 갖고 있음

- 성능개선이 가능하며 사용자에 대한 응답성 향상

- IPC를 별도 사용하지 않아 자원 공유 효율이 좋음

- 스레드 중 한 스레드만 문제가 있어도 전체 프로세스가 영향을 받음

- 스레드를 많이 생성하면 Context Switching도 빈번해져서 성능이 저하될 수 있음

- 동기화 이슈로 비정상적으로 동작할 수 있음 

 

 

Sychronization Issue (동기화 이슈)

- 여러 스레드가 동일한 자원 (데이터) 접근시 작업들 사이에 실행시기를 맞추는 부분에서 이슈 발생

- 동일 자원을 여러 스레드가 동시 수정시, 각 스레드 결과에 영향을 줌

- 이슈 해결 방안으로 Mutual exclusion (상호 배제)를 구현하고 있음

 

 

Mutual exclusion (상호 배제) 

- 한 스레드가 공유 변수를 갱신하는 동안 다른 스레드가 동시에 접근하지 못하도록 막음

Critical Resource (임계자원) : 두개 이상의 프로세스가 동시에 사용할 수 없는 자원

Critical Selection (임계영역) : 병렬컴퓨팅에서 둘 이상의 스레드가 동시에 접근해서는 안되는 공유 자원(자료 구조 또는 장치)을 접근하는 코드의 일부

 

Semaphore

- Critical section에 대한 접근을 막기 위해 Locking 메커니즘이 필요하여 만들어짐

- 임계구역에 여러 스레드가 들어갈 수 있음

- Counter를 두어서 동시에 리소스에 접근할 수 있는 허용 가능한 스레드 수를 제어

 

 

Multi Thread

- 소프트웨어 병행 작업 처리를 위해 사용

- 멀티 프로세스와 멀티 스레드 프로그래밍은 성능 개선을 위해 기본적으로 고려하는 구조임

 

 

2. Thread와 Process의 차이

 

현업에서는 멀티프로세싱을 고려해서 프로그램을 짜고 있음

 

 

 

 

 

 

관련link

https://velog.io/@jsb100800/CS-%EC%8A%A4%ED%84%B0%EB%94%94-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B3%B5%EC%9C%A0%EC%9E%90%EC%9B%90%EA%B3%BC-%EC%9E%84%EA%B3%84%EC%98%81%EC%97%AD

 

[CS Study : OS] 공유자원과 임계영역

컴퓨터 과학에 대한 지식을 습득하고 정리하는 기록용 포스팅입니다.

velog.io