-
[운영체제/OS] 스레드(Thread), 그리고 프로세스와의 차이ComputerScience/운영체제 2020. 6. 4. 10:02
쓰레드(Thread)란 무엇인가
스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(multithread)라고 한다.
출처 : wikipedia.org
예전 글에서 알아 본 실행중인 프로그램을 뜻하는 프로세스에서의 내부에서 실행되는 흐름의 단위입니다. 하나의 프로세스에는 최소 하나 이상의 스레드가 존재합니다.
다수의 프로세스가 순차적으로 실행되는 멀티프로그래밍은 각자의 프로세스가 독립적이기 때문에 자신만의 Code, Data, Heap, Stack를 갖고 있습니다. 하지만 스레드는 하나의 프로세스 에서 실행되는 흐름의 단위기 때문에 해당 쓰레드를 위한 Stack을 생성할 뿐, 그 이외의 Code, Data, Heap 영역은 공유합니다.
스레드를 사용할 때의 장점
-
스레드 간 통신은 프로세스 간 통신에 비해 간단하다.
- 서로가 공유하는 변수들이 많기 때문
-
시스템의 자원 소모 감소
-
응답시간이 감소
스레드를 사용할 때의 단점
-
자원 공유의 문제 (동기화)
-
디버깅의 어려움
프로세스와 스레드의 차이
-
프로세스
- 컴퓨터에서 연속으로 실행되고 있는 프로그램
- 메모리에 올라와 실행되고 있는 프로그램의 인스턴스
- 운영체제로부터 시스템 자원을 할당받는 작업의 단위
- means '실행되고 있는 프로그램'
-
스레드
- 프로세스내에서 실행되는 여러 흐름의 단위
- Stack을 제외한 메모리영역을 공유한다
- 프로세스가 할당받은 자원을 이용하는 실행의 단위, 흐름
왜 멀티 프로세스 대신 멀티 스레드를 사용할까?
-
공유자원을 이용하기 때문에 자원을 할당하는 System Call이 감소하고 자원을 효율적으로 관리할 수 있다.
- 프로세스 간의 문맥교환시 RAM과 CPU 캐시 또한 초기화 해야 하므로 오버헤드가 크다.
-
처리 비용 , 응답 시간 감소
- IPC(프로세스 간 통신)보다 비용이 적다.
다음 주제 : 개인영역 스레드 vs 커널 스레드
'ComputerScience > 운영체제' 카테고리의 다른 글
[운영체제] 스핀락(Spinlock)은 무엇인가? (0) 2020.06.14 [운영체제] 뮤텍스(Mutex), 세마포어(Semaphore) 그리고 모니터(Monitor) (0) 2020.06.14 [운영체제]데드락을 회피할 수 있는 자원할당 그래프, 은행원 알고리즘 (0) 2020.06.13 [운영체제] 데드락(Dead lock), 교착상태가 뭐지? + 해결방법 (0) 2020.06.13 [운영체제/OS] 프로세스/문맥교환/스케줄링 (0) 2020.06.03 -