To Be myself
[혼공컴운] 5주차 (1/29~2/4) Chapter 12 ~ 13 본문
기본 미션
Chapter 12.
P. 363 확인 문제 1번
뮤텍스 락과 세마포에 대한 설명으로 옳지 않은 것을 고르세요.
① 뮤텍스 락은 임계구역을 잠근 뒤 임계구역에 진입함으로써 상호배제를 위한 동기화를 이룹니다.
② 세마포는 공유 자원이 여러 개 있는 상황에서도 이용할 수 있습니다.
③ 세마포를 이용해 프로세스 실행 순서 제어를 위한 동기화도 이룰 수 있습니다.
④ 세마포를 이용하면 반드시 바쁜 대기를 해야 합니다.
답&풀이)
③ 세마포가 아니라 모니터를 이용해 프로세스 실행 순서 제어를 위한 동기화도 이룰 수 있습니다.
뮤텍스 락(Mutex lock;MUTual Exclusion lock)
- 임계구역을 잠구고 다른 프로세스가 접근할 수 없게 만들도록 진입하는 자물쇠 기능을 수행
- 전역 변수 1개, 함수 2개; 전역변수 lock으로 임계구역의 잠금 여부를 판단하고 acquire 함수로 잠금과 release 함수로 잠금해제를 처리
- 임계구역이 잠겼는지 아닌지 계속 확인해야 하는 바쁜 대기 busy waiting 발생
세마포(Semaphore)
- 여러 개의 공유 자원이 있을 때도 적용할 수 있는 동기화 도구
- 전역 변수 1개, 함수 2개; 사용 가능한 공유 자원 수를 뜻하는 전역 변수 S를 확인하고 임계 구역 들어갈지 말지를 알리는 wait 함수와 들어가도 된다는 신호를 주는 signal 함수로 처리가도 좋다’고 신호를 주는 signal 함수
- 사용 가능한 공유 자원이 없으면 있을 때까지 계속 확인해야 하는 바쁜 대기 busy waiting 발생
선택 미션
임계 구역
동시에 공유 자원에 접근했을 때 문제가 발생할 수 있는 코드 영역을 말함
임계 구역이 미리 들어간 프로세스가 있으면 다른 프로세스들은 밖에서 기다려야 함
먼저 작업한 프로세스가 끝나면 대기 중이었던 프로세스가 임계구역에 진입할 수 있음
레이스 컨디션(race conditon)
실행을 잘못 해서 여러 프로세스가 동시에 임계 구역의 코드를 실행해서 발생하는 문제, 자원의 일관성이 깨지게 됨
상호 배제(mutual exclusion)
동시에 공유할 수 없는 자원을 사용하는 걸 막기 위해 사용되는 알고리즘
이미 한 프로세스가 임계 구역에 있으면 다른 프로세스는 들어갈 수 없게 제어함
사례
- Account Problem : 입출금 처리가 동시에 여러 곳에서 요청 들어왔을 때, 예상하지 못한 결과가 초래할 수 있음
- 생산자(Producer)와 소비자(Consumer) 문제: 물건을 생성하기만 하는 생성자와 소비만 하는 소비자를 동시에 실행시켰을 때 발생하는 문제
> 예제코드(C++): https://github.com/kangtegong/self-learning-cs/tree/main/producer_consumer
상호 배제를 위한 동기화
공유 불가능 자원을 하나의 프로세스만 사용할 수 있도록 하는 것
운영체제의 원칙
・ 상호배제(mutual exclusion): 이미 프로세스가 진입한 임계구역에 다른 프로세스가 들어갈 수 없음
・ 진행(progress): 임계 구역에 이미 진입한 프로세스가 없다면 프로세스는 들어갈 수 있다
・ 유한 대기(bounded waitin): 임계 구역에 들어가고자 하는 프로세스는 언젠가 진입해야 한다. (무한하게 대기해선 안 된다.)
'CS' 카테고리의 다른 글
[네트워크] IT 엔지니어를 위한 네트워크 입문 - 3장. 네트워크 통신 (0) | 2024.03.10 |
---|---|
[혼공컴운] 6주차 (2/5~2/11) Chapter 14 ~ 15 (0) | 2024.02.11 |
[혼공컴운] 4주차 (1/22~1/28) Chapter 09 ~ 11 (0) | 2024.01.28 |
[혼공컴운] 3주차 (1/15~1/21) Chapter 06 ~ 08 (0) | 2024.01.21 |
[혼공컴운] 2주차 (1/8~1/14) Chapter 04 ~ 05 (0) | 2024.01.14 |