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); // 소멸 (동적으로 생성..
정글 8주차에 웹서버를 구현하다 보니 쓰레드를 사용해서 병렬 처리를 해야 했다. 그래서 당장 구현을 할 수준으로만 이해를 한 뒤 구현을 끝낸 지금 다시 쓰레드에 대해 깊게 이해를 하려고 한다. 그래서 이번 Deep Dive에서는 프로세스가 아닌 쓰레드를 주로 다룰 생각이다.1. 프로세스 vs 쓰레드 차이프로세스(Process)정의: 실행 중인 프로그램. 운영체제로부터 독립된 주소 공간, 자원(File descriptor, Stack, Heap 등)을 부여받음.특징:각각의 프로세스는 커널에서 독립적으로 관리됨 (PID, 메모리 맵 등).프로세스 간 데이터 공유가 어렵다 (보통 IPC, Shared Memory, Pipe 등 필요).생성/문맥전환 비용이 큼 (Context switch: PCB 저장/복원 포..