본문 바로가기
728x90
반응형

개발자 도전기111

나만의 무기 | 프로젝트 소개 | 지인들과 내기를 위한 소셜 웹 게임 1. 주제 소셜 웹 미니 보드 게임: 친구, 동료들과 실시간으로 온라인에서 멀티 게임을 즐길 수 있도록 하는 웹 서비스 기획 지인들과 내기를 위해 짧은 러닝타임과 간단한 조작법의 게임들 개발 예정 2. 프로젝트 목표 | 안정적인 동시성 프로그래밍 소셜 서비스인만큼 동시 접속자들이 게임을 진행할 때, race condition 등의 동기화 문제 없는 서버 구축 | 접근성 누구나 쉽게 접근할 수 있도록 웹 기반 게임 개발 쉬운 게임 룰과 조작법으로 게임에 대한 진입 장벽 낮추기 | Fun 게임의 본질은 재미! 짧은 시간에 동료끼리 재밌는 추억을 공유할 수 있는 게임 구현 3. 주제 선정 배경 커피나 점심 내기를 할 때 사다리 타기 등 복불복 게임만 하는 것은 식상함 웹으로 쉽게 접근할 수 있고, 간단하게 즐.. 2021. 10. 24.
정글에서 살아남기| WEEK11 | 계속되는 삽질, 이 경험마저 도움이 되겠지 현재 백신 2차 모더나 맞은 상태. 어제부터 진짜 개아프다. 말도 안 되게 아프다... 온 몸이 바늘로 찔리는 것처럼 쿡쿡 쑤시고 숨쉴 때마다 폐가 아프다ㅠㅠㅠ 옷은 아무리 껴입어도 혹한기 마냥 춥다. 타이레놀 먹고 계속 죽은 듯이 잠만 자니까 쪼오오오끔은 나아진듯. 점심에 범석이랑 민우랑 점심 먹고(그나마 시킨 것 절반도 못 먹음) 그 이후에 아무것도 안 먹고 있는데 입맛도 전혀 없음. 내일은 진짜 많이 괜찮아지길 바라면서....! 이번 주도 저번 주와 마찬가지로 계속 핀토스 프로젝트3 진행하는 중. 현재 fail 3개만 남고 나머지는 다 통과한 상황. 이번 주는 되게 고무적인게, 그래도 에러가 있을 때, 에러 문구를 보면서 직접 디버깅을 하나씩 해갔다는 점. 그게 옳은 방법인지 아닌지는 판단할 수 없.. 2021. 10. 24.
pintOS | Project 3 | 버그잡자 현재 깃북을 따라 project 3을 구현하고 있고, Memory Mapped file까지 완료한 상태다. 여기에 Anonymous page 때 적지 않았던 부분들을 일단 구현했다. (현재는 swap in/out까지 구현 완료) copy와 clean up 작업을 하기 위해서 spt를 재방문한다. spt를 재방문 하는 이유는 아까 구현했던 초기화와 관련된 함수들을 사용하기 때문이다. 먼저 copy하는 함수부터 보자. bool supplemental_page_table_copy (struct supplemental_page_table *dst, struct supplemental_page_table *src); 함수 인자를 보면 dst와 src가 있는데, spt의 src에서 dst로 복사한다는 뜻이다. 이 .. 2021. 10. 22.
pintOS | Project 3 | Swap In/Out Memory swaping은 물리 메모리의 사용을 극대화하기 위한 메모리 회수 기술이다. 메인 메모리의 프레임들이 할당될 때, 시스템은 유저 프로그램으로부터 메모리 할당 요청을 처리할 수 없다. 이를 위한 해결 방법 중 하나는 현재 디스크에 사용되지 않는 메모리 프레임을 swap out하는 것이다. 이것은 몇몇 메모리 자원들을 가용가능하게 하고 다른 어플리케이션을 사용가능하게 한다. 스와핑은 OS에 의해 실행된다. 시스템은 메모리 할당 요청을 받았는데 메모리가 부족하다면, 디스크를 스왑할 페이지를 선택한다. 그 후 메모리 프레임의 상태는 디스크에 복사된다. 하나의 프로세스가 스왑 아웃 되었던 페이지에 대한 접근을 시도할 때, OS는 정확한 내용을 메모리로 다시 가져와 페이지를 복구한다. 이 때 선택되는 .. 2021. 10. 21.
pintOS | Project 3 | Memory Mapped Files 이전 파트에서는 anonymous page에 대해서 공부하고 구현했다. Memory maaped file 파트에서는 메모리가 매핑된 페이지에 대해 구현한다. memory mappped page들은 file-backed 매핑이다. 이 페이지 안의 내용들은 이미 존재하는 파일의 데이터를 복제하기 때문에 페이지 폴트가 발생했을 때 즉시 프레임에 할당된다. 메모리가 해제되거나 스왑 아웃될 때 내용의 변경 사항들은 파일 안에 다 반영된다. 자 그럼 뭘 해야 하나. 메모리가 매핑된 파일을 호출하는 시스템 콜인 mmap() 과 munmap()을 구현하라고 한다. VM시스템은 mmap 영역에서 lazy load가 되도록 해야 하며, mmap 파일 자체를 매핑을 위한 백업 저장소로 사용해야 한다. void *mmap (.. 2021. 10. 20.
pintOS | Project 3 | Stack Growth 프로젝트 3을 정리하면서 계속 말했던 부분은 메모리를 할당할 때, 필요로 하는 페이지를 요청할 때 필요한 만큼 페이지를 할당해준다는 것이다. 여기서는 전 포스팅에서 다뤘던 vm_try_handle_fault() 함수에 대해서 더 자세하게 다룰 것이다. pintOS | Project 3 | Anonymouse Page pintOS | Project 3 | Anonymouse Page pintOS | Project 3 | Memory Management Anonymous page 파트에서는 anonymous page라고 불리는 비디스크 기반(non-disk based) 이미지를 구현할 것이다. 라고 깃북에 적혀 있다. anonymous 매핑은 백업 파일이나.. dapsu-startup.tistory.com .. 2021. 10. 20.
pintOS | Project 3 | Anonymouse Page pintOS | Project 3 | Memory Management Anonymous page 파트에서는 anonymous page라고 불리는 비디스크 기반(non-disk based) 이미지를 구현할 것이다. 라고 깃북에 적혀 있다. anonymous 매핑은 백업 파일이나 장치가 없다. file-backed page와는 달리 명명된 파일 소스가 없기 때문에 anonymous이다. 즉 anonymous page는 스택, 힙 같은 실행 파일에서 사용된다. anonymous page 구조체는 include/vm/anon.h 에 있다. struct anon_page { }; 응. 역시 있네. 껍데기만 ㅋ 일단 깃북 먼저 더 읽어보고 뭘 채워야 하는지 봐야겠다. 전 포스팅에서 페이지 유형 3가지를 말했었다. .. 2021. 10. 19.
pintOS | Project 3 | Memory Management 프로젝트 3-1 Memory management에서는 효율적으로 페이지와 프레임을 관리하는 것에 대해 구현할 것이다. 사용되고 있는 가상/물리 메모리 영역에 대해 추적해야 한다는 것. 먼저 supplemental page table(spt), 그리고 physical frame을 다룰 것이다. 먼저 page 구조체가 어떻게 생겨먹었는지 확인해보자. page는 include/vm/vm.h에 있음 struct page { const struct page_operations *operations; void *va; /* Address in terms of user space */ struct frame *frame; /* Back reference for frame */ union { struct uninit_.. 2021. 10. 17.
정글에서 살아남기| WEEK10 | 가상 메모리 너무 어렵다 프로젝트 2를 겨우 끝냈다. 그것도 extra 부분까지 다 구현해서 테스트 케이스 97개를 모두 pass했다. 하지만 과연 올패스를 하는 것만으로 만족해야 하는걸까? 나는 정말 핀토스 user program 부분들을 모두 이해했을까? pintos는 카이스트에서는 원래 한 학기에 걸쳐서 진행하는 프로젝트라고 한다. 심지어 전공 학생들도 매우 힘들어 하고 제일 싫어하는 과목이라고 한다. (교수님피셜임 ㅋㅋㅋ) 교수님 강의를 들을 때, 홍욱이형이 "비전공자 입장에서 핀토스를 공부하고 있는데, 어떤 부분에 초점을 맞춰서 공부를 해야 하는지?" 라는 질문을 했었고, 교수님께서는 "학생일 때, 이 정도로 길고 복잡한 코드량을 경험하기 드물다. 이 코드들을 읽으면서 이해하고 배치할 줄 아는 것이 pintos의 목적 .. 2021. 10. 17.
728x90
반응형