
프로세스 동기화
멀티 프로세스 환경에서 공유 자원의 읠관성을 보장하기 하는 방법
임계구역
- 공유 자원 접근 순서에 따라 결과가 달라질 수 있는 코드
프로세스 동기화를 위한 기법 3가지
- 상호배제
- 실행 중일 때는 다른 진입 막기
- 진행
- 임계구역이 비어있다면 진입
- 한정된 대기
- 임계구역을 기다릴 땐 한정된 시간만 대기
상호배제 기법
뮤택스
- 락킹 알고리즘
- 임계구역에 들어간 프로세스가 반드시 풀고 나와야 함
- 스핀락 오버헤드가 큼
- 스핀락: 반복문을 돌면서 임계구역 진입이 가능한지 계속 확인하는 작업
세마포어
- 시그널링 알고리즘
스레드 안전
- 하나의 자원 또는 객체에 여러 스레드가 접근해도 프로그램 실행하는데 문제가 없는 것을 의미
- 반대되는 단어는 Race condition
교착상태
서로 다른 프로세스가 공유 자원 하나 씩을 갖고 서로의 자원을 기다라고 있는 상태
교착상태 발생조건 4가지
- 상호배제
- 하나의 공유자원에 하나의 접근
- 점유와 대기
- 하나의 공유자원 갖고 있는 상태에서 다른 공유자원을 기다림
- 비선점
- OS가 공유자원에 대한 제어권이 없어서 강제로 못하는 상태
- 환형대기
- 공유자원을 받을 때 까지 자원을 기다림
메모리 관리 전략
메모리 용어 정리
논리 / 가상
- 프로세스 실행 관점에서 보는 상태
ex) 논리 메모리, 논리 주소, 가상 메모리
물리
- 하드웨어 관점에서 보는 상태
ex) 물리 메모리, 물리 주소
단편화
- 외부 단편화
- 들어가야할 메모리 크기에 비해 비어있는 메모리 크기가 적은 경우
- 내부 단편화
- 들어가야할 메모리 크기가 비어 있는 메모리 크기에 비해 작아서 사용 못하는 메모리 크기가 커지는 경우

연속 메모리
고정 메모리
가변 메모리
- 최척 적합
- 원하는 메모리 크기를 첫 발견하는 곳에 메모리 load
- 최초 적합
- 원하는 메모리와 빈 메모리 크기가 가장 비슷한 곳에 load
- 외부 단편화 가능성
- 최악 적합
- 비어 있는 가장 큰 메모리에 load 한다.
- 내부 단편화 가능성
비연속 메모리
- 페이징
- 필요한 메모리를 page 단위로 나누고 물리메모리를 frame 단위로 나눠서 page와 frame을 1:1 대응으로 만들어서 메모리에 나눠서 올리는 기법
- page-frame 연결해주는 테이블을 페이지 테이블이라 하며 PCB에 저장되어 관리
- 마지막 Page에 내부 단편화 가능성
- 세그멘테이션
- 프로세스 메모리 영역을 Segment 단위로 분할
- Segment: 논리적 단위
- 세그먼테이션 테이블을 사용해 매핑한다.
- Segment당 물리 메모리 주소(base)와 메모리 크기(limit)을 테이블에 저장
- 외부 단편화 가능성
가상 메모리
프로세스 메모리 일부만 load하는 방식
요구 페이징
프로세스에 필요한 페이지만 메모리에 load하는 방식
페이지 폴트
요구되는 페이지가 메모리에 없는 상황
- 트랩이 발생하며 메모리-디스크 간의 스와핑 발생 → 오버헤드 발생
스레싱
- 일정 수 이상 프로그램이 실행되면 CPU 이용률이 떨어지는 현상
→ 페이지 폴트가 자주 일어나서 CPU 유휴시간(Idle)이 증가
- 해결책: Working Set
- 지역성 기반, 자주 사용되는 페이지는 교체하지 않는다.
Share article