
프로세스와 스레드를 구별하는 또 다른 주요 점은 프로세스가 서로 고립되어있는 반면 스레드는 서로 메모리 또는 자원을 공유한다는 점입니다.
비교 차트
비교 근거 | 방법 | 실 |
---|---|---|
기본 | 실행중인 프로그램. | 경량 공정 또는 그 일부. |
메모리 공유 | 완전히 격리되었고 메모리를 공유하지 않습니다. | 메모리를 서로 공유합니다. |
자원 소비 | 더 | 적게 |
능률 | 의사 소통의 맥락에서 프로세스와 비교할 때 효율성이 떨어진다. | 의사 소통의 맥락에서 효율성을 향상시킵니다. |
창조에 필요한 시간 | 더 | 적게 |
컨텍스트 전환 시간 | 시간이 더 걸린다. | 더 적은 시간을 소비합니다. |
불확실한 종료 | 결과적으로 프로세스가 손실됩니다. | 스레드를 다시 확보 할 수 있습니다. |
종료에 필요한 시간 | 더 | 적게 |
프로세스의 정의
이 프로세스는 프로그램을 실행하고 프로그램에서 지정된 관련 작업을 수행하거나 프로그램이 실행되는 실행 단위입니다. 운영 체제는 CPU 사용을위한 프로세스를 생성, 스케줄 및 종료합니다. 주 프로세스에 의해 생성 된 다른 프로세스를 하위 프로세스라고합니다.
프로세스 작업은 프로세스 ID, 우선 순위, 상태, PWS 및 내용과 같은 프로세스에 관한 모든 중요한 정보를 포함하는 프로세스의 두뇌로 간주 될 수있는 PCB (프로세스 제어 블록)의 도움으로 제어됩니다 CPU 레지스터 .
PCB는 스케줄링, 디스패치, 컨텍스트 저장이라는 3 가지 기능을 사용하는 커널 기반 데이터 구조이기도합니다.
- 스케줄링 - 간단한 단어로 프로세스의 순서를 선택하는 방법은 CPU에서 먼저 실행되어야하는 프로세스를 선택합니다.
- Dispatching - 프로세스가 실행될 환경을 설정합니다.
- 컨텍스트 저장 -이 함수는 프로세스가 재개되거나 차단 될 때 프로세스에 관한 정보를 저장합니다.
준비, 실행, 차단 및 종료와 같은 프로세스 수명주기에 포함 된 특정 상태가 있습니다. 프로세스 상태는 프로세스 활동을 즉시 추적하는 데 사용됩니다.
프로그래머의 관점에서, 프로세스는 프로그램의 동시 실행을 달성하는 매체입니다. 동시 프로그램의 주요 프로세스는 하위 프로세스를 작성합니다. 주요 프로세스와 하위 프로세스는 공통 목표를 달성하기 위해 각각의 프로세스와 상호 작용해야합니다.
프로세스의 인터리빙 작업은 한 프로세스의 입출력 작업이 다른 프로세스의 계산 작업과 겹칠 때 계산 속도를 향상시킵니다.
프로세스 속성 :
- 각 프로세스의 생성에는 각 프로세스에 대한 시스템 호출이 별도로 포함됩니다.
- 프로세스는 격리 된 실행 엔터티이며 데이터와 정보를 공유하지 않습니다.
- 프로세스는 통신을 위해 IPC (프로세스 간 통신) 메커니즘을 사용하여 시스템 호출 수를 크게 늘립니다.
- 프로세스 관리는 더 많은 시스템 호출을 사용합니다.
- 각 프로세스에는 자체 스택 및 힙 메모리, 명령어, 데이터 및 메모리 맵이 있습니다.
스레드 정의
스레드는 작업을 수행하기 위해 프로세스 리소스를 사용하는 프로그램 실행입니다. 단일 프로그램 내의 모든 스레드는 프로세스 내에 논리적으로 포함됩니다. 커널은 각 스레드에 스택과 스레드 제어 블록 (TCB)을 할당합니다. 운영 체제는 동일한 프로세스의 스레드 간 전환시 스택 포인터와 CPU 상태 만 저장합니다.
스레드는 세 가지 방법으로 구현됩니다. 이들은 커널 수준 스레드, 사용자 수준 스레드, 하이브리드 스레드입니다. 스레드는 준비 상태와 차단 상태의 세 상태를 가질 수 있습니다. 스위칭 오버 헤드를 감소시키는 자원 할당 및 통신 상태가 아닌 계산 상태만을 포함한다. 동시성 (병렬성)을 향상 시키므로 속도도 증가합니다.
멀티 스레드는 또한 단점을 수반하며, 다중 스레드는 복잡성을 발생시키지 않지만 상호 작용은 복잡합니다.
스레드가 활성화되어있을 때 스레드는 우선 순위 속성을 가져야합니다. 동일한 프로세스에서 다른 활성 스레드에 대한 실행에 걸리는 시간은 스레드의 우선 순위에 의해 지정됩니다.
스레드 등록 정보 :
- 하나의 시스템 호출 만 하나 이상의 스레드 (경량 프로세스)를 작성할 수 있습니다.
- 스레드는 데이터와 정보를 공유합니다.
- 스레드는 명령어, 전역 및 힙 영역을 공유하지만 자체 스택과 레지스터를 가지고 있습니다.
- 스레드 관리는 공유 메모리를 사용하여 스레드 간의 통신을 달성 할 수 있기 때문에 시스템 호출을 거의 사용하지 않습니다.
- 프로세스의 격리 속성은 리소스 소비면에서 오버 헤드를 증가시킵니다.
프로세스와 스레드의 주요 차이점
- 프로그램의 모든 스레드는 프로세스 내에 논리적으로 포함됩니다.
- 프로세스는 가중치가 있지만 스레드는 가중치가 있습니다.
- 프로그램은 격리 된 실행 단위이며 스레드는 격리되어 있지 않고 메모리를 공유합니다.
- 스레드는 개별 존재를 가질 수 없습니다. 그것은 프로세스에 첨부됩니다. 반면에 프로세스는 개별적으로 존재할 수 있습니다.
- 스레드가 만료 될 때 모든 스레드가 자체 스택을 가지고 있으므로 연관된 스택을 복구 할 수 있습니다. 반대로 프로세스가 종료되면 모든 스레드가 프로세스를 포함하여 종료됩니다.
결론
프로세스는 동시 및 순차 방식으로 프로그램 실행을 달성하는 데 사용됩니다. 스레드는 많은 스레드가 동일한 프로세스 환경을 사용할 때 프로세스 환경을 사용하는 프로그램 실행 단위이지만 코드, 데이터 및 리소스를 공유해야합니다. 운영 체제는이 사실을 사용하여 오버 헤드를 줄이고 계산을 향상시킵니다.