>백엔드 개발 >PHP 문제 >PHP 스레드와 프로세스의 차이점

PHP 스레드와 프로세스의 차이점

(*-*)浩
(*-*)浩원래의
2019-09-16 13:58:304219검색

PHP 스레드와 프로세스의 차이점

1. 프로세스란 무엇인가요? 프로그램 실행의 인스턴스이며 프로세스를 CPU, 메모리 등의 자원에 할당할 수 있습니다. 프로세스에는 일반적으로 명령어 세트와 시스템 리소스가 포함됩니다. 여기서 명령어 세트는 코드이고 시스템 리소스에는 CPU, 메모리, I/O 등이 포함됩니다. (추천 학습: PHP 프로그래밍 초보부터 숙달까지
)

프로세스는 데이터 세트에 있는 프로그램의 동적 실행 프로세스로 간단히 "PHP 프로그래밍"으로 이해될 수 있습니다. CPU 자원 할당 및 스케줄링을 위한 독립적인 단위인 '실행 프로그램'을 실행합니다. 프로세스는 일반적으로 프로그램, 데이터 세트, 프로세스 제어 블록의 세 부분으로 구성됩니다. 우리가 작성하는 프로그램은 프로세스가 완료하는 데 필요한 기능과 이를 완료하는 방법을 설명하는 데 사용됩니다. 데이터 세트는 실행 중에 프로그램이 사용해야 하는 리소스입니다. 프로세스 제어 블록은 프로세스의 외부 특성을 기록하는 데 사용됩니다. , 프로세스의 실행 변경 프로세스를 설명하고, 시스템을 제어하고 관리하는 데 사용할 수 있습니다. 이는 시스템이 프로세스의 존재를 감지하는 유일한 신호입니다.

프로세스의 한계는 생성, 취소, 전환의 오버헤드가 상대적으로 높다는 점입니다.

2. 프로세스는 더 작고 독립적으로 실행되는 단위입니다.

설명: 프로세스에는 두 가지 특성이 있습니다. 하나는 리소스의 소유권이고 다른 하나는 예약 실행(명령어 세트)입니다. 스레드는 경로를 참조하는 예약 실행의 일부입니다. 프로그램 실행 흐름이라고도 하는 프로세스 실행 프로세스입니다. 스레드는 때때로 경량 프로세스라고도 합니다.

스레드는 프로세스 후에 개발된 개념입니다. 스레드는 경량 프로세스라고도 하며, CPU의 기본 실행 단위이자 프로그램 실행 프로세스의 최소 단위로 스레드 ID, 프로그램 카운터, 레지스터 세트, 스택으로 구성됩니다. 프로세스에는 여러 스레드가 포함될 수 있습니다.

스레드의 장점은 프로그램 동시 실행에 따른 오버헤드를 줄이고 운영체제의 동시 성능을 향상시킨다는 점입니다. 단점은 스레드가 자체 시스템 리소스를 갖지 않고 필요한 리소스만 갖는다는 것입니다. 그러나 동일한 프로세스의 각 스레드는 프로세스가 소유한 시스템 리소스를 공유할 수 있습니다. 프로세스를 작업장에 비유하면 스레드는 작업장의 작업자와 같습니다. 그러나 일부 독점 리소스에는 잠금 메커니즘이 있으며 잘못 처리하면 "교착 상태"가 발생할 수 있습니다.

프로세스와 스레드의 차이점

(1) 프로세스는 자원 할당과 스케줄링을 담당하는 독립적인 단위이고, 스레드는 스케줄링됩니다. CPU 기본 유닛별

(2) 동일한 프로세스에는 여러 개의 스레드가 포함될 수 있으며, 스레드는 전체 프로세스의 리소스(레지스터, 스택, 컨텍스트)를 공유합니다. 스레드는 하나의 프로세스에만 속할 수 있으며 프로세스는 여러 스레드를 가질 수 있습니다.

(3) 프로세스 생성은 포크(fork) 또는 vfork(vfork)를 호출합니다. 스레드 호출 pthread_create, process 종료 후에는 자신이 소유한 모든 스레드가 소멸되며 스레드의 끝은 동일한 프로세스에 있는 다른 스레드의 끝에 영향을 주지 않습니다.

(4) 스레드는 경량 프로세스입니다. , 생성 및 소멸에 필요한 시간은 프로세스의 시간보다 훨씬 적습니다. 즉, 스레드는 실제로 CPU에서 실행됩니다.

(5) 스레드에서 실행할 때는 일반적으로 동기화 및 상호 배제가 필요합니다. 스레드는 동일한 프로세스의 모든 리소스를 공유하기 때문입니다.

(6) 스레드에는 고유한 개인 속성이 있습니다. TCB , 스레드 ID, 레지스터, 하드웨어 컨텍스트 및 프로세스에도 고유한 개인 속성 프로세스 제어 블록 PCB가 있습니다. 이러한 개인 속성은 공유되지 않으며 프로세스 또는 스레드를 식별하는 데 사용됩니다

위 내용은 PHP 스레드와 프로세스의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.