동시성과 병렬성
동시성(병행성)
- 하나의 코어에서 여러 작업을 번걸아가며 처리하는 방식
- 빠른 CPU 처리속도로 여러 프로그램가 동시에 작동하는 것처럼 느낌
- 문제점 - 프로세스간 메모리 공유 (잦은 콘텍스트 스위칭으로 인한 오버헤드)
병렬성
- CPU가 여러개 있어서 각 CPU에서 작업을 동시에 처리하는 방식
- 물리적인 시간 관점에서 실제로 여러 작업이 동시에 실행
프로세스 동기화
프로세스 동기화
- 공유 자원에 여러 프로세스가 동시 접근해도 데이터의 일관성이 유지되도록하는 매커니즘
임계 영역
- 공유 자원에 접근할 수 있고 접근 순서에 따라 결과가 달라지는 코드 영역
레이스 컨디션 (경쟁 상태)
- 공유 자원에 여러 프로세스들이 동시에 접근해서 경쟁하는 상태
- 최종 연산결과는 마지막에 공유 데이터를 다룬 프로세스가 누구인지에 따라 결정
- 레이스 컨디션을 막기 위해 동기화가 필요
- 예) 공유 메모리를 사용하는 프로세스 사이에서 커널 모드 수행 중 인터럽트가 발생하여 인터럽트 처리루틴이 수행되는 경우 커널 영역의 공유 데이터에 동시 접근이 발생
상호 배제
- 어떤 프로세스가 임계 영역을 실행 중일 때 다른 프로세스가 임계 영역에 접근할 수 없도록하는 방법
- 동기화 방법 중의 하나이고 상호배제 기법으로는 뮤텍스와 세마포어가 있음
뮤텍스
- 락을 가진 프로세스만이 공유 자원에 접근할 수 있도록 하는 방법
- 임계 영역에 접근한 프로세스가 락을 걸고 접근하지 못하는 프로세스는 락을 얻기 위해 대기하는 동안 락이 풀렸는지 반복문을 돌면서 확인
- 프로세스가 대기 상태가 되지 않고 자원 사용 가능 여부를 확인하므로 프로세스가 빠르게 교체될 수 있음
세마포어
- 공유 자원에 접근할 수 있는 프로세스의 수를 정해 접근을 제어하는 방법
- 임계 영역에 접근할 수 있는 키의 개수를 지정하고 이중 하나를 가진 프로세스만에 임계 영역에 접근 가능
- 이미 자원에 접근한 프로세스가 접근을 해제하면 다른 프로세스가 접근할 수 있도록 신호를 보내는 시그널링 매커니즘
모니터
- 모니터는 프로그래밍 언어 레벨에서 동기화 기능을 제공
- 모니터 내부에는 단 하나의 프로세스만이 존재할 수 있기 때문에 간편하게 동기화를 수행할 수 있음
데드락
데드락(교착 상태)
- 2개 이상의 프로세스가 각각 자원을 가지고 있으면서 서로의 자원을 요구하며 기다리는 상태
데드락 발생 조건
- 상호 배제 : 하나의 공유 자원에 하나의 프로세스만 접근 가능
- 점유와 대기 : 프로세스가 고유 자원을 가지며 다른 프로세스 자원을 점유하기 위해 대기
- 비선점 : 다른 프로세스에 할당된 자원을 뺏을 수 없다
- 순환 대기 : 프로세스가 자신의 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구
데드락 회피 방법
- 예방 : 앞의 4가지 조건 중 하나를 제거
- 회피 : 할당되는 자원의 수를 조절하여 데드락 피함
- 무시 : 개발자가 수동으로 프로세스를 종료
- 검출 후 회복 : 자원할당 그래프를 사용해서 데드락 상태를 검출하여 해당 프로세스를 종료해서 데드락 회복
참고
기술 면접 대비 CS전공 핵심요약집 | 이수진 https://product.kyobobook.co.kr/detail/S000208504237
'CS' 카테고리의 다른 글
[운영체제] 기본개념, 커널, 시스템 (0) | 2023.10.14 |
---|---|
[운영체제] 메모리 관리, 가상메모리 (0) | 2023.10.14 |
[네트워크] 네트워크 레이어, IP 프로토콜 (0) | 2023.10.07 |
[운영체제] CPU 스케줄링 (0) | 2023.10.06 |
[네트워크] 신뢰적 데이터 전송, TCP (0) | 2023.10.05 |