스레드
스레드는 프로세스의 실행 가능한 가장 작은 단위이다.
프로세스와 스레드


멀티 스레딩
프로세스 내 작업을 여러 스레드를 구성해 처리하는 것. 즉, 멀티스레드로 처리하는 기법을 말한다.

장점
응답성: 싱글 스레드의 경우 하나의 작업이 끝나기 전까지 사용자에게 응답하지 않는다. 반면 멀티스레드의 경우 하나의 작업이 진행 중이더라도 다른 스레드를 통해 사용자에게 응답이 가능하기 때문에 응답성이 증가한다.
자원 공유: 프로세스끼리는 기본적으로 자원을 공유하지 않기 때문에 IPC를 통해 데이터를 주고 받는다. 반면, 스레드끼리는 그들이 속한 프로세스의 자원을 공유하기 때문에 데이터 공유에 특별한 기법이 필요없고 효율성이 높다.
경제성: 프로세스 생성에 메모리와 자원을 할당하는 것은 비용이 많이 든다. 프로세스 각자의 메모리 공간을 가지기 때문에 스위칭할 때마다 메모리를 완전히 비워야하고, 프로세스 전체를 다시 로드해야 하기 때문이다.
반면, 스레드는 자신이 속한 프로세스의 자원들을 공유하기 때문에 스레드를 생성하고 context switching하는 것이 더 경제적이다.
멀티프로세서 활용: 멀티프로세서 구조에서는 각각의 스레드가 다른 프로세서에서 병렬로 수행될 수 있다.

단점
동기화 작업 필요: 멀티 스레딩 환경에서는 기본적으로 각 스레드가 자원을 공유하기 때문에 동기화 작업이 필요하다. 동기화 작업은 구현이 복잡하고 성능이 저하된다는 문제점이 있다. 그리고 불필요한 부분까지 동기화 하는 경우 과도한 lock으로 인한 병목 현상이 발생할 가능성도 있다. 동기화 작업에는 세마포어, 뮤텍스 등이 있다.
싱글스레드보다 느린 성능: context switching, 동기화 등의 이유 때문에 싱글 코어 멀티 스레딩은 스레드 생성 시간이 오히려 오버헤드로 작용해 단일 스레드보다 느리다.
예상질문
멀티프로세싱과 멀티 스레딩의 차이점을 설명하세요.
'Computer Science > 운영체제' 카테고리의 다른 글
| [운영체제] 멀티 프로세싱 (0) | 2023.05.02 |
|---|---|
| [운영체제] 메모리 계층과 캐시 (0) | 2023.04.24 |