우선순위 역전(Priority Inversion)은 낮은 우선순위의 스레드가 높은 우선순위의 스레드보다 먼저 CPU를 점유하거나, 높은 우선순위 스레드의 실행을 지연시키는 현상을 의미한다. 이는 멀티스레딩 환경에서 공유 자원과 락(lock)이 있을 때 주로 발생한다.발생 시나리오L (Low priority) 스레드가 공유 자원(R)을 사용 중이다.H (High priority) 스레드가 실행되며, 같은 자원 R에 접근하려고 한다.하지만 자원 R은 이미 L이 점유 중이므로, H는 대기하게 된다.그 사이 M (Medium priority) 스레드가 스케줄러에 의해 실행된다.M은 자원 R과 무관하지만 H보다 우선순위가 낮으므로 원래 H 다음에 실행되어야 하지만,현재 H는 자원 대기 상태이므로 M이 계속 실행됨..
스레드 락(thread lock) 은 멀티스레딩 환경에서 공유 자원 접근을 동기화하기 위해 매우 중요한 개념이다. 특히 캐시 같은 공유 메모리 구조는 여러 스레드가 동시에 접근하면 데이터 레이스, 비일관성, 세그멘테이션 폴트 등 심각한 문제가 발생할 수 있어, 락이 필수적이다.더보기1. 스레드 락의 목적하나의 스레드만 임계 구역(critical section)에 진입할 수 있도록 제한하는 동기화 장치임계 구역: 동시에 둘 이상이 들어가면 문제가 발생하는 코드 영역 (예: 캐시 삽입, 삭제, 접근)문제점 예시:두 스레드가 동시에 같은 URI를 캐시에 삽입하거나 제거하면 → 메모리 누수, 중복 삽입, 충돌 발생한 스레드가 next 포인터를 변경하고 있는 도중 다른 스레드가 이를 따라 접근 → 세그폴트주제 :..
이제 본격적으로 캐시 기능을 구현해 보려고 한다. 캐시 기능을 구현하기 위해 cache.c, cache.h 를 만들어 별도로 분리를 해도 될 것이며 그냥 proxy.c에 전부 담아서 개발을 진행해도 된다. 일단은 proxy.c에 몰아서 개발을 하고 추 후 리팩터링을 통해 분리를 하는 방향으로 진행을 할 것 같다. 그럼 시작하기 앞서 먼저 이 전 포스팅의 마지막 부분에 있던 캐시용 구조체들을 구현하고 시작하는 것이 좋을 것이다. 자세한 사항은 이 전 포스트를 확인하라2025.05.05 - [크래프톤 정글] - [WebProxy-Lab] proxy 서버 구현하기 Part.4 - 캐시 기능: 개념 정리 [WebProxy-Lab] proxy 서버 구현하기 Part.4 - 캐시 기능: 개념 정리이 전 포스팅까지 ..
이 전 포스팅까지 해서 WebProxy-Lab의 동시성 기능까지 구현을 했다. 이제 마지막 요구 사항인 캐시 기능에 대해 접근을 시도하려고 한다. 2025.05.05 - [크래프톤 정글] - [WebProxy-Lab] proxy 서버 구현하기 Part.3 - 동시성 처리2025.05.05 - [크래프톤 정글] - [WebProxy-Lab] proxy 서버 구현하기 Part.2 - 프록시 서버 구현2025.05.05 - [크래프톤 정글] - [WebProxy-Lab] proxy 서버 구현하기 Part.1 - 요구사항 확인 및 설계이번 Part.4 에서는 캐시를 구현하기 위해 필요할 것으로 생각되는 개념이나 아이디어를 정리하려고 한다.1. 요구 사항 확인먼저 proxylab.pdf 에 있는 캐시 관련 요구사..
이전까지의 포스팅을 통해 WebProxy-Lab에서의 기본 프록시를 구현했다.2025.05.05 - [크래프톤 정글] - [WebProxy-Lab] proxy 서버 구현하기 Part.2 - 프록시 서버 구현 [WebProxy-Lab] proxy 서버 구현하기 Part.2 - 프록시 서버 구현이전 포스팅에서 프록시 구현을 위한 설계를 진행했다.2025.05.05 - [크래프톤 정글] - [WebProxy-Lab] proxy 서버 구현하기 Part.1 - 요구사항 확인 및 설계 [WebProxy-Lab] proxy 서버 구현하기 Part.1 - 요구사항www.gowoong.com기본 프록시를 구현하고 40점의 점수를 얻을 수 있었다. 이제 요구사항 2번째인 동시성 처리에 대한 내용을 살펴보겠다.1. 요구사항..
이전 포스팅에서 프록시 구현을 위한 설계를 진행했다.2025.05.05 - [크래프톤 정글] - [WebProxy-Lab] proxy 서버 구현하기 Part.1 - 요구사항 확인 및 설계 [WebProxy-Lab] proxy 서버 구현하기 Part.1 - 요구사항 확인 및 설계크래프톤 정글 8주 차 CSAPP 11장의 웹서버 구현을 진행했다. 그리고 소형 웹서버를 기반으로 프록시 서버를 구현해야 한다. CSAPP 11 장의 내용은 이전 포스트 들을 확인할 수 있다.2025.05.03 - [크래프www.gowoong.com이제 해당 설계를 기반으로 구현을 진행해 보겠다.1. main 함수이전에 구현 요청 사항을 보면 포트를 처리해야 한다. 이 말은 이 전에 tiny 웹서버와 같이 실행할 때 포트번호를 보내..