본문 바로가기

TIL (Today I Learned)

(17)
3/19 (화) TIL - 오늘은 꼭 fork를 끝내야지 어제 마무리하면서 적었던 내용이 remove와 close를 어떻게 다르게 구현해야 하는가? 였다. 다른 정글러분께 질문했고 답을 들을 수 있었다! remove를 내가 기존에 구현했던 close처럼 동작하게 하고, close는 파일에 대한 메모리 할당을 해제해주어야 한다. 그리고 filesys_remove는 실제 하드웨어의 파일을 삭제하는 것이라고 한다. 그냥 썼으면 큰일날뻔~ 퀴즈 준비하면서 돌려놓은 make check 36개 남았다 ㅎㅎ... fork 가보자고~ 못 갔 다! thread.h에 선언했던 자식 리스트를 활용해봤다. init_thread()에서 부모와 자식 스레드 모두 만날 수 있기 때문에 여기에서 자식 리스트에 추가, 자식의 부모 설정을 동시에 해주었다. 이것저것 추가하고 wait()에서 ..
3/18 (월) TIL - 여전히 시스템 콜 하는중 파일 디스크립터 테이블에 대한 설명을 봤다. 파일 디스크립터가 할당되는 과정 그래서 char *fd_table에서 struct file *fd_table로 변경해봤다. 아니 테케 돌리는데 뭐 건든거 없고 다 주석처리 했는데 왜 어제 돌아가던 코드가 갑자기 오버플로우가 나는거?;;; 진심 짱나; 찾았다 안 되는 이유! struct file *fd_table[1024]; 로 파일 디스크립터 테이블을 정적으로 선언해줬는데 이게 너무 수치가 컸던 것이다... struct file *fd_table[64]; 로 줄여주니 돌아간다 ^^...저번주마냥 실수아닌 실수로 시간을 계속 잡아먹는다리...후배님들은 시간손해보지마시길...(참고: 256은 오버플로우 발생, 128은 괜찮습니다!) BUT, GitBook의 FAQ..
3/16 (토) TIL - [PintOs] Week08 - System Call 제목은 시스템 콜이지만, 그 전에 User Memory부터 구현해야 한다. do_fork()부터 구현하려고 하는데 parent->tf로는 유저 컨텍스트를 가져올 수가 없단다. 그래서 유저 컨텍스트부터 알아봤다. 유저 컨텍스트는 생각하던 그대로, 프로세스를 스위칭 할 때, 유저 프로그램의 진행 상황을 저장해두기 위한 작업이다. 이 과정에서 부모 프로세스의 인터럽트 프레임은 시스템 콜 호출로 커널에 저장된 정보들을 가리키기 때문에 parent->tf로는 유저 정보를 가져올 수 없다. 자세한 정보는 이 블로그를 참고했다. 정글 선배님 ㅎㅎ... 위 블로그를 가보면 코드는 접혀 있고, 어떻게 방향을 잡아야 하는지 자세하게 안내해주신다. 굿 암튼 그래서 일단 해야할 일 1. 변하지 않을 현재 정보를 저장 -> t..
3/15 (금) TIL - 간단하게 주저리 03.15 금요일 TIL 지금은 week8 pintos project 2 진행중이다. 오늘 드디어! argument passing을 클리어했다. 물론 제대로 되었는지는 나중에 확인할 수 있겠지만... hex_dump()가 성공적으로 출력되고, 모든 케이스에서 확인했으니 제대로 되었다고 믿겠다... 거진 일주일을 삽질했던 가장 큰 요인은 아직도 포인터에 대한 이해가 부족하다는 점. 그리고 uintptr_t 형? 에 대한 이해 부족이 컸다. 차라리 처음부터 코치님에 해당 형식에 대해 질문할 걸 그랬다. 또, `` make tests/userprog/args-none.result ``를 이용해 테스트 하는 걸 편하게 생각해서 계속 저 형식을 사용했는데 해당 형식을 사용하면 output이 터미널에서 제대로 확인..
[크래프톤 정글] 정글 7주차 후기 PintOs 1주차가 끝이 났다. 웹서버 정리도 아직 못 했는데, PintOs Project1 정리를 해야한다... 다행히 팀 WIL을 작성했기 때문에 정리가 오래걸리지는 않을 것 같다. 웹서버는,,,천천히,,, 알고리즘 주차 끝나고 후기를 한 번 올렸었는데 벌써 한 달이 지났다. 시간 참 빠르다... 다음주인가? 5기가 들어온다고 했다. 선배가 되어버리다니... 정글 생활도 많이 익숙해졌다. 100일도 남지 않았는데 파이팅해야지 웹서버 주차도 재미있게 했다고 생각했는데, 핀토스 1주차도 굉장히 재미있게 마무리했다. 스레드 동작과 생명 주기에 대한 이해도가 많이 올랐다고 느낀다. 테스트케이스 하나하나 통과하는 걸 보는 것도 재미있었고, ALL PASS를 보는 순간은 정말 도파민이 뿜어져나오는 순간이었다 ..
6주차 퀴즈 대비 키워드 정리 OSI 7 계층(TCP/IP Layer) OSI 계층 - 물리/데이터링크/네트워크/전송/세션/표현/응용 TCP/IP - 네트워크 액세스/인터넷/전송/응용 : OSI 7계층을 기반으로 구현한 네트워크 계층이다. 1계층: 물리주소 MAC을 사용. LAN, 패킷망 등에 사용 2계층: 통신 노드 간 IP패킷을 전송하는 기능과 라우팅 기능을 담당. IP, ARP, RARP 등의 프로토콜 사용 3계층: 통신 노드 간 연결을 제어. 신뢰성 있는 데이터 전송을 담당. TCP, UDP 프로토콜 사용. 4계층: TCP/UDP 기반의 응용 프로그램을 구현할 때 사용. FTP, HTTP, SSH 프로토콜 사용. 클라이언트-서버 모델 서비스 요청자인 클라이언트와 서비스 제공자인 서버 간 작업을 분리해주는 분산 애플리케이션 구조..
알고리즘 주차 완료 저번주를 끝으로 알고리즘 학습 주차가 끝이 났다. 1-3주차 어느 주차도 문제를 모두 푼 주차가 없었다 ㅋㅋ... 그래도 마지막 주차에는 상 문제도 조금 건드려보고 했다.. 퀴즈도 1번 겨우 풀어서 발표도 좀 해봤다. 알고리즘 주차가 끝나도 꾸준히 풀어야 하는데 다른 정글러들은 잔디심기 챌린지를 한다고 한다. 나도 따라서 잔디심기 해보려고 브론즈 5 ㅋㅋㅋㅋ 문제를 풀어 겨우 심었다... 조금씩이라도 해서 감을 잃지 않도록 해야지,, 내가 제일 약한 부분이 알고리즘이니까,,, 이번주 부터는 c언어를 이용해서 이래저래 구현하는 과제인데, c언어는 그나마 익숙해서 다른 정글러들보다 수월하게 하는 것 같다. rb트리 이해는 했는데,,, 알겠는데,,, 모르겠는 느낌 ㅜㅜ 다음주는 malloc에 대해 제대로 배우..
알고리즘 3일차 오늘은 토요일 알고리즘 책을 절반정도, 검색 알고리즘까지 읽고 오늘까지 하노이탑까지 문제를 풀려고 한다. 이제 백준 9020번 골드바흐의 추측을 풀었는데 내 코드를 기록해두려고 일기장을 켰다. 문제를 보고 뭔가 풀 수 있을 것 같아서 힌트를 찾지 않고 어찌어찌 풀었다. ㅎㅎ '맞았습니다!'라는 문구는 봤지만 다른 사람들 풀이 시간을 보니 나는 시간이 너무 오래 걸렸고,,,거의 15배,,, 반복을 최대한 줄였지만 뭔가 더 줄일 수 있을 것 같아 힌트를 찾아봤다 ㅎ.ㅎ 이게 웬걸 너무 간단한 방법이 있었고 시간이 정말 1/10로 줄었다 ㅋㅋ 힌트를 보고 풀었던 코드가 깃허브에 갱신되어서 꾸역꾸역 풀었던 내 허접한 코드가 날아가지 않게 여기 올려두려고 한다. import math def is_prime(n):..