서론이번 주차는 개인적으로 아쉬움이 많이 남는다. 이전까지는 그래도 마지막 날이 됐을 때는 내용이 머릿속에서 구조화가 되었는데, vm은 여전히 머리에서 각각의 조각들이 둥둥 떠다닌다. 우리 조는 가장 중요한 부분이 swap in/out이라 생각하여 해당 부분을 정리해보았다.Swap스왑 공간은 가상 메모리의 일부를 디스크에 저장하는 공간입니다. 가상 메모리는 물리적인 메모리와 스왑 공간 간의 데이터 이동을 통해 필요한 메모리를 관리합니다. 이를 통해 유한한 물리적인 메모리와 디스크 공간을 최대한 활용하면서 메모리 부족 상황을 관리할 수 있습니다. 스왑 공간은 메모리 관리와 성능 향상을 위해 중요한 역할을 합니다.void vm_anon_init (void) { swap_disk = disk_get(1, 1)..
서론1주차의 발표를 준비하는데 아직 첫번째 단계인 Memeory Management를 구현 중이었고, 개념마저도 확실하게 알고 있지 못한 상태였다. 그래서 주제를 SPT로 알아보는 페이지 적중과 페이지 오류의 과정으로 정했다. 처음에는 SPT가 사용된 설명 자료를 찾기 힘들어 진도가 나가지 않았다. 오후 1시에 시작해서 6시 전에 끝내겠다는 계획이 무색하게 발표 준비는 10시쯤에 끝이 났다. 검색을 해보면 보조 테이블은 페이지 테이블에 없는 정보를 담고 있다고 했고, 확실히 이해가 되지 않았다. 그래서 근거를 찾아 PintOS의 코드를 하나 하나 찾아보기 시작했고, 결론을 내릴 수 있었다.PintOS의 메모리 관리핀토스는 위와 같은 구조를 가지고 가상 메모리와 물리 메모리를 매핑한다. 가상 메모리와 물리..
서론현재 핀토스를 만드는 중이고 Project 3에서는 보조 페이지 테이블을 구현 중이다. 이전에 malloc을 구현할 때도 가상 메모리에 대해 공부를 했지만 이번 주차를 공부하면서 가상메모리와 물리 메모리가 어떻게 매핑되는지에 대해서는 몰랐다. 이번 주차는 해당 내용에 대한 이해 없이는 진행하기 어려울 것이라 생각하여 정리해본다. 그리고 헷갈리는 개념(여러 하드웨어와 자료구조 등)에 대해서도 정리하려 한다.메모리 가상화 개념🛰️ 가상 메모리(Virtual Memory)란?가상메모리는 각 프로세스들이 메인 메모리 전체를 독점적으로 사용하고 있는 것 같은 환상을 제공하는 추상화이다. 즉, 실제로는 각 프로세스가 메인 메모리 전체를 사용하고 있지 않지만 사용하는 것처럼 속인다는 것이다. 프로세스 가상 주소..
서론오늘을 끝으로 2.5주간의 PintOS 프로젝트가 끝이 났다. 시스템 콜이 무엇인지는 이번 주차 시작에 정리를 했고, 쉬운 코드의 시스템 콜 영상을 통해 큰 틀은 이해했다. 하지만 구체적으로 어떤 코드를 통해, 어떤 함수를 통해 해당 과정이 진행되냐고 물어본다면 설명을 할 수가 없었다.(어떻게 되겠지... 하지만 컴퓨터에 자동으로 어떻게 되는 건 없다.) 그렇게 흐릿하게 큰 틀만 안 상태로 구현을 했고, 발표를 준비하면서 해당 부분에 대해 확실히 다루는 게 어떤가 제의해보았다. 그렇게 마지막 날에 팀원과 코드를 뜯어보기 시작했고, 정확한 지점을 알 수 있었다.System Call의 개략도유저 함수void halt(void){ syscall0(SYS_HALT); NOT_REACHED();}void ex..
시스템 콜(System Call)이란?* 인터럽트(interrupt): 시스템에서 발생한 다양한 종류의 이벤트 혹은 그런 이벤트를 알리는 매커니즘전원(power)에 문제가 생겼을 때I/O 작업이 완료되었을 때시간이 다 됐을 때(timer 관련)0으로 나눴을 때잘못된 메모리 공간에 접근을 시도할 때🤔 커널 모드는 왜 존재하는가?시스템을 보호하기 위해 user mode에서 하드웨어를 건드리른 상황을 방지하기 위해서예시) 파일을 복사하는 과정* 모든 단계 system call 필요시스템 콜의 종류Process Controlendabortloadexecutecreate processterminate processget process attributesset process attributeswait for ti..