[CSAPP 11장 완전 정복] 11.4 rawdata 공유 (전체 학습 목표, 학습 정리 자료)
·
크래프톤 정글/컴퓨터구조(CSAPP)
CSAPP 11.4 rawdata 공유 (전체 학습 목표, 학습 정리 자료)CSAPP 11.4는 네트워크 프로그래밍의 핵심 개념을 다루는 중요한 절로, 체계적인 학습이 특히 요구되는 부분 중 하나인데요. 이에 따라 이 절을 학습하는 데 도움이 될 수 있도록 명확한 학습 목표를 설정하고, 각 목표에 대응하는 핵심 개념과 세부 내용을 정리해 보았습니다. 이후에 게시될 요약본만으로도 전체적인 흐름을 파악하는 데에는 무리가 없지만, 아무래도 분량 상의 제한으로 인해 일부 중요한 내용이 생략될 수밖에 없는데요. 따라서 이 절의 내용을 보다 깊이 있게 이해하고자 하시는 분들은 아래에 제시된 세부 학습 목표와 정리 자료를 함께 참고하시기를 권장드립니다. CSAPP 11.4 전체 학습 목표 (총7개)CSAPP 11.4..
[CSAPP 11장 완전 정복] 11.3 IP, 포트, DNS, 바이트 순서까지, 실전 소켓 프로그래밍 개념 정리
·
크래프톤 정글/컴퓨터구조(CSAPP)
IP, 포트, DNS, 바이트 순서까지, 실전 소켓 프로그래밍 개념 정리이번 편에서는 실제로 소켓 프로그래밍을 구현할 때 반드시 마주치게 되는 핵심 개념들을 정리합니다. 특히 IP 주소, 포트 번호, DNS 변환, byte ordering, TCP 연결 과정은 실수하기 쉬운 포인트이자, 코드를 line by line으로 따라갈 때 기반이 되는 지식이라고 할 수 있습니다. IP 주소와 포트 번호, 누가 누구랑 통신하나?IP 주소네트워크 상에서 호스트(컴퓨터)를 식별예) 192.168.0.1포트 번호한 호스트 내의 여러 애플리케이션 중 어떤 것과 통신할지를 지정예) 80(HTTP), 443(HTTPS), 22(SSH)조합: IP + Port = '누구의 어떤 프로그램과 통신할지'를 지정서버 주소를 지정할 ..
[CSAPP 11장 완전 정복] 11.2 소켓 프로그래밍을 위한 네트워크 구조 제대로 잡기
·
크래프톤 정글/컴퓨터구조(CSAPP)
소켓 프로그래밍을 위한 네트워크 구조 제대로 잡기이번 포스트에서는 클라이언트-서버 모델 위에 실제 통신이 어떻게 이루어지는지를 다루는 네트워크 계층을 정리해 봅니다. 소켓 프로그래밍이 실제로는 전송 계층 수준에서 이뤄지는 작업이라는 점도 명확히 해두고 싶은데요. 이는 이후 실제 코드를 효율적으로 따라가기 위해 반드시 필요한 개념이라고 할 수 있습니다. 네트워크를 구성하는 요소들호스트 (Host)클라이언트나 서버 역할을 하는 컴퓨터우리가 직접 소켓을 실행시키는 주체링크 (Link)유선/무선으로 두 장치를 연결하는 통로 (ex. 이더넷, Wi-Fi)라우터 (Router)데이터가 목적지까지 잘 도달하도록 경로를 설정해주는 중간 관리자구조적으로 보면 데이터는 "Client Host → Link → Router..
[CSAPP 11장 완전 정복] 11.1 소켓 프로그래밍을 위한 클라이언트-서버 모델 개념 잡기
·
크래프톤 정글/컴퓨터구조(CSAPP)
소켓 프로그래밍을 위한 클라이언트-서버 모델 개념 잡기이번 포스트에서는 CS:APP 11장의 첫걸음인 클라이언트-서버 모델에 대해 정리합니다. 소켓을 왜 써야 하는지, 서버는 어떤 방식으로 동작하는지, 전체 흐름을 한눈에 이해할 수 있도록 정리해 보았는데요. 본격적으로 소스 코드를 읽기 전에 이 구조를 머릿속에 그릴 수 있다면, line-by-line 분석이 훨씬 수월해질 것입니다. 클라이언트-서버 모델이란?서버(Server)서비스를 제공하는 프로그램클라이언트 요청을 수신하고 응답을 반환한다클라이언트(Client)서비스를 요청하는 프로그램사용자를 통해 능동적으로 실행된다이 둘은 네트워크로 연결되며, 클라이언트가 요청을 보내면 이를 기다리고 있던 서버가 응답을 보내주는 비대칭적 관계입니다. 서버 구현 ..
[CSAPP 6장 완전 정복] 6.6~6.7 캐시가 프로그램 성능에 미치는 영향 및 6장 전체 요약
·
크래프톤 정글/컴퓨터구조(CSAPP)
캐시가 프로그램 성능에 미치는 영향 및 6장 전체 요약이번 마지막 편에서는 앞에서 배운 내용을 종합하여, 캐시가 실제로 프로그램 성능에 어떤 영향을 주는지를 살펴보고, 6장의 핵심 내용을 한눈에 정리해보겠습니다. 캐시가 성능에 끼치는 영향CPU는 매 사이클마다 명령어를 실행할 수 있지만, 이를 위해 필요한 데이터 접근이 느릴 경우 성능이 급격히 저하되는데요. 이 때 캐시 메모리의 적중률이 높을수록 CPU가 대기하지 않고 효율적으로 동작할 수 있습니다. 예시: 캐시 효율이 다른 두 코드 비교다음은 동일한 2차원 배열 합계를 계산하는 코드입니다. 로직은 같지만 접근 순서에 따라 캐시 성능이 크게 차이나게 되는데요.// 비효율적인 접근 (열 우선 순회)int sum = 0;for (int j = 0; j ..
[CSAPP 6장 완전 정복] 6.5 캐시 친화적인 코드 최적화 전략 알아보기
·
크래프톤 정글/컴퓨터구조(CSAPP)
캐시 친화적인 코드 최적화 전략 알아보기이번 포스트에서는 우리가 실제 코드를 작성할 때 캐시 성능을 높이기 위해 어떤 전략을 적용할 수 있는지를 살펴보겠습니다. 지역성(Locality) 개념을 잘 활용하면, 동일한 알고리즘이라도 훨씬 더 빠르게 동작할 수 있게 되지요. 캐시 친화적 코드의 중요성앞서 배운 것처럼 캐시 적중률(Cache Hit Rate)이 높을수록 CPU는 상대적으로 느린 메모리로부터 데이터를 가져오지 않아도 되어, 보다 빠르게 데이터를 처리할 수 있는데요. 따라서 캐시에 잘 맞는 코드를 작성하는 것이 성능 최적화의 핵심이 됩니다. 캐시 친화적인 코드 작성 전략배열을 순차적으로 접근하기 (Stride-1)공간 지역성(spatial locality)을 극대화중첩 루프에서 메모리 접근 순서..
[CSAPP 6장 완전 정복] 6.4 캐시 메모리 핵심 정리
·
크래프톤 정글/컴퓨터구조(CSAPP)
캐시 메모리 핵심 정리이번 포스트에서는 메모리 계층구조의 핵심 요소인 캐시 메모리(Cache Memory)를 본격적으로 다룹니다. 캐시가 어떻게 CPU와 메인 메모리 사이의 속도 차이를 메꿔주는지, 구체적으로 살펴보겠습니다. 캐시 메모리란?캐시는 CPU가 자주 접근하는 데이터를 빠르게 제공하기 위해 설계된 작은 고속 메모리인데요. 프로그램의 지역성(Locality) 특성을 활용해 높은 효율을 달성하는 장치입니다. 캐시 기본 구조블록(Block): 메모리에서 불러오는 데이터 단위 (ex: 64바이트)라인(Line): 캐시 안에 저장된 블록 하나세트(Set): 여러 개의 라인을 묶은 단위 (Set-Associative 구조에서 등장)태그(Tag): 캐시에 저장된 데이터가 CPU의 요청 주소와 일치하는지를..
[CSAPP 6장 완전 정복] 6.3 메모리 계층구조 제대로 이해하기
·
크래프톤 정글/컴퓨터구조(CSAPP)
메모리 계층구조 제대로 이해하기이번 포스트에서는 컴퓨터 시스템이 데이터를 빠르게 다루기 위해 어떻게 메모리 계층구조(memory hierarchy)를 설계했는지 살펴보겠습니다. 이 구조는 저장장치 간 속도 차이를 극복하는 핵심 전략이라고 할 수 있습니다. 메모리 계층구조의 필요성CPU는 매우 빠른 속도로 명령을 처리하는데, 메인 메모리(DRAM)는 상대적으로 느립니다. 만약 CPU가 매번 메모리를 기다려야 한다면 엄청난 낭비가 발생하게 되겠죠. 이를 해결하기 위해, 빠르지만 작은 저장장치부터 느리지만 큰 저장장치까지 여러 단계를 계층적으로 쌓아, 데이터 접근을 최적화합니다. 메모리 계층 구조 살펴보기일반적인 메모리 계층은 다음과 같이 구성됩니다.레지스터(Register): CPU 내부, 접근 속도 극..