본 게시물은 운영체제 과목의 강의영상과 강의자료를 바탕으로 작성한 학습용 게시물입니다.
- 공유변수 활용 → 간섭 문제 발생
- race condition : 공유 변수 동시 접근 시 발생하는 문제
원소적 실행, 동기화, 임계구역
- 원소적 실행
: 공유변수를 통해 상호작용하는 프로세스 혹은 쓰레드 간에 문맥교환이 언제 일어나도 간섭이 없는 실행이 보장되는 것
- 공유변수를 사용하는 코드 영역에 임계구역을 설정 - 임계구역 설정
: 원소적 실행을 위해 각 프로세스 혹은 쓰레드가 공유변수, 자료구조, 파일 등을 배타적으로 읽고 쓸 수 있도록 설정한 코드 세그먼트
→ mutex가 기본 - 동기화 : 코드 상에 임계구역을 설정해 진입/진출을 순서화 하는 것
상호작용 프로세스와 결정성
# 상호작용 프로세스
- 컴퓨터 시스템 자체가 상호 작용하는 여러 프로세스의 집합
- 한 프로세스 내에도 여러 쓰레드가 병행 수행될 수 있음 - 주요이슈
- 결정성, 상호배제와 동기화, 교착 상태, 기아
# 프로세스 시스템
- 프로세스 집합 & 이들의 선행 제약 (순서 제약 관계)
- 선행제약 : 부분 순서 성질을 갖는 것으로, 이행성을 가짐
- 선행제약 관계가 없는 두 프로세스는 독립적 - 프로세스 시스템 내의 프로세스들은 서로 독립적이거나 선행제약 관계가 있다면 비순환적이어야 함
# 선행 그래프
- 프로세스 시스템 내의 프로세스 간 성행제약 관계를 directed 그래프로 표현
- 정상적인 프로세스 시스템의 선행 그래프는 비순환적
# 결정성
- 프로세스 시스템 내의 프로세스들 간의 코드 실행 순열이 매번 다를 수 있지만 같은 조건과 입력이 주어진다면, 항상 같은 결과를 산출해야 한다는 성질
# 프로세스 비간섭 관계
- 프로세스 시스템에서 두 개의 프로세스가 있을 때, 한 프로세스가 다른 프로세스를 선행하거나, 또는 이들이 서로 독립적일 경우 한 프로세스의 출력 장소가 다른 프로세스의 입력 장소나 출력 장소가 아니면 이들은 비간섭 관계에 있다고 정의한다.
- 한 프로세스 시스템에서, 모든 프로세스 쌍에 대해 비간섭 관계가 성립하면, 그 시스템은 비간섭 관계를 만족한다고 한다.
- 한 프로세스 시스템에 있어서, 비간섭 관계는 그 시스템이 결정적인가에 대한 필요충분 조건
상호배제
# 임계구역에 대한 요구사항 3가지
- 상호 배제
- 한 프로세스가 임계 구역을 실행 중일때, 다른 어떤 프로세스도 임계 구역 실행 x - 진행
- 반드시 하나의 프로세스를 선택해 진입시키는 올바른 결정 기법이 있어야하고,
이러한 결정은 무한정 미루어져서는 x - 제한된 대기
- 다른 프로세스가 임계 구역을 실행할 수 있는 회수에는 제한o
# mutex의 구현 (Busy Wating)
enter_mutex(lock)
임계구역 |
exit_mutex(lock)
- 피터슨의 솔루션 : 먼저 양보한 쪽이 먼저 들어가게 됨
- 베이커리 알고리즘 : 여러개의 알고리즘에 대한 해결책
- 각 프로세스는 번호표, 자신의 번호가 가장 작은 번호가 될 때까지 대기
- 발급 받은 숫자가 같을 경우 PID가 작은 것 먼저 처리 - test-and-test
: lock에 대한 test 혹은 copy를 CPU의 명령어로 제공
- CPU 명령어 하나는 문맥교환 없이 원소적으로 수행됨
- 딱 하나의 프로세스가 딱 한번만 0의 값을 리턴받게 됨 - swap
: CPU의 명령어로 두 변수 값을 문맥교환 없이 교체
- lock : 전역변수
- key : 지역변수
- 딱 하나의 프로세스가 딱 한번만 key<-0으로 설정되면서, lock<-1로 원위치됨 - 인터럽트 통제
- 임계 구역 내의 문맥 교환 자체를 방지
- 특권 명령어이기 때문에 사용자 모드에서는 x
세마포어
- busy waiting
: 임계구역 진입 시 이미 다른 프로세스가 진입해 있으면 busy-waiting loop
→ 타임 슬라이스 낭비 - 세마포어 : block/wakeup 알고리즘
- 진입 불가능 시에는 대기 상태로 전환
- 임계구역을 떠나는 프로세스가 대기 프로세스를 준비 상태로 깨워줌
- 일종의 객체 (value, 프로세스 대기큐, init, wait(P연산), signal(V연산)
- S.value
→ 양수 : 남아있는 자원 수
→ 음수 : 부족하여 대기하고 있는 대기자 수
→ 초기값 n : 자원의 개수
# 우선순위 역전 문제
- 높은 우선순위 프로세스가 현재 낮은 우선순위 프로세스가 자원 사용을 마칠 때까지 기다려햐 하는 경우 발생
'LECTURE > [2021-1] 운영체제' 카테고리의 다른 글
[운영체제] 7. 메모리 경영 (0) | 2021.06.17 |
---|---|
[운영체제] 6. 교착 상태 (Deadlock) (0) | 2021.06.17 |
[운영체제] 5. 실시간 스케쥴링 (0) | 2021.06.17 |
[운영체제] 4. 프로세스 스케쥴링 (0) | 2021.06.17 |
[운영체제] 3. 프로세스 (0) | 2021.06.15 |