스레드란?
- Light Weight Process 라고도 합니다.
- 모든 영역을 독립적으로 갖는 프로세스와는 달리, 스택영역을제외한 부분을 공유합니다.
- 하나의 프로세스에 여러 스레드를 사용 가능하며, 프로세스의 데이터를 스레드가 공유합니다.
멀티 프로세싱과 멀티 스레딩
- 두 작업 모두 CPU의 성능 개선을 위해 사용합니다.
- 멀티 프로세싱
1) 여러 개의 CPU를 병렬 처리하여 여러 프로세스를 처리하는 방법입니다.
2) 멀티 프로세싱은 처음 구조를 잡을때 만들어야 합니다.
- 멀티 스레딩
1) 하나의 CPU 내에서 여러가지 작업을 동시에 처리하는 방법입니다.
2) 멀티 스레딩은 프로그램의 일부 코드만 수정 하여 구현 가능합니다.
스레드의 장점
1. 사용자에 대한 응답성 향상
- 사용자 커뮤니케이션 부분을 별도로 분리하여 사용자 접근성을 높입니다.
- 응답을 접수하는 부분과 처리부분을 나눠 빠르게 응답받을 수 있습니다.
2. 자원 공유 효율 증가
- IPC 기법 등 별도의 작업이 필요가 없습니다.
- 이는 별도의 작업을 위한 공간할당이나 작업을 하지 않아도 되므로 자원 효율이 증가합니다.
스레드의 단점
1. 하나의 스레드가 문제가 있을경우, 전체 프로세스가 영향을 받습니다.
- 하나의 프로세스 내에 다수의 스레드를 포함하고 있기 때문에, 다른 스레드에 영향을 받습니다.
2. 다수의 스레드 생성시 성능저하
- 다수의 스레드 생성시 문맥교환( context switching )이 많이 일어나 성능이 저하됩니다.
3. 동기화 이슈로 인해 비정상적인 동작을 할 수 있습니다.
- 데이터를 공유하기 때문에, 동시에 접근할 수도 있습니다.
- 하나의 스레드에서 작업을 하던 중 다른 스레드의 영향으로 인해 비정상적인 값이 나올 수 있습니다.
- 이를 막기 위해 동기화 코드를 추가해서 오류를 방지해야 합니다.
'Computer Science' 카테고리의 다른 글
운영체제 - 가상메모리 (0) | 2024.05.07 |
---|---|
운영체제 - 동기화 이슈 (0) | 2024.05.03 |
운영체제 - 프로세스와 스케줄링 (0) | 2024.05.02 |
운영체제 - 커널과 쉘, 시스템 콜 (0) | 2024.05.01 |
컴퓨터구조론 - CPU 성능 개선 (0) | 2024.04.30 |