스레드카테고리 없음2023. 11. 17. 14:59
목차
스레드
프로세스를 구성하는 실행 흐름의 단위
하나의 프로세스에서 여러 부분을 동시에 실행할 수 있게 해주는 실행 단위
CPU에 작업 요청을 하는 실행 단위
절차
- 운영체제는 프로그램을 실행시키기 위해 프로그램의 코드와 데이터를 메모리에서 가져온다.
- 가져온 데이터를 통해 프로세스 제어 블록(PCB)을 생성하여 작업에 필요한 메모리를 확보한 후 준비된 프로세스를 준비 큐에 삽입한다.
- 프로세스가 생성되면 CPU스케줄러는 CPU에게 해야 하는 일을 전달하여 CPU가 그 일을 하게 된다.
- 이때 CPU가 받는 일을 스레드라고 한다.
운영체제 입장에서 작업의 단위는 프로세스이고, CPU입장에서는 스레드이다.
스레드 구성 요소
- 스레드는 스레드 ID, 프로그램 카운터 값을 비롯한 레지스터 값, 스택으로 구성된다. 각자 프로그램 카운터 값을 비롯한 레지스터 값, 스택을 가지고 있기 때문에 스레드마다 각기 다른 코드를 실행할 수 있다.
- 각 프로세스의 스레드들은 실행에 필요한 최소한의 정보만을 유지한 채 프로세스 자원을 공유하며 실행된다.
왜 필요한가
- 단 하나의 실행 흐름을 가지고 한번에 하나의 부분만 실행되는 프로세스는 단일 스레드 프로세스라고 한다.
- 멀티 스레드 프로세스는 프로세스를 구성하는 여러 명령어들을 동시에 실행할 수 있게 된다.
멀티 프로세스 | 여러 프로세스를 동시에 실행하는 것 |
---|---|
멀티 스레드 | 여러 스레드로 프로세스를 동시에 실행하는 것 |
멀티 프로세스와 멀티 스레드 방식의 차이
- 프로세스끼리는 자원을 공유하지 않지만 스레드끼리는 자원을 공유한다.
- 같은 작업을 하는 동일한 프로세스를 여러 개 실행할 경우 프로세스의 코드, 데이터, 힙 영역, 파일 영역을 비롯한 자원들이 복제되어 메모리에 적재된다.
- 이렇게 되면 같은 프로그램을 실행하기 위해 메모리에 동일한 내용들이 중복되어 존재하는 낭비 현상이 발생한다.
- 반면 여러 스레드를 사용할 경우 코드, 데이터, 힙 영역, 파일 영역 등 하나의 프로세스가 가지고 있는 자원을 공유하여 사용한다.
- 때문에 여러 프로세스를 병행하여 실행하는 것보다 메모리를 더 효율적으로 사용할 수 있고, 서로 협력과 통신에도 유리하다.
멀티 스레드 방식의 단점
멀티 프로세스 방식의 경우 하나의 프로세스에 문제가 생겨도 다른 프로세스에는 지장이 적거나 없지만 멀티 스레드 방식의 경우 모든 스레드가 프로세스의 자원을 공유하기 때문에 하나의 스레드에 문제가 생기면 프로세스 전체에 문제가 생길 수 있다.
728x90
반응형
LIST
@kdj :: Childev'note
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!