- [ 크래프톤정글/PintOS ][CS] PintOS Project 3 - Virtual Memory(1) - Introduction2023-01-04 23:56:04이제 Pintos의 내부 작동 방식에 익숙해져야 합니다. 운영 체제는 적절한 동기화로 여러 스레드의 실행을 제대로 처리할 수 있으며, 여러 사용자 프로그램을 한 번에 로드할 수 있습니다. 그러나 프로그램의 수와 크기는 컴퓨터의 메인 메모리 크기에 제한이 따릅니다. 이번 과제에서는 이러한 제한을 제거하기 위해 무한 메모리의 환상을 제공(구축)할 것입니다. 이번 과제는 지난 과제에 지속하여 진행할 것입니다. 프로젝트 2의 테스트 프로그램도 프로젝트 3과 함께 작동해야 합니다. 프로젝트 3을 시작하기 전에 프로젝트 2 제출 시 발생할 수 있는 버그를 수정해야 합니다. 이러한 버그가 프로젝트 3에서도 동일한 문제를 일으키기 때문입니다. 프로젝트 3에 대해, 여러분의 쉽게 진행할 수 있도록 자세한 지침을 제공합니..
- [ 크래프톤정글/PintOS ][CS] PintOS Project 3 - Virtual Memory(2) - Memory Management2023-01-04 21:56:26가상 메모리 시스템을 지원하기 위해서는 가상 페이지와 물리적 프레임을 효과적으로 관리해야 합니다. 이것은 어떤 (가상 또는 물리적) 메모리 영역이 어떤 목적으로, 누가 사용하고 있는지 등을 추적해야 한다는 것을 의미합니다. 첫째로 추가 페이지 테이블을 처리하고, 그 다음 물리적 프레임을 처리합니다. 참고로, 이해를 위해 "페이지"라는 용어는 가상 페이지를, "프레임"이라는 용어는 물리적 페이지를 의미합니다. Page Structure and Operations (페이지 구조와 처리 작업) Struct Page include/vm/vm.h 에 정의된 page는 가상 메모리에서의 페이지를 나타내는 구조체입니다. 페이지에 관해 알아야 할 모든 필요한 데이터를 저장합니다. 현재 템플릿에서 이 구조체는 다음과 같..
- [ 크래프톤정글/PintOS ][CS] PintOS Project 3 - Virtual Memory(0) - Memory Management 1 개념 (Feat. 반효경 교수님)2023-01-04 00:53:06PintOS 3 주차는 가상 메모리에 관한 과제이다. 과제를 수행하기 전 반효경 교수님 강의를 듣고 개념을 잡고 가려고 한다. 빠르게 가보자! Logical Address vs Physical Address Logical Address(Virtual Address) 프로세스마다 독립적으로 가지는 주소 공간이다. 각 프로세스마다 0번지부터 시작한다. CPU가 보는 주소는 Logical Address이다. Physical Address 메모리에 실제 올라가는 위치이다. 주소 바인딩(Address Binding): 주소를 결정하는 것 *참고: 여기서 설명하는 전제는 프로세스 전체를 메모리에 올리는 것으로 가정한다. 프로세스마다 독자적인 주소 공간이 있지만, 실제로 프로세스를 실행하기 위해서는 물리 메모리에 로..
- [ 크래프톤정글/PintOS ]보호글 입니다.2022-12-26 16:54:39보호되어 있는 글입니다.
- [ 크래프톤정글/PintOS ][CS] PintOS Project 2 - User Program(3) - System Calls(feat. User Memory) - 추가예정2022-12-25 03:21:48목표: system call - infrastructure(기반 인프라) 구현(feat. User Memory Access) User Memory Access syscalls 을 구현하려면, 사용자 가상 주소 공간(user virtual address space)에서 데이터를 읽고 쓰는 방법을 제공해야 한다. arguments를 얻을 때 이 기능은 필요하지 않다. 하지만 시스템 콜의 인자들로 제공된 포인터에서 데이터를 읽을 땐 이 기능을 통해 중계해야 한다. 하지만 이 기능을 구현하는 것은 조금 까다로울 수 있다. 만약 사용자가 유효하지 않은 포인터, 커널 메모리를 가리키는 포인터 또는 해당 영역 중 하나에 부분적으로 블록을 제공하면 어떻게 될까? user process를 종료(terminating)하여..
- [ 크래프톤정글/PintOS ][CS] PintOS Project 2 - User Program(2) - Argument Passing2022-12-24 21:55:16목표: User Program에서 argument(인자) 를 설정하도록 process_exec() 함수를 수정해라 x86-64 Calling Convention(함수 호출 규약) 이 섹션에서는 64bit x86-64 에서 일반적으로 함수를 호출할 때 convention의 중요한 포인트를 요약한다. For more detail, you can refer System V AMD64 ABI. 잠깐, KAIST gitbook을 공부하기 전에 함수 호출 규약(Calling Convention) 개념을 정리하고 가자. 함수 호출 규약을 이해하기 위해서는 stack 과 stack frame에 대한 정확한 이해가 있어야 한다. 각각의 thread 마다 stack이 생성되고, 각각의 함수마다 stack frame이 존재..