Xv6_study_210714

Day3

어제 다 커버하지못한 exercise 5번 파트를 다시 살펴보면서 모르고 넘어갔던 개념들을 살펴보았다. 그리고 나서 xv6의 console.c 등의 코드를 살펴보았는데, stack 영역에 대한 이해가 필요하다고 생각이 되어서, 관련된 내용을 공부해 보았다.

  1. exercise 5번내용을 보면서, paging 에 대한 개념이 제대로 잡혀있지 않다는 것을 느껴서 관련해서 공부를 했다. 페이지 테이블과 페이지 테이블 엔트리, 그리고 페이지 디렉토리가 무엇인지 알아보고, main.c에 선언된 entrypgdir 을 살펴보았다.

  2. printf.c, console.c 코드를 읽어보면서, 함수가 call 되었을때 스택 영역에 어떤 일이 일어나는지에 대한 이해가 필요했다. 스택에는 함수의 파라미터들과, ebp, eip 같은 레지스터 그리고 local variable 들이 들어있게 되는데, 이것들이 어떤 순서로 되어있는지 파악해야 했고, stack 영역이기 때문에 주소 연산 할때 반대로 생각해야 하는 문제도 있었다. 또한 어셈블리 로 변환되었을때는 실제로 function call 이 일어났을떄, 어떤 순서로 작업이 이뤄지는지 도 살펴보았는데, 아직은 공부가 덜 되어서 정확하게 머리속에서 정리는 안되는 것 같다.