SWJungle
-
정글 끝?SWJungle 2023. 12. 18. 22:03
정글이 끝났다. 오지 않았으면 좋겠던 최종 발표일은 그렇게 지나갔다. 그리고 전쟁 후 소강 상태같은 지금, 지금이 제일 중요하다. 지금까지는 씨를 뿌렸고 이제 수확하는 시기다. 수확이라함은 정글기간동안 내가 학습한 것들, 경험들을 리마인드하면서 취할걸 취하는 과정이다. 그런데 끝났다는 사실에 늘어지고만 싶어진다. 그래도 일찍 일어나서 운동도 하고 루틴을 지켰다. 오늘은 자기소개서를 작성했다. 쓰고 싶은대로 적었다. 어떻게 하면 나라는 사람을 가장 잘 나타낼 수 있을지, 성장이라는 키워드에 주안점을 두고 적었다. 쓰고보니 이게 개발자의 자기소개서가 맞나 싶은 자소서가 되었지만 그래도 만족한다. '나'라는 사람이 정글 기간동안 어떤 생각을 하며 지냈는지는 충분히 표현했다고 생각하기 때문이다. 이제 이력서를 ..
-
PintOS Project 3. Virtual Memory - WILSWJungle 2023. 10. 18. 17:26
노션에 적어놓은 일일 일지를 정리해서 합친 글입니다. 지식 공유가 아닌, 저의 공부 일지를 저장하는 목적의 포스트이기 때문에 정돈되지 않은 글인 점, 유의 바랍니다. 프로젝트 3 키워드들 Virtual memory management paging virtual page physical frame page table & supplementary page table Memory Management Unit (MMU) Translation Lookaside Buffer (TLB) Page type Uninitialized page Lazy initialization Anonymous page stack growth file-backed page mmap syscall Swap in/out page replac..
-
PintOS Project 2. User Program - WILSWJungle 2023. 10. 18. 16:36
argument passing은 프로그램을 실행할 때 필요한 인자들을 스택에 세팅하고 넘겨주는 것이다. 그런데 결국 프로그램을 실행하는 것은 함수를 호출하는 것과 비슷하다. 둘다 레지스터를 사용해서 인자를 넘겨준다. 그런데 프로그램 실행같은 경우, int main(int argc, char** argv) 함수를 통해 실행되는데, 여기서 argc는 인자의 개수이고, argv는 이후 설명하겠다. 함수 호출하는 과정엔 약속된 규칙, 규약이 있다. x86-64 아키텍쳐의 호출 규약은 다음과 같다. x86 호출 규약 (x86 calling conventions, 위키피디아) 함수의 인자 전달에 사용되는 정수 레지스터들(rdi, rsi, rdx, rcx, r8, r9) 사용 호출자: 다음 명령어의 주소(rip값)를..
-
PintOS Project 1. Thread - WILSWJungle 2023. 10. 2. 21:58
웹프록시 주차 코치님 리뷰 - Rio 패키지는 왜 필요한가? - c언어는 string처리가 어렵다. string을 제대로 공부하려면 string.h에 있는 함수들을 다 공부했어야 했다. - 네트워크는 너무 깊게 파지 마라. 파도파도 끝이 없다. 이만큼 배웠다 해서 제대로 할 수 있을거라고 생각하지 마라 - 한 라인을 write했는데 read하는 쪽에서 한 번에 다 안 읽힐 수 있다. → 네트워크 환경이라서 그렇다. 패킷단위로 다 짤라서 전송하는 네트워킹 과정은 험난한 여정이다. 그래서 네트워크는 됐다 안됐다 한다. - 퀴즈를 보니까 뭔가 공부를 더 해야겠다는 생각이 들 수 있겠는데, 결국 개발자는 코드를 짜는 사람이다. 공부도 좋지만 과제가 일순위다. - 한국에는 입코딩이라는 단어가 있다. 아무리 많이 ..
-
웹프록시 구현 및 HTTP 캐싱 공부 일지SWJungle 2023. 9. 20. 15:28
9월 20일 수요일 09:00 ~ 10:50 기상 및 공부법 영상 시청 10:50 ~ 11:00 영양제 섭취, 수분보충, 영양보충 11:00 ~ 11:10 하루 계획 오늘 해야할 것들 thread 방식으로 동시성 프록시서버 구현 클라이언트 요청마다 쓰레드 생성 쓰레드 풀 적용 캐싱기능 적용 12장 완독 11:10 ~ 11:21 쓰레드풀 기반 웹프록시 코딩 중 착각한 것들 요청이 올 때마다 쓰레드를 생성하는 방식에서 connfd를 동적할당받아 사용했었는데, 쓰레드풀 기반은 이럴 필요 없다. 왜? sbuf를 사용해서 mutual exclusive를 구현하기 때문 따라서 처음에 고민했었던, Pthread_create의 subroutine에 전달될 인자에 뭘 넣어줘야 할지는 고민할 필요 없이 NULL을 넣어주면..
-
레드-블랙 트리 Red-Black Tree 5가지 조건의 의미SWJungle 2023. 9. 6. 14:58
포함관계: 트리 > 이진 트리 > 이진 탐색 트리 > 균형 이진 트리 > 레드블랙 트리 1. 트리 트리 구조는 일반적으로 위의 그림처럼 생겼다. 트리 구조를 트리라고 부르는 이유는 나무의 뿌리와 비슷하게 생겼기 때문이다. 위의 나무 그림에서 뿌리가 시작되는 지점이 첫번째 그림에서의 2번 동그라미고, 뿌리로부터 뻗어나가는 곁뿌리들이 2번에서부터 밑으로 선으로 연결되어 있는 동그라미들이다. 여기서 동그라미는 전문용어로 노드(node)라고 불리고, 선은 간선(edge)이라고 불린다. 2번 노드는 뿌리의 시작점이라서 뿌리를 뜻하는 root를 사용해서 루트(root)노드라고 불린다. 자기랑 간선 하나로 연결되어 있는 노드가 밑에 있으면 자식노드, 위에 있으면 부모 노드라고 부른다. 자식이 없는 노드를 리프(lea..
-
SW정글 7기 4주차: 알고리즘 끝, Red-Black Tree 시작SWJungle 2023. 9. 3. 23:52
목차 3주차 알고리즘 시험 후기 Red-Black Tree 구현중 3주차 알고리즘 시험 하 문제 간단하게는 파이썬 데코레이터 @cache를 재귀함수에 붙이면 되고, DP 배열을 사용해서 호출 인자가 같은 경우에 DP배열에서 꺼내서 쓰면 된다. 중 문제 n*n격자에 숫자가 적혀 있고, 1행 1열에서 시작해서 n행n열까지 가야한다. 규칙은 현재 위치에 적힌 숫자보다 작은 칸만 갈 수 있다. 이때, n*n에 도달 가능한 경로의 개수를 구하는 문제다. DP를 사용하지 않고 DFS코드를 작성한다면 시간초과가 난다. 한 격자에서 4방향에 대해 DFS를 호출하고, 각각의 4방향에 대해 다시 4방향의 DFS를 호출하기 때문에 N*N이라면 시간복잡도가 O(4^(N*N))이다. 그래서 DP를 적용해야 한다. 문제에서 (N..
-
SW정글 7기 3주차 알고리즘 후기SWJungle 2023. 8. 27. 21:54
목차 2주 차 시험 후기 3주 차 문제 복기 2주 차 시험 후기 90분간 하, 중, 상 문제를 1문제씩 푸는 시험이다. 하 문제는 숨바꼭질 문제가 나왔는데, 전날에 풀었던 숨바꼭질 2의 쉬운 버전이라서 A가 B를 찾는 가장 빠른 시간만 출력해 주면 되는 문제였다. 그래서 단순히 A가 갈 수 있는 경우의 수를 가지치기한 결과를 큐에 넣어서 돌렸고, bfs 풀이이기 때문에 가장 처음으로 B에 도달하는 순간이 우리가 찾는 가장 빠른 시간이다. 중 문제는 PPAP수열 문제였고 못 풀었다. 스택을 사용한 풀이를 고민했지만 답을 구하지 못했다. 풀지 못한 이유는 스택에 문자를 하나씩 쌓아야겠다는 생각은 했지만, 쌓다가 PPAP가 되는 순간을 어떻게 감지할지 생각하지 못했기 때문이다. 스택이라는 자료구조에 사고가 갇..