- [ 크래프톤정글/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): 주소를 결정하는 것 *참고: 여기서 설명하는 전제는 프로세스 전체를 메모리에 올리는 것으로 가정한다. 프로세스마다 독자적인 주소 공간이 있지만, 실제로 프로세스를 실행하기 위해서는 물리 메모리에 로..
- [ 컴퓨터 과학/운영체제 ][CS] 명령어의 구조와 명령어 주소 지정 방식2022-12-27 23:41:05프로그램을 개발할 때 우리는 '소스코드' 를 작성하고, 컴파일러를 통해 컴파일 되어 컴퓨터가 이해할 수 있는 '저급 언어'로 변환되어 실행된다. 저급 언어는 명령어들로 이루어져 있는데, 그럼 명령어 하나하나는 어떻게 생겼을까? *참고: 저급언어는 기계어, 어셈블리어로 구성되어 있다. 둘 다 명령어의 집합임 명령어의 구조 사람이 누군가에게 명령을 한다면 아마 이런식으로 명령을 할 것이다. "학생들, 다음 주까지 과제를 제출하세요." 컴퓨터의 명령어 구조도 이와 마찬가지다. 컴퓨터는 '무엇을 대상으로, 무엇을 수행하라' 식의 명령어 구조를 가지고 있다. 컴퓨터는 아래의 사진과 같이 명령어 구조를 이루고 있다. 왼쪽에는 수행할 연산, 오른쪽은 연산에 사용될 데이터 혹은 연산에 사용될 데이터가 저장된 위치를 담..
- [ 크래프톤정글/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이 존재..
- [ 크래프톤정글/PintOS ][CS] PintOS Project 2 - User Program(1) - Introduction2022-12-24 19:12:44PintOS에 이미 user program을 load하고 실행할 수 있는 베이스 코드를 제공하고 있지만, I/O나 interactivity는 제공하지 않는다. 이 프로젝트에선 시스템 콜을 통해 프로그램이 OS와 interact(상호작용) 하도록 만드는 것이 목표이다. 이번 과제에서 작업할 주요 디렉토리는 userprog 이지만, 거의 모든 PintOS의 내부 파트마다 상호작용할 것이다.(다른 디렉토리도 참고할 것이란 것) 아래에 관련있는 파트를 설명한다. 프로젝트 1에서 제출한 과제 위에서 프로젝트 2를 빌드해야 한다. 프로젝트 1의 코드는 프로젝트 2의 코드에 영향을 미치진 않지만, 프로젝트 1은 증분 프로젝트이므로 여전히 테스트 사례를 통과해야 합니다. 확장 과제는 옵션이며, 해당 과제는 뼈대를 포함..