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
[CS Study : OS] 공유자원과 임계영역
컴퓨터 과학에 대한 지식을 습득하고 정리하는 기록용 포스팅입니다.
velog.io
'Study for Backend > Computer Science' 카테고리의 다른 글
[컴퓨터 공학] 스케줄링 알고리즘 (0) | 2024.03.22 |
---|---|
[컴퓨터 공학] 프로세스 (0) | 2024.03.21 |
[컴퓨터 공학] 운영체제 (0) | 2024.03.20 |
[컴퓨터 공학] 메모리 (0) | 2024.03.19 |
[컴퓨터 공학] 논리 연산과 Adder (0) | 2024.03.18 |