-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
메모리 관리 문제 #4
Comments
안녕하세요, @Juha3141 님 ^^ 좋은 의견 감사합니다. Linux와 같은 Major 운영체제들도 E820을 사용해서 초반 메모리 맵을 구성하고 있기에, TODO에 올려놓고 반영하겠습니다. 감사합니다. ^^ |
E820 서비스 제가 MINT64OS에 구현해둔게 있습니다. 01.Kenrel32/Source/EntryPoint.s 처음 시작줄에 E820을 구현해 놨습니다. memory map entry 갯수는 0x20000 에 저장되고 entry 시작 주소는 0x20004입니다. 관련 함수도 memory map으로 사용하도록 바꿔놨고요. 02.Kernel64/Source/Utility.h, 02.Kernel64/Source/Utility.c 그리고 memorymap을 CH15에서 볼 수 있도록 함수도 하나 만들었습니다. 02.Kernel64/Source/ConsoleShell.c 파일을 보시면 printMemoryMap이라는 함수가 있습니다. 이걸로 free memory와 reserved memory 볼 수 있도록 해놓았습니다. 책 2권 다 정말 재밌게 보고 있습니다. 수고하세요. |
@ybjeon01 님, 안녕하세요! ps) 책 즐겁게 보고 계신다니 다행입니다 ^^)/~ |
혹시(초보자라서 잘 모르는데)CH15가 뭔가요..? 그리고 E820 서비스 너무 멋지네요! |
@Juha3141 님, 안녕하세요. 까마귀님이 운영체제 원리를 이해하고자 하는 사람들을 위해 책을 쓰셨고 MINT64OS는 그 책에 소개되는 운영체제입니다. 따라서 chapter 1부터 chapter 57까지 MINT64OS를 만드는 과정을 하나하나 설명하셨고요. Ch15는 단순히 Chapter 15를 뜻하는 겁니다. 저도 책보고 공부하는 사람으로써 제 Github 계정에 MINT64OS repository를 만들었습니다. 그 안에는 chapter별로 디렉토리가 있고 Ch15 디렉토리에 memory map 관련 함수를 만들어기 때문에 "Ch15에서 memory map 관련 함수를 볼 수 있다" 한겁니다. MINT64OS 책을 보시면 Chapter 15에 처음으로 메모리 크기를 검사하는 방법에 나옵니다. 그래서 그에 맞게 제 repository안 CH15 directory에 memory map 관련 함수를 만들었습니다. |
아 챕터라는 뜻이었군요! 저는 또 무슨 운영체제 용어인줄 알고 열심히 찾아봤거든요.. ㅋㅋ |
안녕하세요, 운영체제 개발을 하고 있는 사람인데.. 제 생각에는 메모리를 관리하는 방법에서 manual probing이라는 방법을 mint64os에서는 사용하는 것 같아요(자세한거 https://wiki.osdev.org/Detecting_CPU_Speed 참고하시면 될 것 같아요). 제가 운영체제를 개발할 때에도 그 방법을 사용했는데 그 방법은 메모리가 8GB나 있어도 4GB밖에 인식하지 못하는 (치명적인 문제가)있는 것 같아요. 그래서 저는 E820이라는 방식을 사용하였습니다. 그랬더니 정상적으로 8GB를 사용할 수 있는 데에다가 메모리를 사용 가능한 부분와 사용 불가능한 부분까지 다 자세하게 알려줘서 "제 생각에는" mint64os에 메모리 감지 방식을 Manual probing보다는 바이오스 인터럽트 0x15를 사용해서 메모리를 관리하는 방법이 더 안전상(osdev 위키에 따르면 컴퓨터를 손상시킬 수 있다는것 때문에) 좋을 것 같아요. 거기에다가 메모리를 일일이 체크하는건 시간도 오래 걸리지만 이 방법은 바이오스 인터럽트 한번이면 모두 읽을 수 있기 때문에 이 방법이 더 효율적이기도 한 것 같아요.
(저도 물론 운영체제를 배우고 있는 사람이라서 잘 모르지만 아마도 이럴 것 같다..라고 추측해본 것 뿐입니다)
The text was updated successfully, but these errors were encountered: