Ch13-1~2. process·thread
0. 목차
Chapter13. 쓰레드
Ch13 - 1. 프로세스(process)와 쓰레드(thread)
Ch13 - 2. 멀티 쓰레딩의 장단점
Ch13 - 1. 프로세스(process)와 쓰레드(thread)
▶ 프로세스(process)란?
▷ 실행 중인 프로그램
▷ 자원(resources)과 쓰레드로 구성
- 자원(resources) : 메모리, CPU…
▶ 쓰레드(thread)란?
▷ 프로세스 내에서 실제 작업을 수행
▷ 모든 프로세스는 최소한 하나의 쓰레드를 가짐
▶ 싱글 쓰레드 프로세스
▷ 자원 + 쓰레드
▷ 일꾼 1명
▶ 멀티 쓰레드 프로세스
▷ 자원 + 쓰레드 + 쓰레드 + … + 쓰레드
▷ 일꾼 n명
▷ 사용하는 대부분 프로그램은 멀티 쓰레드 프로세스
▶ 싱글 쓰레드 프로세스 vs 멀티 쓰레드 프로세스
하나의 새로운 프로세스를 생성하는 것보다
하나의 새로운 쓰레드를 생성하는 것이 더 적은 비용이 듦
▷ CGI vs Java Servlet
Java Servlet
Ch13 - 2. 멀티 쓰레딩의 장단점
▶ 멀티 쓰레딩의 장점
▷ 시스템 자원을 보다 효율적으로 사용
▷ 사용자에 대한 응답성(reponseness)이 향상
- ex) 채팅 하다가 파일 전송하기 : 멀티 쓰레드는 가능, 싱글 쓰레드는 불가능
▷ 작업이 분리되어 코드가 간결
▷ 여러 모로 좋다
대부분의 프로그램이 멀티 쓰레드로 작성 되어있지만,
멀티 쓰레드 프로그래밍이 장점만 있는 것은 아님!
▶ 멀티 쓰레딩의 단점
▷ 동기화(synchroniztion)에 주의해야 함
- 공장 내 많은 일꾼 有 → 일꾼1과 일꾼2가 동시에 망치를 사용하려하면 문제 발생
▷ 교착상태(dead-lock)가 발생하지 않도록 주의
- 공장 내 망치 든 일꾼과 톱을 든 일꾼이 대치하고 있음
- 망치 든 일꾼 : 톱 주면 망치 줄게
- 톱 든 일꾼 : 망치 주면 톱 줄게
- 망치 든 일꾼 : 톱 주면 망치 줄게
▷ 각 쓰레드가 효율적으로 고르게 실행 될 수 있게 해야 함
- 기아 : 프로그램 잘못 짜면 특정 쓰레드는 실행 될 기회를 얻지 못하고 굶어죽음