proxy_lab: Concurrency & Cache Optimization with pthread and
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

Network] proxy_lab (Feat. Concurrency, Cache)

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

소프트웨어 개발자(중급~고급), 웹 서버 구현 및 병렬 처리 기술을 학습하고자 하는 개발자

핵심 요약

  • pthread를 활용한 병렬 처리로 수천 개의 쓰레드를 효율적으로 생성 및 관리
  • LRU 캐시 구현을 통해 요청 처리 성능 향상 및 서버 부하 감소
  • mutex 동기화 메커니즘으로 캐시 자원 접근 충돌 방지 및 데이터 일관성 유지

섹션별 세부 요약

  1. 병렬 처리 구현
  • pthread 래퍼 함수를 사용해 쓰레드 생성 및 관리
  • pthread_detach()로 리소스 누수 방지
  • fork() 대비 쓰레드의 가벼운 특성으로 메모리 효율성 향상
  1. 캐시 구조 설계
  • cache_block 구조체로 URI, 응답 데이터, LRU 카운터, 사용 여부 플래그 구성
  • LRU 알고리즘으로 캐시 교체 결정
  • global_locklock으로 캐시 자원 접근 동기화
  1. mutex 동기화 메커니즘
  • 화장실 잠금 비유로 mutex의 필요성 설명
  • pthread_mutex_lock/unlock으로 캐시 읽기/쓰기 동기화
  • global_lock으로 캐시 블록 선택 및 쓰기 시 동기화
  1. doit 함수 구현
  • 캐시 확인 후 cached_size에 따라 응답 처리
  • 캐시 미스 시 서버 요청 및 응답 캐시화
  • MAX_OBJECT_SIZE 제한으로 캐시 저장 조건 설정

결론

  • mutex 사용 시 병렬성 저하 가능성 주의 (proxy_lab 제약사항)
  • LRU 캐시 + pthread 병렬 처리로 웹 서버 성능 최적화
  • 캐시 처리 시 mutex 동기화 필수 (데이터 일관성 보장)