[Pintos-Kaist] Project3 - Anonymous Page
·
운영체제
이전 포스트에서는 프로젝트 3의 Memory Management부분에 대해 구현을 했습니다. 마지막 부분에 해당하는 vm_alloc_page_with_initializer라는 함수를 시작으로 나머지 Anonymous Page를 구현 시작해 보도록 하겠습니다. ✔️ Anonymous Page란? Anonymous 페이지는 파일 기반 페이지와 달리 이름이 지정된 파일 소스가 없기 때문에 Anonymous page라고 부릅니다. Anonymous 페이지는 스택 및 힙과 같은 실행 파일에 사용됩니다. Anonymous 페이지는 프로그램이 실행되는 동안 필요한 메모리 공간을 동적으로 할당하여 프로그램의 요구에 맞게 메모리를 사용할 수 있습니다. Anonymous 페이지는 가상 메모리 공간에서 실제 메모리로 데이터..
[Pintos-Kaist] Project3 - Memory Management
·
운영체제
핀토스 프로젝트 3에서는 Virtual Memory에 관한 내용들을 토대로 구현을 시작합니다. 우선 첫 번째 구현 요소인 Memory Management에 대해서 알아보겠습니다. Memory Management 가상 메모리 시스템을 지원하려면 가상 페이지와 물리적 프레임을 효과적으로 관리해야 합니다. 즉, 어떤 (가상 또는 물리적) 메모리 영역이 어떤 목적으로, 누가, 어떤 용도로 사용되고 있는지 등을 추적해야 합니다. 먼저 보충 페이지 테이블을 다룬 다음 물리적 프레임을 다룰 것입니다. 이해를 돕기 위해 가상 페이지에는 '페이지'라는 용어를, 물리적 페이지에는 '프레임'이라는 용어를 사용한다는 점에 유의하세요. Struct page struct page에 hash_elem 멤버를 추가해서 해당 페이지를..
[Pintos-Kaist] Project2 - System Call(4) - (exec, fork, wait)
·
운영체제
지난 시스템 콜 기능 구현 포스트에서는 exec, fork, wait을 제외한 기능들을 구현했습니다. 관련 내용은 아래 포스트 참고하시길 바랍니다. https://yunchan97.tistory.com/73 [Pintos-Kaist] Project2 - System Call(3) -(write, putbuf, open, process_add_file, process_get_file, read, filesize, seek, tell, 지난 포스트에서는 전체적인 코드의 흐름을 파악하는 과정을 봤습니다. 아래 포스트에 이어서 다음 기능을 구현해보겠습니다. https://yunchan97.tistory.com/71 [Pintos-Kaist] Project2 - System Call(1) - (halt, exit..
[Pintos-Kaist] Project2 - Argument Passing
·
운영체제
과제 목표 Command line Parsing 기능 구현 과제 설명 Pintos는 프로그램과 인자를 구분하지 못하는 구조로 되어있습니다. ex) /bin/ls -l foo bar 의 경우 null 포인터를 인식하지못하고 문자열 전체로 인식. 명령어를 널포인터 기준으로 단어를 분할해서 /bin/ls, -l, foo, bar로 나눠서 스택에 푸시한다. 스택에 저장된 인자를 응용 프로그램에 전달하는 기능을 구현합니다. 수정 부분 process_create_initd() 함수에서 프로그램을 실행 할 프로세스를 생성합니다. process_exec() 함수에서 프로그램을 메모리에 탑재하고 응용 프로그램을 실행합니다. argument_stack() 함수에서 함수 호출 규약에 따라 유저 스택에 프로그램 이름과 인자들..
[Pintos-Kaist] Project 1 - Threads 1주차 학습
·
운영체제
💡Pintos_8팀 WIL 일별 진행 목록 23.05.26(금) - github team repository 생성 - git clone 후 - AWS환경에서의 Ubuntu18.04 환경설정 23.05.27(토) - Alarm Clock🕰️ 구현 시작 - 목표 : 호출한 프로세스를 정해진 시간 이후에 다시 시작하는 커널 내부 함수 구현 - Busy waiting -> sleep, awake - 쓰레드 디스크립터 필드 추가(wakeup_tick) - 전역 변수 추가(next_tick_to_awake) - thread_init() 함수 수정 - timer_sleep() 함수 수정 23.05.29(월) - thread_sleep() 함수 구현 - timer_interrupt() 함수 수정 - thread_awa..
yunchan^.^
'pintos' 태그의 글 목록