컴퓨터 시스템(Computer Systems: A Programmer's Perspective)이라는 책을 정리하고자 한다. 시간이 들겠지만(feat.로꼬) 길게 볼 책이라면, 내 언어로 정리해둬야 다시 볼 때 더 좋겠지 싶어서 원래의 나와는 다른 길로 가본다...정리
지난 정리에 이어 1장 나머지 부분을 정리할 예정이다. 아마 총 3회로 나눠질 예정이다. hello 프로그램의 실행 오늘의 용어 정리
어떤 프로그램이 시스템에서 실행될 때, 운영체제는 이 시스템에서 1개의 프로그램만 실행되는 것 같은 착각에 빠지도록 한다. 이렇게 보이는 것은 프로세스라는 개념 덕분이다. 프로세스는 실행중인 프로그램에 대한 운영체제의 추상화다.대부분의 시스템에서 CPU수보다 실행 가능
어원은 그물의 net와 work의 합성어로, 그물을 짜는 행위를 가리킨다. 여기서 임의의 연결망을 지칭하는 용어로 의미가 확장됐다고 볼 수 있다.아래 그림을 통해 이 책에서 말하는 네트워크의 개념을 좀 더 알아보자.어떤 시스템은 네트워크를 사용하여 다른 시스템과 통신한
c언어로 implicit malloc 구현하기 아래 사진과 같이 prologue block(시작 블럭)과 epilogue block(끝 블럭)을 구현하고 그 사이에 블럭을 넣는다. 각 블럭에는 헤더(header)와 풋터(footer)가 있다. 헤더와 풋터에는 사이즈와
Github 주소 : https://github.com/kjhchs2/malloc-lab지난 번 포스팅에 올린 implicit + firstfit방법 말고 nextfit방법을 통해 점수를 많이 올릴 수 있었다.implicit listnext fitnext fi
http://csapp.cs.cmu.edu/3e/malloclab.pdf출처: CMU (카네기멜론)말록랩은 '동적 메모리 할당' 방법을 직접 개발하면서 메모리, 포인터 개념에 익숙해질 수 있는 과제다. 랩 코드를 직접 수정하고, 채점 프로그램을 실행하면서 '내
클라이언트-서버 모델에서 근본적인 연산은 transaction이다.1\. 클라이언트가 1개의 요청을 서버에 보낸다. transaction이 개시된다. (request)2\. 서버는 요청을 받고, 해석하고, 적절한 방법으로 자원들을 조작한다. 예를 들어, 웹서버가 브라우
네트워크 바이트 순서는 빅엔디안(Big-Endian) 방식만 사용하기로 약속돼있다.왜냐하면 CPU에 따라 byte를 읽어들이는 순서가 다른데(빅엔디안, 리틀엔디안) 이를 통일하기 위해 네트워크 바이트 순서는 반드시 빅엔디안이다.빅엔디안과 리틀엔디안에 대한 설명은 아래
지난 번 포스팅에서 소켓 인터페이스에 대해 간략히 알아봤다.이번에는 서버와 클라이언트를 만들 때 필요한 함수들을 자세히 뜯어보며 공부해보자.소켓 디스크립터는 소켓의 파일 디스크립터라고 생각하면 된다.소켓이란 유닉스 파일 디스크립터(file descriptor)를 이용하
getaddrinfo()함수 뜯어보기 getaddrinfo()함수는 domain address를 받아서 네트워크 주소 정보(IP address)를 가져오는 함수이다. 예를 들어, "http://www.google.co.kr" 라는 domain address가 있는데,
먼저, 과제하면서 작성한 파일(tiny.c 등)들은 아래 깃헙에 있다.https://github.com/kjhchs2/tiny_webserver작은 프로그램이지만.. 웹서버를 구현하는 것이 어려웠다. 아직 웹서버의 기능을 깊게, 정확하게는 모르지만 기본원리 정
OSI(Open System Interconnection)은 IOS(International Organization of Standardization, 국제 표준화 기구)에서 네트워크간의 호환성을 위해 개발되었다. TCP/IP 4계층은 OSI 7계층 모델을 기반으로 만