분류 전체보기
-
[SW 정글 83일차] 효율적으로 보낸 일요일기타/SW 사관학교 정글 2021. 10. 25. 01:18
오늘은 일요일, 한 주간 해보고 싶었다고 생각한 공부, 부족한 부분을 채우는 날로 하루를 보냈다. 잠도 평소보다 1~2시간 더 자면서 쌓인 피로감을 풀어주었다. 10시에 강의실에 도착해서 CS 중 가장 재미를 느낀 네트워크를 점심먹기 전까지 공부했다. 이미 대학교에서 정보통신공학을 전공하면서 접한 내용이지만 웹 통신 프로토콜에서 쓰이는 HTTP, 그리고 조금 더 새로운 시각으로 네트워크를 공부하는 것이 신선하고 재미있다. 공부 자료는 HTTP 완벽 가이드로 공부 중에 있다. 꾸준히 나만의 무기를 만들기 전까지는 아침시간에는 네트워크를 공부할 생각이다. 그리고 점심을 먹고 나서는 NodeJs 공부를 시작했다. 일단은 간단하게 Javascript라는 언어에 대한 친숙함을 쌓고 NodeJs로 웹 서버를 어떻게..
-
[SW 정글 82일차] Project 3 - Stack Growth기타/SW 사관학교 정글 2021. 10. 24. 01:51
오늘은 project3의 3번째 과제인 stack growth를 파악하고 구현하는 시간을 가졌다. 과제를 완벽히 이해하면 코드를 이해하는 데에는 나름 괜찮은 과제 구간이였다. memory management와 anonymous page가 너무 어려워서 상대적으로 느껴지는 건가... 1. Stack Growth project 2에서의 스택은 USER_STACK(0x47480000)에서 시작하는 싱글 페이지였고 프로그램의 실행은 이 싱글 페이지의 크기로 제한되었다. 즉, 스택에 할당되는 메모리가 싱글 페이지 사이즈보다 큰 경우는 고려되지 않은 것이다. project 3에서는 스택이 현재 사이즈보다 커지게 되면 필요한 만큼 추가적인 페이지를 할당해주는 것을 구현해야한다. 추가적인 페이지 요청이 스택에 접근하려..
-
[SW 정글 81일차] 오늘 한 일기타/SW 사관학교 정글 2021. 10. 23. 00:25
오늘은 특별히 정리할 내용이 없다.. 일단은 아침 7시 55분까지와서 기강확립 스터디에서 알고리즘 문제풀이 2개를 하고 하루를 시작했다. 그리고 점심 먹기 전까지는 HTTP공부를 해야했지만 youtube에서 typescript의 장점, rest api, 디자인 패턴 등 평소에 궁금한 것들에 대한 영상들이 보여 하나만 보자했다가 계속해서 보다보니 점심시간이 돼버렸다.. 그러고 점심을 먹고 기숙사에서 빨래를 기다릴 겸 조금 쉬다가 다시 강의실로 나왔다. 강의실에 다시 도착하여 어제 정리한 anonymous page과제를 구현하는데 하루의 절반이상을 썼다. void supplemental_page_table_kill (struct supplemental_page_table *spt);를 구현했는데 테스트가 통..
-
[SW 정글 80일차] Project 3 - Anonymous Page기타/SW 사관학교 정글 2021. 10. 22. 02:01
오늘은 memory management 과제를 마무리하고 Anonoymous Page 과제를 이해하며 중간까지 구현을 완료했다. 너무 어렵다.... 일단은 지금까지 한 것은 이해했는데 시간이 꽤 걸렸다. 1. Anonymous Page Anonymous page는 매핑할 backing file이나 device가 없다. anonymous라고 부르는 이유는 해당 page가 어떠한 이름을 가지고 있는 file source를 가지고 있는 것이 아니기 때문이다. anonymous page는 스택이나 힙영역에서 사용된다. 2. Page Initialization with Lazy Loading Lazy loading은 메모리 로딩이 필요한 시점까지 지연되는 설계방식이다. page가 할당되어도 연결된 물리 프레임이 ..
-
[SW 정글 79일차] Project 3 - Hash Table을 쓰네기타/SW 사관학교 정글 2021. 10. 21. 01:25
오늘은 어제 memory menagement 과제를 이해하면서 구현하기 시작했는데 page table를 구현하는데 있어 hash table을 쓰는 것을 알았다. 그래서 한 번 정리하고 넘어가려고 한다. 1. Hash Table이란? 해시 테이블은 (key, value)로 데이터를 저장하는 자료구조로 빠르게 데이터를 검색할 수 있는 특징을 가진다. 아래의 그림을 보면 value가 buckets이라는 배열에 저장되고 has function에 의해 key가 인덱스로 변하여 접근하기에 빠른 데이터 검색을 할 수 있는 것이다. buckets은 실제로 vaule가 저장되는 곳이라고 이해하면 된다. 그림에서 보여지는 key와 value를 예시로 사용하여 어떠한 매커니즘으로 구현이 되는지 이해해보자. 먼저, (John..
-
[SW 정글 78일차] Project 3 - Memory Management기타/SW 사관학교 정글 2021. 10. 20. 02:09
오늘은 project 3에서 아무런 구현을 하지 않고 make check를 해보았다. 결과는 project 2까지 모두 fail이 떴다. 지금 생각드는 이유는 project 2까지는 물리 메모리에 프로세스가 필요한 모든 것을 load했다. 하지만 project 3부터는 paging 기법을 이용하여 그때그때 고정된 크기의 page를 할당받아 물리 메모리에 load해야하는데 이것이 구현되지 않아 project 2 test에도 영향을 미치는 것같다. 그래서 일단은 깃북의 memory management부분 설명을 읽으면서 무엇을 해야하는지 파악해보고 내일부터 팀원들과 페어프로그래밍으로 구현을 해 볼 생각이다. 1. Memory Management 이전까지 공부한 가상 메모리 시스템을 구현하기 위해서는 가상 페..
-
[SW 정글 77일차] 기존 페이징 기법의 문제 해결하기기타/SW 사관학교 정글 2021. 10. 19. 01:49
오늘은 어제 알아본 paging기법의 속도 개선과 공간복잡도를 개선하기 위한 방법들에 대해 공부했다. 그리고 저녁을 먹고서 project 3에서 해결해야할 과제를 읽어보고 코드를 봤는데 아직은 감이 잡히지 않는다. 그래도 해낼 것이다. 1. TLB부터 알아보자. 어제 알아본 페이징 기법은 가상 메모리를 고정된 크기로 나눈 페이지를 실제 물리 메모리에 저장해야하고 이를 매핑하기 위해 필요한 정보를 페이지 테이블이라는 자료구조에서 얻는다. 페이지 테이블은 물리 메모리의 한 부분을 차지해야하고 이는 큰 메모리 공간이 요구될 수 있다. 일단은 공간적인 문제를 생각하기 전에 주소 변환을 위해 페이지 테이블 정보를 읽는 것을 중점으로 두어 생각해보자. 가상 주소를 물리 주소로 바꾸기 위해서는 페이지 테이블에 있는 ..
-
[SW 정글 76일차] Paging 기법기타/SW 사관학교 정글 2021. 10. 18. 02:05
오늘은 Pintos project 3에서 쓰이는 paging 기법에 대해 공부했다. 가상메모리를 고안한 사람은 정말 대단한 것같다.. 그리고 paging 기법도 신세계다. 1. 페이징 기법 페이징은 주소 공간을 동일 크기의 조각으로 분할하는 것을 말하는데 프로세스의 주소 공간을 가변 크기를 가지는 세그멘트(segment)로 나누는 것이 아니라 고정 크기를 가진 페이지(page)로 나누는 것을 의미한다. 가상 메모리에서 이렇게 고정 크기로 나눈 단위를 페이지라고 부르고 물리 메모리에서도 같은 고정 크기로 나누는데 물리 메모리에서 부르는 단위는 프레임(frame)이라고 한다. 이 프레임 각각은 하나의 가상 메모리 페이지를 저장할 수 있는 것이다. 기본적인 원리는 가상 메모리를 고정된 크기로 나누어 페이지를 ..