문제 풀이/OSTEP / / 2024. 11. 28. 02:10

OSTEP 16-vm-segmentation(Segmentation) 문제 풀이

잘못된 풀이가 있다면 댓글 부탁드립니다.

숙제

이 프로그램은 세그멘테이션 시스템에서 주소 변환이 어떤 식으로 일어나는지 보여준다.
자세한 내용은 README를 참조하시오.

 

문제

1. 우선 몇 주소를 변환하기 위해 작은 주소 공간을 사용하여 보자.
여기에 여러 가지 랜덤 시드와 함께 간단한 매개변수의 집합이 있다.
이때 주소를 변환할 수 있을까?

segmentation . py −a 128 −p 512 −b 0 −l 20 −B 512 −L 20 −s 0
segmentation . py −a 128 −p 512 −b 0 −l 20 −B 512 −L 20 −s 1
segmentation . py −a 128 −p 512 −b 0 −l 20 −B 512 −L 20 −s 2

2. 이제 우리가 구축한 이 작은 주소 공간을 이해하고 있는지 알아보자(위의 질문에서 사용한 매개변수를 사용하여).
세그멘트 0의 합법적인 가상 주소의 최댓값은 무엇인가?
세그멘트 1의 합법적인 가상 주소의 최저값은 무엇인가?
이 전체 주소 공간의 잘못된 주소 중 가장 큰 주소와 가장 작은 주소는 무엇인가?
마지막으로, 플래그 -A와 함께 실행한 segmentation.py의 정확성을 어떻게 확인할 수 있을까?

총 물리 주소 범위 0 ~ 511

세그먼트0의 바운드 레지스터 값이 20 이므로
유효 가상 주소 범위는 0 ~ 19이고 최대 19입니다.

README.md의 내용대로 세그먼트1은 역방향입니다.
주소 511에서 시작하며 492까지 사용가능하므로
최소 492입니다.

전체 주소 공간 범위 0 ~ 127 안에서 잘못된 주소 공간의 최저값은 20이고
최대값은 127입니다.

3. 16바이트 주소 공간과 128바이트의 물리 메모리가 있다고 하자.
시뮬레이터가 지정된 주소 스트림에 대해 다음과 같은 변환 결과를 생성하기 위해서는 베이스와 바운드를 어떤 값으로 설정해야 하는가 : 유효, 유효, 위반, ..., 위반, 유효, 유효?
다음과 같은 매개변수를 가정한다.

segmentation . py −a 16 −p 128
−A 0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12 ,13 ,14 ,15
−−b0 ? −−l0 ? −−b1 ? −−l1 ?

−−b0 6890 −−l0 472 −−b1 4692 −−l1 450

4. 무작위로 생성된 가상 주소 중 약 90%가 유효한 시스템에서 (즉, 세그멘테이션 위반이 아닌) 문제를 만들고 싶다고 가정하자.
그런 결과를 내려면 시뮬레이터를 어떻게 설정해야 하는가?
어떤 매개변수가 중요한가?

-a(address space size)와 -l(limit register)의 값 또는 -p(전체 물리 메모리 크기)의 값을 줄입니다.
또는 -b(base register)의 값을 음수로 만들거나 변환된(될) 주소가 유효 범위를 넘도록 증가시킵니다.

5. 모든 가상 주소가 유효하지 않도록 시뮬레이터를 실행할 수 있는가?
어떻게?

-a 0
-l 0
-p 0
-b (x < 0)
-b (유효 주소 값들 < x)

 

출처

원서

http://www.ostep.org

 

Operating Systems: Three Easy Pieces

Blog: Why Textbooks Should Be Free Quick: Free Book Chapters - Hardcover - Softcover (Amazon) - Buy PDF - EU (Lulu) - Buy in India - Buy Stuff - Donate - For Teachers - Homework - Projects - News - Acknowledgements - Other Books Welcome to Operating System

pages.cs.wisc.edu

 

번역본

https://github.com/remzi-arpacidusseau/ostep-translations

 

GitHub - remzi-arpacidusseau/ostep-translations: Various translations of OSTEP can be found here. Help the cause and contribute!

Various translations of OSTEP can be found here. Help the cause and contribute! - remzi-arpacidusseau/ostep-translations

github.com

 

문제

https://github.com/remzi-arpacidusseau/ostep-homework

 

GitHub - remzi-arpacidusseau/ostep-homework

Contribute to remzi-arpacidusseau/ostep-homework development by creating an account on GitHub.

github.com

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유