2020. 12. 20. 17:00ㆍ프로그래밍/운영체제
동기화(Synchronization)
◦작업들 사이에 실행시기를 맞추는 것
◦여러 스레드가 동일한 자원 접근시 동기화 이슈 발생
◦동일자원을 여러 스레드가 동시수정하면, 각 스레드 결과에 영향을 준다
동기화 이슈 해결방안
◦Mutual exclusion(상호배제)
‣ 임계 자원(critical resource) g_count
‣ 임계 영역(critical section) lock.acquire(), lock.release()
◦여러 스레드가 변경하는 공유변수에 대해 Exclusive Access필요!
(스레드가 동시 접근하지 못하게 막자)
Mutex 와 Semaphore
◦Critical Section(임계영역)에 대한 접근을 막기위한 locking 필요
◦Mutex(binary semaphore)
‣ 임계구역에 하나의 스레드만 들어갈 수 있음
◦Semaphore
‣ 임계구역에 여러 스레드가 들어갈 수 있음
교착상태(Deadlock)와 기아상태(Starvation)
◦교착상태
‣ 무한대기상태로 두개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있어
다음단계로 진행하지 못하는 상태
◦기아상태(Starvation)
‣ 특정프로세스의 우선순위가 낮아서 원하는 자원을 할당받지 못하는 상태
‣ ex) 50개의 프로세스
-49개의 프로세스 우선순위1
-1개의 프로세스 우선순위2
-10번실행 ➡ 우선순위가 1번인 것만 계속 실행하게 되어 우선순위2번은 자원할당X
◦교착상태와 기아상태
‣ 교착상태는 여러 프로세스가 동일 자원 점유를 요청할 때 발생
‣ 기아상태는 부족한 자원을 점유하기 위해 경쟁할 때, 특정 프로세스는 영원히 자원할당이 안되는 경우
'프로그래밍 > 운영체제' 카테고리의 다른 글
[OS] 운영체제 역사 (1950년대 ~ 최근) (0) | 2021.09.16 |
---|---|
[OS] 운영체제의 주변 장치 관리 (0) | 2021.01.02 |
[OS] Thread - 개념, 장단점, Thread vs Process (0) | 2020.12.20 |
[OS] 프로세스간 커뮤니케이션(IPC 기법 - 파이프, 메시지큐, 공유메모리) (0) | 2020.12.20 |
[OS] 컨텍스트 스위칭(Context Switching, PCB, PC, SP) (0) | 2020.12.20 |