OS12 [운영체제] 동기화 예제 3) 식사하는 철학자 문제 1. 식사하는 철학자 문제 Dining Philosopher Problem1) 식사하는 철학자 문제 5명의 철학자와 5개의 젓가락이 있다.철학자는 생각 → 식사 → 생각 → 식사 과정을 반복한다.철학자는 자신의 왼쪽 젓가락을 집고, 오른쪽 젓가락을 집어야만 식사가 가능하다. (2개 집어야 식사 가능)배가 부르면 젓가락을 내려놓는다. 2) 예제 코드젓가락 -> 세마포 (# of permit = 1. 1 명만 젓가락 들 수 있음)젓가락과 세마포에 일련번호: 0 ~ 4순서 : 왼쪽 젓가락 → 오른쪽 젓가락 /* Dining Philosopher Problem */import java.util.concurrent.Semaphore;class Philosopher extends Thread { int i.. 2024. 12. 11. [운영체제] 동기화 예제 2) 공유 데이터베이스 접근 문제 1. 공유 데이터베이스 접근 문제 Readers-Writers Problem1) 공유 데이터베이스 접근 문제Reader : 데이터 읽기만. 수정 안함Writer : 데이터 읽고, 수정DB를 임계구역으로 다수 사용자 상호 배타적으로 접근하면 비효율적공유 데이터의 읽기와 쓰기는 임계 임계 구역에서 이루어져야한다.Writer는 상호 배타 보장해야한다.Reader는 데이터 변경을 하지 않으므로 여러 Reader 동시에 접근해도된다(상호 배타 적용하지 않는다)Reader, Writer가 동시에 접근해서 생기는 문제를 크게 아래와 같은 경우들이 있다. 2) 변종다수 Reader,Writer가 동시에 접근해서 생긴는 문제들의 케이스는 아래와 같다.First R/W problem (readers-preference).. 2024. 12. 11. [운영체제] 동기화 예제 1) 생산자-소비자 문제 1. 생산자-소비자 문제 Bounded Buffer Problem1) 생산자-소비자 문제생산자 프로세스가 데이터를 생산하면 소비자 프로세스는 그것을 소비한다.-> 버퍼는 생산자와 소비자가 모두 접근하는 임계 구역인 셈이다.-> 세마포어를 사용해서 상호 배제로 문제를 해결할 수 있다.예) 컴파일러(생산) > 어셈블러(소비), 파일 서버(생산) > 클라이언트(소비), 웹 서버(생산) > 웹 클라이언트(서버) (1) Bounded Buffer생산된 데이터는 버퍼에 저장한다.(속도 차이 등 때문에)현실 시스템에서 버퍼 크기는 유한하다. (bounded : 한계가 있는)생산자는 버퍼가 가득 차면 더 넣을 수 없다.소비자는 버퍼가 비면 뺄 수 없다. 2) 예제 코드Producer는 버퍼에 10,000개 아이템을 .. 2024. 12. 11. [운영체제] 은행 계좌 문제 (세마포어) 세마포어를 사용해 임계구역 문제를 상호 배타 방식으로 해결하고, 프로세스 실행 순서를 제어한다. 1. Critical Section 임계 구역 문제 1) 임계 구역 문제란?임계 구역 : 멀티 프로세스 환경에서 둘 이상의 프로세스가 동시에 접근해서는 안되는 공유 자원의 코드 영역으로 중요한 부분이다. 2) 예제아래는 부모님(Parent)은 입금, 자녀(Child)는 출금하는 예제이다.Thread를 상속받아 Parent와 Child 클래스를 만들어 BankAccount에 입금입, 출금을 100번씩 실행한다.(입금 deposit, 출금 withdraw는 독립적으로 일어난다.)입, 출금을 같은 횟수를 실행했으니 결과는 0이 나와야한다. public class Main { public static void .. 2024. 12. 11. 이전 1 2 3 다음 728x90 반응형