5장. 실시간 프로세스 및 스레드를 위한 RHEL
운영 체제의 RHEL for Real Time 주요 요소는 인터럽트 대기 시간과 스레드 전환 대기 시간을 최소화합니다. 모든 프로그램은 스레드와 프로세스를 사용하지만 RHEL for Real Time은 표준 Red Hat Enterprise Linux와는 다른 방식으로 처리합니다.
실시간으로 병렬 처리를 사용하면 작업 실행 및 대기 시간에서 효율성을 높일 수 있습니다. 병렬 처리는 CPU의 멀티 코어 인프라를 사용하여 여러 작업 또는 여러 하위 작업을 동시에 실행하는 경우입니다.
5.1. 프로세스 링크 복사링크가 클립보드에 복사되었습니다!
가장 간단한 관점에서 실시간 프로세스는 실행 중인 프로그램입니다. 용어 프로세스는 여러 스레드가 잠재적으로 포함된 독립적인 주소 공간을 나타냅니다. 한 주소 공간 내에서 실행되는 두 개 이상의 프로세스의 개념이 개발되면 Linux는 다른 프로세스와 주소 공간을 공유하는 프로세스 구조로 전환되었습니다. 이는 프로세스 데이터 구조가 작을 때 제대로 작동합니다.
UNIX® 스타일 프로세스 구성에는 다음이 포함됩니다.
- 가상 메모리의 주소 매핑입니다.
- 실행 컨텍스트(PC, 스택, 레지스터)입니다.
- 주 및 회계 정보
실시간으로 각 프로세스는 종종 부모 스레드라고 하는 단일 스레드로 시작합니다. fork() 시스템 호출을 사용하여 상위 스레드에서 추가 스레드를 생성할 수 있습니다. fork() 는 새 프로세스 ID를 제외하고 상위 프로세스와 동일한 새 하위 프로세스를 생성합니다. 하위 프로세스는 생성 프로세스와 독립적으로 실행됩니다. 상위 및 하위 프로세스를 동시에 실행할 수 있습니다. fork() 와 exec() 시스템 호출의 차이점은 fork() 가 상위 프로세스의 복사본인 새 프로세스를 시작하고 exec() 는 현재 프로세스 이미지를 새 프로세스 이미지로 대체한다는 것입니다.
실시간으로 fork() 시스템 호출이 성공하면 하위 프로세스의 프로세스 식별자가 반환되고 상위 프로세스는 0이 아닌 값을 반환합니다. 오류 발생 시 오류 번호를 반환합니다.