>  기사  >  백엔드 개발  >  PHP 프로세스 모델, 프로세스 통신 방법, 프로세스 스레드의 차이점은 무엇입니까?

PHP 프로세스 모델, 프로세스 통신 방법, 프로세스 스레드의 차이점은 무엇입니까?

coldplay.xixi
coldplay.xixi원래의
2020-07-01 09:48:424951검색

PHP 프로세스 모델은 실행 프로그램으로, 프로세서에 할당되어 프로세서에 의해 실행될 수 있습니다. PHP 프로세스 통신 방법에는 파이프와 명명된 파이프, 신호, 공유 메모리 등이 포함됩니다. PHP 프로세스 스레드 간의 차이점은 다음과 같습니다. : 자원 할당과 스케줄링의 독립적인 단위이며, 스레드는 CPU 스케줄링의 기본 단위입니다.

PHP 프로세스 모델, 프로세스 통신 방법, 프로세스 스레드의 차이점은 무엇입니까?

PHP 프로세스 모델, 프로세스 통신 방법 및 프로세스 스레드의 차이점은 다음과 같습니다.

1. PHP 프로세스 모델

프로세스 개념은 운영 체제 구조의 기초입니다. . 멀틱스의 디자이너들은 1960년대에 처음으로 이 기술 용어를 사용했는데, 이는 숙제보다 더 일반적인 의미를 갖습니다. 프로세스의 정의는 다음과 같습니다.

1. 실행 프로그램.

2. 컴퓨터에서 실행되는 프로그램의 인스턴스입니다.

3. 프로세서에 할당되고 실행될 수 있는 엔터티입니다.

4. 단일 순차적 실행 스레드, 현재 상태 및 관련 시스템 리소스 집합으로 설명되는 활동 단위입니다.

관련 학습 권장사항: PHP 프로그래밍 입문부터 숙련까지

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

프로세스는 리소스 할당의 기본 단위입니다. 프로세스와 관련된 모든 리소스는 프로세스 제어 블록 PCB에 기록됩니다. 프로세스가 이러한 리소스를 소유하거나 사용하고 있음을 나타냅니다. 进程是资源分配的基本单位。所有与该进程有关的资源,都被记录在进程控制块PCB中。以表示该进程拥有这些资源或正在使用它们。

另外,进程也是抢占处理机的调度单位,它拥有一个完整的虚拟地址空间。当进程发生调度时,不同的进程拥有不同的虚拟地址空间,而同一进程内的不同线程共享同一地址空间。

与进程相对应,线程与资源分配无关,它属于某一个进程,并与进程内的其他线程一起共享进程的资源。

线程只由相关堆栈(系统栈或用户栈)寄存器和线程控制表TCB

또한 프로세스는 프로세서를 선점하는 스케줄링 단위이기도 하며 완전한 가상 주소 공간을 갖습니다. 프로세스가 예약되면 서로 다른 프로세스는 서로 다른 가상 주소 공간을 가지며 동일한 프로세스 내의 서로 다른 스레드는 동일한 주소 공간을 공유합니다.

프로세스에 해당하는 스레드는 리소스 할당과 관련이 없으며 특정 프로세스에 속하며 프로세스의 다른 스레드와 프로세스의 리소스를 공유합니다.

스레드는 관련 스택(시스템 스택 또는 사용자 스택) 레지스터와 스레드 제어 테이블 TCB로만 구성됩니다. 레지스터는 스레드 내에 지역 변수를 저장하는 데 사용할 수 있지만 다른 스레드와 관련된 변수는 저장할 수 없습니다.

일반적으로 프로세스에는 프로세스가 소유한 리소스를 활용할 수 있는 여러 스레드가 포함될 수 있습니다. 스레드를 도입한 운영 체제에서 프로세스는 일반적으로 자원 할당의 기본 단위로 간주되며, 스레드는 독립적인 작업 및 독립적인 스케줄링의 기본 단위로 간주됩니다. 스레드는 프로세스보다 작고 기본적으로 시스템 리소스를 소유하지 않기 때문에 스레드를 예약하는 데 소요되는 오버헤드가 훨씬 작아지고 시스템의 여러 프로그램 간의 동시 실행 정도를 보다 효율적으로 높일 수 있으므로 시스템 리소스 활용도가 크게 향상됩니다. 처리량. 따라서 최근 출시된 범용 운영 체제에서는 시스템의 동시성을 더욱 향상시키기 위해 스레드를 도입했으며 이를 현대 운영 체제의 중요한 지표로 간주합니다.

