In modern operating systems, there are no concepts of periodic and aperiodic processes. You can, however, consider a process to be periodic if it starts with some specific period, for example, using subsystems such as cron or anacron (for occasionally shutting down systems, such as desktops).
In all cases when the process is restarted (and this is what happens when the process is executed periodically by the cron ), it receives a new PID.
Update 1.
As for real-time systems, this question here acquires a completely different sound. In the theory of real-time operating systems (RTOS), periodic and aperiodic tasks are distinguished. A periodic task is one that is performed in accordance with a well-known timetable and imposes strict restrictions on the execution time (hard deadlines). In contrast, aperiodic tasks are performed at a predetermined time and can impose both hard and soft execution time requirements (soft deadlines and hard deadlines).
How exactly the process will live, whether it will be restarted or just get control at a certain time, may depend on the implementation and is not determined in theory as such, but in all implementations that I know of at the present time, the process does not end, execution occurs within one process , it is simply postponed until its next launch is required.
For example, here’s how a periodic task is implemented in FreeRTOS:
// Perform an action every 10 ticks. void vTaskFunction( void * pvParameters ) { TickType_t xLastWakeTime; const TickType_t xFrequency = 10; // Initialise the xLastWakeTime variable with the current time. xLastWakeTime = xTaskGetTickCount(); for( ;; ) { // Wait for the next cycle. vTaskDelayUntil( &xLastWakeTime, xFrequency ); // Perform action here. } }
Source: FreeRTOS Scheduler API Documentation , vTaskDelayUntil
As you can see from the example, execution takes place within the framework of a single process.