운영체제(OS)/with PintOS

(Project2-User Programs) - Deny Write on Executables

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

Deny Write on Executables

실행 파일로 사용 중인 파일에 대한 쓰기를 거부하는 코드를 추가하세요. 프로세스가 디스크에서 변경 중인 코드를 실행하려고 할 때 예상치 못한 결과가 발생할 수 있기 때문에 많은 OS에서 이 기능을 사용합니다. 이는 프로젝트 3에서 가상 메모리가 구현된 후 특히 중요해졌지만, 지금도 문제가 될 수 있습니다.


열린 파일에 대한 쓰기를 방지하기 위해 file_deny_write()를 사용할 수 있습니다. 파일에서 file_allow_write()를 호출하면 다시 활성화됩니다(다른 오프너에서 파일 쓰기가 거부되지 않는 한). 파일을 닫아도 쓰기가 다시 활성화됩니다. 따라서 프로세스의 실행 파일에 대한 쓰기를 거부하려면 프로세스가 계속 실행되고 있는 동안에는 파일을 열어 두어야 합니다.

static bool load(const char *file_name, struct intr_frame *if_)
{
   ... 생략
 
    if (file != NULL)
    {
        t->file_executing = file;
        lock_acquire(&filesys_lock);
        file_deny_write(file);
        lock_release(&filesys_lock);
    }
    return success;
}