728x90
반응형
멀티스레드의 장점
- 응답성 향상 : 한 스레드가 입출력으로 인해 작업이 진행되지 않더라도 다른 스레드가 작업을 계속하여 사용자의 작업 요구에 빨리 응답할 수 있다.
- 자원 공유 : 한 프로세스 내에서 독립적인 스레드를 생성하면 프로세스가 가진 자원을 모든 스레드가 공유하게 되어 작업을 원활하게 진행할 수 있다.
- 효율성 향상 : 어러 개의 프로세스를 생성하는 것과 달리 멀티스레드는 불필요한 자원의 중복을 막음으로써 시스템의 효율이 향상된다.
- 다중 CPU 지원 : 2개 이상의 CPU를 가진 컴퓨터에서 멀티스레드를 사용하면 다중 CPU가 멀티스레드를 동시에 처리하여 CPU 사용량이 증가하고 프로세스 처리 시간이 단축된다.
멀티스레드의 단점
멀티스레드의 경우 모든 스레드가 자원을 공유하기 때문에 한 스레드에 문제가 생기면 전체 프로세스에 영향을 미친다. 반면 프로세스를 여러 개 만드는 방식의 경우 각 프로세스가 독립적이기 때문에 한 프로세스의 문제가 다른 프로세스로 전달되지 않는다.
프로세스는 커멀 프로세스와 사용자 프로세스로 나뉘며 스레드에도 커널 스레드(kernal thread)와 사용자 스레드(user thread)가 있다.
- 커널 스레드 : 커널이 직접 생성하고 관리하는 스레드이다.
- 사용자 스레드 : 라이브러리에 의해 구현된 일반적인 스레드이다.
사용자 스레드의 단점은 여러 개의 스레드가 하나의 커널 스레드와 연결되기 때문에 커널 스레드가 입출력 작업을 위해 대기 상태에 들어가면 모든 사용자 스레드가 같이 대기하게 된다는 것이다. 앞서 설명했듯이 커널 입장에서는 하나의 프로세스이므로 일부 스레드만 대기 상태로 보낼 수 없다.
또 다른 단점은 한 프로세스의 타임 슬라이스를 여러 스레드가 공유하기 때문에 여러 개의 CPU를 동시에 사용할 수 없다는 것이다. 커널 입장에서 사용자 스레드는 하나의 프로세스로 인식되므로 작업을 나눌 수 없다. 또한 사용자 스레드는 보안에 취약한다.
커널 스레드는 커널이 멀티스레드를 지원하는 방식이다. 커널 스레드의 장단점은 사용자 스레드의 장단점과 반대라고 생각하면 된다. 커널 스레드는 멀티 CPU를 사용할 수 있고, 하나의 스레드가 대기 상태에 있어도 다른 스레드는 작업을 계속할 수 있다. 보안에 강하고 안정적인 반면, 문맥 교환을 할 때 오버헤드가 발생하여 느려진다.
728x90
반응형
'운영체제' 카테고리의 다른 글
fork() 시스템 호출 , exec() 시스템 호출 (0) | 2023.02.13 |
---|