다중 프로그래밍 시스템
- 여러 개의 프로세스 존재
- 프로세스 서로 독립적 동작
- 프로세스 끼리 자원을 공유-> 문제 발생 가능성
Synchronization(동기화)
- 프로세스간 통신
- 프로세스간 서로 정보를 공유하는 것
- 프로세스간 서로 동작을 맞추는 것.
Asynchronization(비동기화)
- 프로세스간 서로 어떻게 동작하는지 모름
Concurrent(병행적)
- 프로세스 동시에 동작
- 병행 수행 중인 비동기적 프로세스들이 자원을 공유-> 문제 발생 가능성
용어정리
1. Shared data(공유 데이터) or Critical data
여러 프로세스들이 공유하는 데이터
2. Critical section(임계 영역)
공유 데이터(자원)를 접근하는 코드 영역(code segment)
3. Mutual exclusion(상호 배제)
둘 이상 프로세스 동시에 critical section에 진입하는 것을 막는다.
Critical Section(example)
기계어 명령(machine instruction)
- Atomicity(원자성): 최소 단위. 더 이상 쪼갤 수 없음.
- Indivisible(분리 불가능)
- 기계어 명령 실행 중 interrupt 받지 않음(Atomicity, Indivisble)
- compiler가 code를 machine instruction로 번역
sdata==2가 될까? No!
- race condition: 실행 순서에 따라 결과가 달라짐
- 대안: Mutual Exclusion
Mutual Exclusion
critical section 실행되는 동안, sdata에 접근하려는 다른 프로세스 진입 막는다.
Mutual exclusion methods(primitives)
- primitive: 가장 기본이 되는 연산
- enterCS() primitive: critical section 진입이 가능한지 검사!
- exitCS() primitive: critical section 벗어날 때 후처리 과정. cs 벗어남을 알려줘야 대기하는 프로세스가 들어올 수 있겠지?
ME primitives(enterCS(), exitCS()) 만들기 위한 요구사항
- Mutual exclusion: CS에 프로세스 있으면, 다른 프로세스 진입 금지
- Progress(진행?): CS가 비어있으면 진입을 방해하면 안됨!
- Bounded waiting(한정 대기): 무한 대기 X. 유한 시간 내 CS 진입 허용되어야 함.
'OS' 카테고리의 다른 글
process와 thread 구성 (0) | 2022.02.11 |
---|---|
Concurrency vs Parallelism (0) | 2022.02.10 |
[OS] Lecture 5. Process Scheduling (4/4) - MLQ, MFQ (0) | 2022.02.05 |
[OS] Lecture 5. Process Scheduling (3/4) - SPN, SRTN, HRRN (0) | 2022.02.05 |
[OS] Lecture 5. Process Scheduling (2/4) - FCFS, RR (0) | 2022.02.05 |