크래프톤 정글 8주 차 CSAPP 11장의 웹서버 구현을 진행했다. 그리고 소형 웹서버를 기반으로 프록시 서버를 구현해야 한다. CSAPP 11 장의 내용은 이전 포스트 들을 확인할 수 있다.2025.05.03 - [크래프톤 정글 (컴퓨터 시스템: CSAPP)/11장 네트워크 프로그래밍] - 컴퓨터 시스템 : CSAPP 11장 정리 - 11.6 종합설계 :소형 웹 서버 Part.1 컴퓨터 시스템 : CSAPP 11장 정리 - 11.6 종합설계 :소형 웹 서버 Part.111.6절 Putting It Together: The Tiny Web Server이 절에서는 지금까지 배운 내용을 종합하여 작동 가능한 소형 웹 서버 Tiny를 구현한다. 이 서버는 다음을 처리할 수 있다:정적 콘텐츠 (HTML, 이미지..
C 언어에서 문자열(string)을 다룰 때 사용하는 표준 라이브러리 함수들은 string.h 헤더 파일에 정의되어 있으며, 이 함수들은 문자 배열(char 배열)을 다룰 때 자주 사용된다. 아래는 주요 str 관련 함수들과 그 설명이다.1. strlen – 문자열 길이 구하기size_t strlen(const char *s);설명: 문자열의 길이를 구한다. 널 문자('\0')는 포함하지 않는다.예제:#include #include int main() { char str[] = "hello"; printf("Length: %zu\n", strlen(str)); // 출력: Length: 5}2. strcpy – 문자열 복사char *strcpy(char *dest, const char *src..
OSI 7 계층이란?OSI (Open Systems Interconnection) 7 계층 모델은 국제표준화기구(ISO)가 만든 네트워크 통신의 표준 참조 모델이다.목적은 서로 다른 시스템 간의 통신을 계층화된 방식으로 표준화하여 쉽게 이해하고 설계, 구현, 디버깅할 수 있게 하는 것이다.각 계층은 독립적이며 명확한 책임을 가지고 있으며, 위아래 계층과만 상호작용한다.왜 나누어야 하고 OSI 7 계층을 알아야 할까?단계별로 정의한 이유는 통신 과정 속에서 장애가 발생한 경우, 다른 계층의 소트프웨어나 장비를 건들지 않고 통신 장애가 발생한 계층에서만 해결책을 강구할 수 있기 때문이다.OSI 7 계층 구조 및 설명1 계층: 물리 계층 (Physical Layer)1. 핵심 개념물리 계층은 데이터를 전기적,..
pthread_rwlock_t: 읽기/쓰기 락 (Read-Write Lock)개념읽기 작업은 동시에 여러 개 가능,쓰기 작업은 오직 하나만 가능하도록 제어하는 락.다수의 reader는 동시에 접근 가능단 하나의 writer만 접근 가능하고, 이 동안 reader도 접근 불가읽기 작업이 많은 경우 성능 향상 가능.핵심 동작 원리락 요청허용 조건읽기 락쓰기 락이 잡혀 있지 않으면 여러 개 허용쓰기 락아무도 락을 잡고 있지 않아야 허용 (reader, writer 모두 없어야 함)관련 함수 (POSIX Threads)pthread_rwlock_t rwlock = PTHREAD_RWLOCK_INITIALIZER;pthread_rwlock_init(&rwlock, NULL);pthread_rwlock_rdlock..
조건 변수란?조건 변수(Condition Variable)는 공유 자원의 상태가 어떤 조건을 만족할 때까지 쓰레드를 기다리게 하거나, 그 조건이 만족되면 다른 쓰레드를 깨우는 동기화 도구다.조건 변수의 동작 구조조건 변수는 반드시 mutex와 함께 사용된다.전형적인 흐름1. 쓰레드 A:pthread_mutex_lock(&mutex);while (조건이 false) pthread_cond_wait(&cond, &mutex); // 대기 상태 진입// 조건이 만족되면 계속 진행pthread_mutex_unlock(&mutex);2. 쓰레드 B (조건 만족시키는 측):pthread_mutex_lock(&mutex);// 조건을 true로 만드는 작업pthread_cond_signal(&cond); // ..
1. pthread_mutex_t: 상호배제(Mutual Exclusion)개념여러 쓰레드가 공유 자원에 동시 접근하지 못하도록 막는 도구.한 번에 하나의 쓰레드만 임계구역(Critical Section)을 실행할 수 있도록 보장.주요 함수pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; // 정적 초기화pthread_mutex_init(&lock, NULL); // 동적 초기화pthread_mutex_lock(&lock); // 락 획득 (다른 쓰레드가 잡고 있으면 대기)pthread_mutex_unlock(&lock); // 락 해제pthread_mutex_destroy(&lock); // 소멸 (동적으로 생성..