분류 전체보기
-
[SW 정글 추석 특집] Missing Semester 1일차기타/SW 사관학교 정글 2021. 9. 19. 11:37
오늘부터 추석 연휴가 시작됐고 이번 추석 연휴가 꽤 길다. 그래서 시간을 정말 효율적으로 사용해야겠다는 생각을 가졌고 무엇을 할까 고민하다가 1기 수료생들의 추천으로 Missing Semester를 알게 되어 이번 추석 연휴 아침시간에 공부해보려고 한다. 1. 셸(SHELL)이란 무엇인가? 셸은 우리가 컴퓨터와 상호작용(소통)을 하는 가장 근본적인 방법들 중 하나로 시작적인 인터페이스들보다 더 많은 것들을 원한다면 사용할 수도 있는 것이다. echo (echo ...는 단순히 arguments를 print해주는 프로그램) arguments와 함계 프로그램을 실행할 수 있다. arguments는 띄어쓰기(white space)에 의해 split 된다. white space가 포함된 string을 argum..
-
[SW 정글 48일차] 소켓 인터페이스 구현부터 Echo 클라이언트와 서버까지기타/SW 사관학교 정글 2021. 9. 19. 02:39
오늘은 본격적으로 socket 인터페이스를 구현하여 echo 클라이언트와 echo 서버를 통해 네트워크 실습을 해보았다. 소켓 인터페이스에는 각자의 역할을 하는 다양한 함수가 있고 그 함수들을 하나로 묶어 효율적인 기능을 해주는 open_cliented()와 open_listenfd()가 있다. 이러한 소켓 인터페이스를 기반으로 클라이언트와 서버를 만들어 실습을 직접 진행해보니 신기했다. 1. 소켓 주소 구조체 /* IP socket address structure*/ struct sockaddr_in { uint16_t sin_family uint16_t sin_port struct in_addr sin_addr unsigned char sin_zero[8] } /* Generic socket addr..
-
[SW 정글 47일차] 소켓 (Socket) 입문기타/SW 사관학교 정글 2021. 9. 18. 03:05
오늘은 소켓에 대한 공부를 하면서 소켓 인터페이스를 접하게 되었고 클라이언트와 서버가 어떻게 소켓을 가지고 통신을 하는지에 대한 전반적인 그림을 이해할 수 있었다. 소켓 통신을 이해하면서 들었던 의문점, 개념들을 정리하려고 한다. 1. "A socket is an end point of a connection."?! 컴퓨터 시스템 11.3.3 Internet Connections 파트를 읽으면서 아래와 같은 문장을 보게 됐다. A socket is an end point of a connection. 이 문장을 본 순간, 왜 소켓을 커넥션의 끝점이라고 하는거지? 끝점은 당연히 클라이언트와 서버 아닌가? 라는 의문을 가지게 되었고 구글링을 했다. (현실 구글링: why socket end point) 다행..
-
[SW 정글 46일차] 네트워크 용어 익숙해지기기타/SW 사관학교 정글 2021. 9. 17. 02:42
오늘은 네트워크를 공부하는 주인 웹 서버 만들기에 돌입했다. 컴퓨터 네트워크, 데이터 통신을 대학교에서 1년동안 전공과목으로 수강했지만 그 때 정말 열심히 공부했어도 사실을 시험, 성적을 위한 공부여서 남은 지식은 많이 없다. 그래도 공부를 하는 데 있어 익숙한 분야여서 수월할 것으로 생각들고 그에 따라 시간이 난다면 정말 deep하게, 네트워크를 공부할 생각이다. 오늘의 정리는 컴퓨터 시스템 11장을 보면서 개념이 안잡힌 단어들에 대한 내용을 정리하려고 한다. 1. DMA (Direct Memory Access) DMA는 특정 하드웨어 하위 시스템이 CPU와 독립적으로 메인메모리에 접근할 수 있게 해주는 컴퓨터 시스템의 기능이다. 예를 들어, 우리가 키보드로 어떠한 값을 입력했으면 메모리에 올리기 위해..
-
SW 정글 6주차 회고기타/SW 사관학교 정글 2021. 9. 16. 23:39
[6주차 회고] 2021년 09월 16일 목요일, 6주차가 마무리 되는 날이고 6주차는 전체적으로 어땠는지 이 글을 쓰면서 돌아보려고 한다. 6주차는 솔직히 '내가 잘 공부했나'라는 생각이 드는 주였기도 했고 조 활동이 활발히 이루어져서 만족스러웠던 한 주였기도 했다. 먼저 왜 '내가 잘 공부했나'라는 생각이 들었냐면 malloc lab을 하면서 내가 개념을 이해하고 직접 구현하기보다는 open source를 찾아서 그 코드를 이해하면서 따라 써보고 그 후에 이 코드는 왜 이렇게 써졌지? 이게 꼭 필요한 코드인가? 등의 시간을 가졌다. 그러면서 '이게 진짜 좋은 공부방법일까?'라는 생각도 들고 '내가 dynamic allocator'에 대해 deep하게 공부한게 맞나'라는 생각이 들었다. 그래도 누군가에..
-
[SW 정글 45일차] segregated list 구현과 demand-zero memory기타/SW 사관학교 정글 2021. 9. 16. 01:24
오늘은 지난 번에 계속해왔던 explicit dynamic allocator구현에서 free block list를 구현할 때 implicit list, explicit list를 사용하여 구현했었고 이번에는 segregated list를 사용해서 구현해보려고 한다. 1. segregated list는 무엇인가? 아래의 강의 영상과 컴퓨터 시스템을 보며 정리한 내용이다. https://www.youtube.com/watch?v=ru_2lvPNeQM&list=PLbY-cFJNzq7z_tQGq-rxtq_n2QQDf5vnM&index=20 segregated list와 implicit, explicit list의 가장 큰 차이점은 free block의 크기에 따라 size class를 나눠서 리스트에 모아두는 ..
-
[SW 정글 44일차] explicit 구현과 인스트럭션, 분산 파일 시스템기타/SW 사관학교 정글 2021. 9. 15. 01:15
오늘은 어제 공부한 explicit free list를 사용하여 동적할당기를 직접 구현하고 컴퓨터 시스테 6장. 메모리 구조를 읽으면서 앞에서도 계속 봤던 인스트럭션이라는 단어와 분산 파일 시스템에 대해 공부해보았다. 1. 인스트럭션과 분산 파일 시스템 인스트럭션(instruction)은 컴퓨터가 어떠한 것을 어떻게 하는지 알고자 할 때, 이것을 알려주는 것이 인스트럭션이다. 예를 들어, 컴퓨터가 사각형을 그려야한다고 생각해보자. 시작 포인트를 준다. 시작 포인트에서 오른쪽으로 x만큼 간다. 그 지점에서 y만큼 아래로 간다. 그 지점에서 x만큼 왼쪽으로 간다. 그 지점에서 y만큼 위쪽으로 가서 시작 포인트를 만나게 선을 긋는다. 위와 같은 일려의 과정을 인스트럭션이라고 할 수 있다. 2. Explicit..
-
[SW 정글 43일차] #if, #elif, #else와 implicit + next_fit 그리고 explicit기타/SW 사관학교 정글 2021. 9. 13. 20:08
오늘 하나의 파일에 implicit 코드와 explicit 코드를 적어 둘 중 하나만 동작하게끔 할 수 없을까? 했는데 C에서 #지시자로 할 수 있는 방법을 찾아 링크를 저장해놓으려고 한다. https://docs.microsoft.com/ko-kr/cpp/preprocessor/hash-if-hash-elif-hash-else-and-hash-endif-directives-c-cpp?view=msvc-160 #if, #elif, #else 및 #endif 지시문(C/C++) 자세한 정보: #if, #elif, #else 및 #endif 지시문(C/C++) docs.microsoft.com 1. implicit free list + next-fit 구현하기 어제는 implicit free list와 fi..