반응형
프로세스와 스레드
프로세스?
- 컴퓨터에서 실행되고 있는 프로그램 입니다.
- 운영체제 프로세스, 사용자 프로세스 2가지 존재
프로세스의 특징은?
- 프로세스는 각각 독립된 영역을 할당받고 기본적으로 최소 1개의 메인 스레드를 가지고 있습니다.
- 각 프로세스는 별도의 주소 공간에 실행되며 다른 프로세스의 변수나 자료구조에 접근이 불가능합니다.
- 프로세스 간 통신을 이용해야지만 자원에 접근이 가능합니다.
스레드?
- CPU 사용의 기본 단위이며 프로세스 내에 실행되는 여러 흐름의 단위를 의미합니다.
- 스레드는 ID, 프로그램 카운터, 레지스터 세트, 스택으로 구성됩니다.
스레드의 특성?
- 스레드는 프로세스 내에서 Stack만 따로 할당 받고 나머지 code data heap은 공유합니다.
- 프로세스 내의 주소 공간이나 자원들을 같은 프로세스 내에 스레드끼리 공유하면서 실행된다.
- 한 스레드가 프로세스 자원을 변경하면 다른 이웃 스레드도 그 변경 결과를 즉시 볼 수 있다.
프로세스와 스레드의 차이?
- 프로세스는 운영체제로부터 자원을 할당 받는 작업의 단위이고 스레드는 프로세스가 할당 받은 자원을 이용하는 실행의 단위입니다.
- 프로세스는 실행중인 프로그램으로 다른 프로세스와 상관없이 독립적으로 자원을 할당하지만
- 스레드는 경량화된 프로세스로 프로세스 안에 존재하고 각 스레드는 별도의 레지스터와 힙을 갖지만 힙 영역을 공유하는 점이 다르다.
그럼 스레드는 왜쓰는거에요?
- 스레드를 사용하는 이유로는 운영체제에서 더 효율적으로 시스템 자원을 관리 하기 위해 사용됩니다.
- 멀티 프로세스를 사용하는 것보다 멀티 스레드를 사용하게 되면 시스템 콜, 시스템 자원을 적게 쓰기 떄문에 자원을 보다 효율적으로 관리할 수 있고 통신 비용 적다는 이점이 있기에 사용합니다.
- 여기서의 문제점으로 스레드 간 자원 공유는 전역변수를 이용하기에 동기화 문제에 신경을 써야하기 함으로 멀티 스레드 프로그래밍은 프로그래머의 주의가 필요합니다.
반응형
'Dev DBAN > 개발 용어 핥아보기' 카테고리의 다른 글
개발 용어 핥아보기 - 데드락 (0) | 2022.01.10 |
---|---|
개발 용어 핥아보기 - 멀티 스레딩과 멀티 프로세싱 (0) | 2021.12.29 |
개발 용어 핥아 보기 - TCP와 UDP 간단 정리 (0) | 2021.12.23 |
개발 용어 핥아 보기 - OSI 7계층? (0) | 2021.12.22 |
개발용어 핥아보기 - ORM을 알아보자 (0) | 2021.11.01 |
댓글