목록pintos (2)
life is egg
메모리의 공간이 거의 없다면 운영체제는 메모리 압박을 해소하기 위해 다른 페이지들을 강제적으로 paing out 해여 활발히 사용 중인 페이지들을 위한 공간을 확보해야한다.. 내보낼(evit) 페이지 선택은 운영체제의 교체 정책에 따라서 달라진다. 핀토스에서 우리팀이 구현한 내보낼 페이지의 선택을 어떻게 하는지 알아보자 Memory pressure 먼저 물리 메모리가 가득 찬 상황을 알아보자우리팀이 구현한 가상메모리 페이지를 물리메모리 프레임과 맵핑을 시키는 함수이다.해당함수에서 frame을 얻어오는 함수인 vm_get_frame()이 있는데 해당 함수를 살펴보면.. 먼저 frame을 calloc을 통해서 커널풀에서 할당받고 난뒤에 frame 내부에 존재하는 kva를 초기화 시켜주는데 이때 pallo..
뜬다... 오류..! 해당 문제는 Deny Write on Executables 를 구현하고 동기화 관련된 테스트 중 발생한 오류이다 . 백트레이스 해서 call stack을 분석해보면 exec 시스템콜에서 내부 함수들을 호출하다가 최종적으로 real_time_sleep 에서 해당 부분의 검증에서 검증에 실패해서 발생한 오류이다 ... 즉 인터럽트를 받을 수 있는 상태여야하는데 인터럽트를 막아논 상태 ASSERT(intr_get_level() == INTR_ON); 호출 스택을 살펴보면 우리가 수정한 함수는 process_exec 부터 load까지 극히 일부분이고 심지어 이 함수에서 인터럽트를 변경하는 부분이 없어서 어디가 잘못된 것인지 의문이였다 따라서 exec 시스템콜 호출뿐만아니라 해당 ..