운영체제 - 프로세스와 스레드
프로세스(Process)와 스레드(Thread)의 메모리 구조 비교
malloc, new, 객체 생성)하는 영역.문맥 교환(Context Switching)과 교착상태(Deadlock) 4대 조건
1) 원인 (경쟁 상태, Race Condition):
count = count + 1은 고급 언어에서는 한 줄이지만, 실제 CPU 기계어로는 ① 메모리에서 count 값을 레지스터로 읽기(LOAD) ② 레지스터 값에 1 더하기(ADD) ③ 결과를 메모리에 쓰기(STORE)의 3단계로 나뉩니다.
만약 T1이 0을 읽어 1을 만든 직후 아직 메모리에 쓰기 전에 문맥 교환이 일어나 T2도 메모리에서 여전히 0을 읽어가면, 두 스레드 모두 1을 덮어쓰게 되어 덧셈 한 번이 증발합니다.
2) 해결 방법 (동기화, Synchronization):
공유 자원에 접근하는 코드 구간을 임계 구역(Critical Section)으로 지정하고, 뮤텍스(Mutex Lock), 세마포어(Semaphore), 또는 원자적 연산(Atomic CAS)을 적용해 한 번에 하나의 스레드만 진입하도록 상호 배제를 보장해야 합니다.
CPU 스케줄링 알고리즘과 멀티스레드 동기화 실무
핵심 요약
- ✓프로세스는 독립된 메모리 공간(Code, Data, Heap, Stack)을 가지며, 스레드는 Stack과 PC만 독립적으로 갖고 나머지를 공유한다.
- ✓문맥 교환(Context Switching)은 CPU 제어권을 넘길 때 PCB에 프로세스 상태를 저장하고 복원하는 과정이다.
- ✓교착상태(Deadlock)는 상호 배제, 점유와 대기, 비선점, 순환 대기의 4가지 조건이 동시에 충족될 때만 발생한다.
- ✓멀티스레드 환경에서는 경쟁 상태(Race Condition)를 막기 위해 뮤텍스나 세마포어를 통한 임계 구역 동기화가 필수적이다.