운영체제(OS)/with PintOS

(Project2-User Programs) - Process Termination Message

스탠딩 2023. 12. 26. 21:19

Process Termination Message

Print out the process termination message

사용자 프로세스가 종료를 호출하거나 다른 이유로 인해 종료될 때마다 프로세스의 이름과 종료 코드를 다음과 같은 형식으로 인쇄합니다.

printf ("%s: exit(%d)\n", ...);

 

인쇄되는 이름은 fork()에 전달된 전체 이름이어야 합니다. 사용자 프로세스가 아닌 커널 스레드가 종료되거나 중단 시스템 호출이 호출될 때는 이러한 메시지를 인쇄하지 마십시오. 이 메시지는 프로세스가 로드되지 않을 때 선택 사항입니다.

이 메시지 외에 제공된 핀토가 아직 인쇄하지 않은 다른 메시지는 인쇄하지 마세요. 디버깅 중에 추가 메시지가 유용할 수 있지만 채점 스크립트를 혼동하여 점수가 낮아질 수 있습니다.

void process_exit(void)
{
    struct thread *curr = thread_current();
    /* TODO: Your code goes here.
     * TODO: Implement process termination message (see
     * TODO: project2/process_termination.html).
     * TODO: We recommend you to implement process resource cleanup here. */
    curr->process_exit = true;
    struct thread *parent = curr->parent;

    if (curr->is_user_thread == true)
        printf("%s: exit(%d)\n", curr->name, curr->exit_status);

    lock_acquire(&process_lock);
    list_remove(&(curr->child_elem));
    lock_release(&process_lock);

    process_cleanup();
}