반응형 Producer3 Web Server 실습 +Dispatcher 사용 다중스레드 웹 서버에서 작업을 분배받는 과정을 producer-consumer 모델로 만 들어 본다. Dispatcher thread는 작업을 worker thread들에게 배분하며, 이때 한 개의 원형 큐가 버퍼로써 사용되게 설계해볼 것이다. Dispatcher란? CPU의 제어권을 STS(Short-Term Scheduling)에 의하여 선택된 Process에게 넘겨주는 모듈을 말한다. 인터럽트 또는 시스템 호출의 결과로 커널 모드에서 제어를 받는다. 디스패처는 모든 프로세스 전환 중에 호출되므로 가능한 한 빨라야한다. 요구사항 1. Dispatcher는 producer로써, 원형 큐(버퍼)에 작업 내용을 기록한다. 2. Worker는 consumer로써, 원형 큐(버퍼)로부터 작업 내용을 읽는다. .. 2020. 10. 2. [운영체제]Producer/Consumer 실습 - 2 상호배제 java에서의 동기화 문제를 해결해보자! 코드를 분석해보자 public class ProducerConsumer { static final int N = 100; static producer p = new producer(); static consumer c = new consumer(); static our_monitor mon = new our_monitor(); public static void main(String args[]) { p.start(); c.start(); } static class producer extends Thread { public void run() { int item; while (true) { item = produce_item(); mon.insert(item); }.. 2020. 10. 2. [운영체제]Producer/Consumer 실습 + 세마포어 변수 사용 생산자-소비자 문제란? 여러 개의 프로세스를 어떻게 동기화할 것인가에 관한 고전적인 문제이다. 한정 버퍼 문제(bounded-buffer problem)라고도 한다. 유한한 개수의 물건(데이터)을 임시로 보관하는 보관함(버퍼)에 여러 명의 생산자들과 소비자들이 접근한다. 생산자는 물건이 하나 만들어지면 그 공간에 저장한다. 이때 저장할 공간이 없는 문제가 발생할 수 있다. 소비자는 물건이 필요할 때 보관함에서 물건을 하나 가져온다. 이 때는 소비할 물건이 없는 문제가 발생할 수 있다. 세마포어란(Semaphore)? 세마포어(Semaphore)는 두 개의 원자적 함수로 조작되는 정수 변수로서, 멀티프로그래밍 환경에서 공유 자원에 대한 접근을 제한하는 방법으로 사용된다. 이는 철학자들의 만찬 문제의 고전적.. 2020. 10. 2. 이전 1 다음 반응형