프로세스 제어 데몬
Process control daemon프로세스 컨트롤 데몬(PCD)은 임베디드 Linux 기반 프로젝트(컨슈머 일렉트로닉스 및 네트워크 디바이스 등)용 오픈소스 경량 시스템 수준의 프로세스 매니저/컨트롤러입니다.
이 툴은 임베디드 Linux 기반의 모든 제품에 대한 보완 서비스를 제공하며 임베디드 제품의 요구에 특화되어 있습니다.PCD는 임베디드 Linux 디스트리뷰션에서는 이러한 툴을 제공하지 않기 때문에 작성되었습니다.기타 유사한 툴은 호환성, 퍼포먼스 및 제한된 하드웨어 리소스 측면에서 임베디드 제품에는 적합하지 않습니다.
배경
이 PCD 프로젝트는 당시 Texas Instruments 이스라엘의 선임 소프트웨어 엔지니어인 Hai Shalom이 M의 일부로 설계 및 구현했습니다.컴퓨터 공학 박사 학위이 프로젝트는 Texas Instruments의 광대역 솔루션 중 하나(ARM1176 Running MV-Linux Pro-5.00)에 대한 진정한 요구 때문에 시작되었습니다.시스템은 원래 셸 스크립트로 시작되었으며, 여기서 init 프로세스가 rcS 스크립트를 시작하고 다른 스크립트가 시작되었습니다.시스템 소프트웨어의 빠른 개발 프로세스로 인해 더 많은 프로세스와 태스크가 추가되었고 스크립트가 너무 길어지고 판독이 불가능하며 유지보수가 어려워졌습니다.시스템의 기동 프로세스를 효율적으로 제어할 수 있는 방법이 없었습니다.프로세스 간 종속성을 동기화하는 것은 어려웠고 초기화 순서를 결정하는 것은 많은 노력이 필요했습니다.
예를 들어 소켓에서 데이터를 수신하는 데몬은 이 소켓에서 데이터를 전송하는 클라이언트보다 앞서야 합니다.셸 스크립트를 사용하면 이 상태를 효율적으로 확인할 수 없습니다.준비되기 전에 특정 상태에 있어야 하는 복잡한 상태 머신이 있는 서비스에는 클라이언트와 동기화하는 표준 수단이 없습니다.
시스템의 상태를 감시하는 것도 문제였습니다.시스템 내의 프로세스를 감시하고 제어하는 엔티티는 없었습니다.따라서 크래시의 경우 크래시 프로세스가 수동으로 검출될 때까지 시스템이 불안정하거나 사용할 수 없게 되었습니다.
당시에는 런타임 디버깅 기능이 매우 제한되었습니다.프로세스 크래시가 발생했을 경우 낮은 최적화, 디버깅 기호 및 GDB 서버를 지원하는 특별한 버전을 컴파일하지 않는 한 디버깅 정보를 사용할 수 없습니다.
PCD를 제품에 통합한 결과, 기동 시간이 단축되어 시스템의 견고성, 신뢰성, 가용성이 큰폭으로 향상되었습니다.크래시(세그먼트 장애, 버스 오류 등) 시 사용할 수 있는 확장 디버깅 정보에 의해 디버깅 및 리모트디버깅 기능도 향상되었습니다.
이 프로젝트는 더 이상 활성화되지 않았지만 더 많은 임베디드 아키텍처와 새로운 기능을 지원하도록 확장되었습니다.
개략적인 기능
- 텍스트 구성 파일에 따라 동기화된 결정론적 방법으로 시스템을 시작합니다.
- 시스템 내의 모든 프로세스와 서비스를 제어하고 감시합니다.
- 에러나 크래시가 발생했을 경우 시스템을 복구하여 신뢰성을 높입니다.
- 크래시 시 편리하고 상세한 디버깅 정보(프로세스 상세, 레지스터 덤프 및 메모리 맵)를 제공합니다.
- 시스템 프로세스의 그래픽 표현을 만듭니다.
배열
PCD는 PCD가 제어하는 모든 프로세스, 데몬 및 태스크를 사용하여 구성해야 합니다.설정은 사람이 읽을 수 있는 간단한 Configuration파일(AKA PCD 스크립트)을 사용하여 런타임에 실행됩니다.각 프로세스에는 이를 설명하고 다른 규칙에서의 종속성을 정의하며 프로세스 세부사항 및 실패 시 수행할 작업을 정의하는 자체 규칙 블록이 있습니다.규칙 블록은 프로세스 간 의존성을 가장 결정론적 방법으로 정의하며, 그 결과 PCD는 이 정보를 바탕으로 의존성 트리를 구축합니다.모든 규칙이 작성되고 의존관계 트리가 확립되면 PCD는 가장 신뢰성 높은 방법으로 시스템을 부팅할 수 있으며 스크립트 부팅에 비해 부팅 시간이 빨라집니다.PCD 스크립트를 호스트머신에서 사용하여 시스템 부팅 의존관계를 보다 잘 이해하고 문서화하기 위해 그래픽 표현을 생성할 수도 있습니다(다음 예 참조).
크래시 리커버리
PCD의 큰 장점 중 하나는 디버깅 기능과 크래시 리커버리 기능입니다.또한 PCD는 크래시 데몬을 구현하여 시스템헬스를 항상 감시하고 크래시 시 회복 액션을 수행합니다.이 기능은 시스템의 안정성, 견고성 및 가용성을 향상시킵니다.
PCD는 또한 개발자와 테스트 엔지니어가 무슨 일이 일어났는지 이해하는 데 도움이 되는 유용한 디버깅 정보를 제공합니다.디버깅 정보는 시스템 콘솔에 표시되며 나중에 분석할 수 있도록 비휘발성 스토리지에 저장할 수 있습니다.상세한 디버깅 정보에는 모든 프로세스 상세, 모든 신호 상세, 완전한 레지스터 덤프(지원 아키텍처 상의) 및 프로세스의 주소 맵이 포함됩니다.
이 디버깅 정보는 언제 어디서나 사용할 수 있으며(필드 내에서도) 특별한 디버깅빌드가 필요하지 않습니다.
라이선스
PCD 프로젝트는 오픈 소스 프로젝트이며, 자유 소프트웨어 재단이 발행한 GNU Lesser General Public License 버전 2.1에 따라 라이센스가 부여됩니다.
- 구입 비용이나 로열티 수수료는 없습니다.
- 소스코드는 완전히 사용할 수 있다.
- 광범위한 노출로 인한 고품질 코드입니다.
- LGPL을 사용하면 PCD에 독점 코드를 안전하게 링크 및 혼합할 수 있습니다.라이센스 조건이 유지되는 한 PCD를 다른 소프트웨어 패키지와 함께 재배포할 수 있습니다.PCD 코드에서 수행된 변경 또는 확장은 커뮤니티에 반환해야 합니다.
- 지속적인 개발:새로운 기능 및 기타 플랫폼이 지원되게 되었습니다.
- 커뮤니티 지원 및 버그 수정
- 새로운 기능이 필요한 경우 프로젝트 트래커 시스템에서 요청하거나 PCD 커뮤니티에 참여하여 개발하면 다른 사용자도 생산성을 누릴 수 있습니다.
리뷰
PCD 프로젝트는 소프트웨어 엔지니어 및 프로젝트 매니저로부터 좋은 평가를 받았습니다.「PCD는, 내가 책임지고 있는 프로젝트에서 큰 성공을 거두었습니다. 4가지 주요 이점이 있습니다. 초기화 코드를 단순화하고 부팅 시간을 단축하며 디버깅 작업(크래시 로그 제공)을 줄이고 기존 WD 구현(모든 프로세스를 감시하고 그에 따라 조치)을 개선합니다. 이 모든 것이 보다 나은 제품과 효율적인 개발 흐름으로 이어집니다."[1]
PCD 프로젝트는 ARM Technology Conference 2010에서 발표되어 좋은 피드백을 받았습니다."오픈 소스 Linux를 실시간 임베디드 설계, 특히 ARM 아키텍처에서 사용하려는 소프트웨어 개발자들에게는 상황이 훨씬 쉬워지고 있습니다."[2]
레퍼런스
외부 링크
- SourceForge.net의 PCD 프로젝트 페이지 - 최신 버전을 다운로드하거나 코드를 참조하거나 커뮤니티에 참여하거나 도움말과 지원을 받을 수 있습니다.
- PCD 지원 포럼
- ARM 테크놀로지 컨퍼런스[permanent dead link] 2010에서의 PCD 프레젠테이션
- GNU Lesser General Public License 버전 2.1


