Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- synchronizeation
- tree
- os 쓰레드
- 쓰레드 덤프
- 트리
- 컨디션 변수
- 코테
- MAP
- cpu
- 유저모드
- non-blocking
- 자바
- 코딩테스트
- 배열
- 커널모드
- Red-Black
- OS
- Lock
- 프로그래머스
- HashMap
- Java
- list
- set
- 바이너리 세마포
- black-red
- 하드웨어 쓰레드
- 유저 쓰레드
- linkedmap
- 쓰레드
- 스케줄링
Archives
변수의 기록
(CS 운영체제) 동기화 (기본) 본문
2025년 04월 7일
LOCK 동기화 공부
✅ 1. 레이스 컨디션 (Race Condition)
여러 스레드(또는 프로세스)가 동시에 공유 자원에 접근할 때,
실행 순서에 따라 결과가 달라지는 예측 불가능한 상황
📌 예시 (공유 변수 증가):
int counter = 0;
Thread A: counter++;
Thread B: counter++;
- 두 스레드가 거의 동시에 counter++를 실행하면,
실제 결과는 1이 될 수도 있음 (정상은 2여야 함)
➡ 데이터의 일관성, 정확성이 깨짐
✅ 2. 동기화 (Synchronization)
여러 스레드나 프로세스가 공유 자원에 올바른 순서로 접근하도록 제어하는 것
- 레이스 컨디션을 방지하기 위한 필수 메커니즘
- 올바른 동기화 없이는 공유 자원 보호 불가능
➡ 락(lock), 세마포어(semaphore), 모니터(monitor) 등의 도구를 사용
✅ 3. 임계 영역 (Critical Section)
공유 자원에 접근하는 코드 구역으로,
동시에 하나의 프로세스 또는 스레드만 진입해야 함
- 이 영역은 **Mutual Exclusion (상호 배제)**이 반드시 보장돼야 함
✅ Mutual Exclusion (상호 배제)
여러 스레드 중 오직 하나만 임계 영역을 사용할 수 있게 만드는 것
➡ 구현 방법: lock 사용
lock.lock(); // 진입 전 락
// 임계 영역
lock.unlock(); // 빠져나올 때 락 해제
✅ Critical Section Problem – 해결 조건 3가지
조건 | 설명 |
1. Mutual Exclusion (상호 배제) | 동시에 하나만 임계 영역 진입 가능 |
2. Progress (진행) | 어떤 프로세스도 임계 영역에 없으면, 진입 후보 중 하나가 반드시 진입 가능 |
3. Bounded Waiting (한정된 대기) | 특정 프로세스가 락을 요청했을 때, 무한히 기다리는 일이 없도록 보장 |
✅ 요약 정리 플로우
공유 자원 → 레이스 컨디션 발생 가능
↓
동기화(Synchronization) 필요
↓
임계 영역 (Critical Section) 지정
↓
Mutual Exclusion으로 보호 (lock 등)
↓
락 구현 시 test_and_set 같은 atomic 연산 사용 가능
'CS지식 > 운영체제 (Operating System)' 카테고리의 다른 글
(OS) 데드락이란? (발생조건 , 해결방안 포함) (0) | 2025.04.12 |
---|---|
(CS) 모니터(Monitor)란? (컴퓨터 모니터 아님.) synchronized (0) | 2025.04.11 |
(CS 운영체제) 동시성 - 스핀락(spinlock) 뮤텍스(mutex) 세마포(semaphore) 각각 특징과 차이 설명 java (0) | 2025.04.07 |
(CS 운영체제)CPU-bound vs IO-bound :시스템 최적화를 위한 성능 특성 및 쓰레드 전략 정리 (0) | 2025.04.06 |
[CS ] 컨텍스트 스위칭 (프로세스 컨테스트 스위칭 <-> 스레드 컨텍스트 스위칭) (0) | 2025.04.05 |