스레드와 프로세스의 차이점은 다음 4가지로 요약할 수 있습니다.

(1) 프로세스는 자원 할당과 스케줄링을 위한 독립적인 단위이고, 스레드는 CPU 스케줄링의 기본 단위입니다.

(2 ) 동일한 프로세스 내에는 여러 개의 스레드가 포함될 수 있으며, 스레드는 전체 프로세스의 자원(레지스터, 스택, 컨텍스트)을 공유하며, 프로세스는 적어도 하나의 스레드를 포함합니다.

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

(4) 스레드는 가벼운 프로세스이며 프로세스보다 생성 및 소멸 시간이 훨씬 짧습니다. 운영 체제의 모든 실행 기능은 스레드 생성으로 완료됩니다

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

(6) 스레드에는 자체 개인 속성 TCB, 스레드 ID, 레지스터, 하드웨어 컨텍스트가 있으며 프로세스에도 자체 개인 속성 프로세스 제어 블록 PCB가 있습니다. 속성은 공유되지 않으며 프로세스나 스레드를 표시하는 데 사용됩니다.

3. 프로세스 간 통신 방법

1. 파이프(Pipe) 및 명명된 파이프(Named Pipe):

Pipe는 사람에게 사용할 수 있습니다. with kinship 관련 프로세스 간의 통신을 위해 명명된 파이프는 이름이 없는 파이프의 한계를 극복합니다. 따라서 파이프의 기능 외에도 관련 없는 프로세스 간의 통신도 허용합니다. 🎜🎜🎜2. 특정 이벤트가 발생했음을 수신 프로세스에 알리는 데 사용되는 복잡한 통신 방법으로, 프로세스는 초기 Unix 신호 의미 기능을 지원하는 것 외에도 프로세스 자체에 신호를 보낼 수도 있습니다. , Linux는 의미론적 적합성 Posix.1 표준 신호 함수 sigaction도 지원합니다(실제로 이 함수는 BSD를 기반으로 합니다. 신뢰할 수 있는 신호 메커니즘을 구현하고 외부 인터페이스를 통합하기 위해 BSD는 sigaction 함수를 사용하여 신호 함수를 다시 구현했습니다). 🎜

3. 메시지 큐(메시지 큐): 메시지 큐는 Posix 메시지 큐 시스템 V 메시지 큐를 포함한 메시지의 링크된 목록입니다. 충분한 권한이 있는 프로세스는 큐에 메시지를 추가할 수 있고, 읽기 권한이 부여된 프로세스는 큐에서 메시지를 읽을 수 있습니다. 메시지 큐는 소량의 정보를 전달하는 신호의 단점을 극복하고 파이프는 형식화되지 않은 바이트 스트림만 전달할 수 있으며 버퍼 크기는 제한됩니다.

4. 공유 메모리: 가장 빠른 IPC 형식인 동일한 메모리 공간에 액세스할 수 있는 여러 프로세스를 활성화합니다. 이는 다른 통신 메커니즘의 작동 효율성을 낮추도록 설계되었습니다. 프로세스 간 동기화 및 상호 배제를 달성하기 위해 세마포어와 같은 다른 통신 메커니즘과 함께 사용되는 경우가 많습니다.

세마포어: 주로 프로세스 간 및 동일한 프로세스의 다른 스레드 간 동기화 수단으로 사용됩니다.

5. 소켓: 다른 시스템 간의 프로세스 간 통신에 사용할 수 있는 보다 일반적인 프로세스 간 통신 메커니즘입니다. 원래 Unix 시스템의 BSD 분기용으로 개발되었지만 이제는 일반적으로 다른 Unix 계열 시스템에도 이식 가능합니다. Linux 및 System V 변형 모두 소켓을 지원합니다.

위 내용은 PHP 프로세스 모델, 프로세스 통신 방법, 프로세스 스레드의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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