본문 바로가기
정글/TIL

[크래프톤 정글] 76일 - PintOS 구현 시작!

by 위대한초밥V 2023. 6. 18.
오늘 한 일 👩‍💻
- 알고리즘 문제 풀이
- gitbook - Anonymous Page 
- PintOS 구현 시작

알고리즘

https://school.programmers.co.kr/learn/courses/30/lessons/161990

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

gitbook

https://mywnajsldkf.tistory.com/48

 

[Project3] Virtual Memory(3) - Anonymous Page

이번 프로젝트에서는 anonymous page라고 하는 non-disk based image를 구현할 것이다. non-disk based image란 디스크(하드 디스크, 다른 저장 매체)가 아닌 다른 형태의 저장 매체나 메모리에 저장되는 이미지

mywnajsldkf.tistory.com

 

Pintos 구현

오늘은 Virtual Memory - Supplemental Table 구현을 시작했다. 

어떤 것부터 해야할까 고민하다가, 일단 만들라고 하는 함수부터 구현하기 시작했다. 확인해보니 함수 안에 또 다른 함수를 구현하는 작업들도 있었다.

이번 주차는 저번과 다르게 중간중간 구현한 것을 테스트 케이스만 가지고 하기에는 어려웠다.

그래서 이번에는 ASSERT문을 적극 활용하기로 해봤다. 

 

예를들어, 이런식으로 확인하는 것이다. 

void
supplemental_page_table_init (struct supplemental_page_table *spt UNUSED) {
	// supplemental_page_table 테이블을 초기화한다.

	// ✅ 테스트할 때
	// bool initialize_hash = hash_init(&spt->spt_hash, hashing, hash_less, NULL);
	// ASSERT(initialize_hash != true);	// initialize_hash가 true라면 프로그램을 종료시킨다.

	hash_init(&spt->spt_hash, hashing, hash_less, NULL);
}

ASSERT문이 중간중간에 있어서, 활용도가 높긴하지만 몇몇은 해당 함수에 도달하기 전에 터져서 어떤 곳에 ASSERT문을 둬야할지 고민된다. 적극 활용하고 싶은데, 생각보다 어렵다.

이론도 좋지만, 구현에서 얻어가는 것도 많은 것 같다.

 

내일 할 일 📝
- Memory Management 구현
- 알고리즘
- 주간 발표 준비
반응형