기말고사
일시: 2019년 12월 16일 10:00-11:30
장소: 2공 105호
범위: 중간고사 포함 – 배운데까지
Just another Kyoung Shin Park’s Lectures Sites site
기말고사
일시: 2019년 12월 16일 10:00-11:30
장소: 2공 105호
범위: 중간고사 포함 – 배운데까지
lecture11
lecture11-FaultTolerance
lecture10
Reader-Writer Problem using Semaphore
Reader() { // multiple readers can read the data at the same time when there is no writer
P(rmutex); // lock for nreaders
nreaders++; // # of reader count increase
if (nreaders == 1) P(rwmutex); // if there is the first reader, lock writer mutex (reader들이 읽는 동안 writer는 접근 못하도록)
V(rmutex); // unlock for nreaders
<<< critical section: Read data >>> reader들은 writer가 사용하지 않을시 동시에 여러 개가 접근 가능
P(rmutex); // lock for nreaders
nreaders–; // # of reader count decrease
if (nreaders == 0) P(rwmutex); // if there is no reader, unlock writer mutex (reader가 더이상 없으면 writer가 접근 가능하도록)
V(rmutex); // unlock for nreaders
}
Writer() { // only one writer can write data at a time when there is no reader
P(rwmutex); // lock writer mutex
<<< critical section: Writer data >>>writer는 reader가 사용하지 않을시 한번에 하나씩 접근 가능
V(rwmutex); // unlock for writer mutex
}
BoundedBuffer Producer Consumer Problem (condition) (cpp11)
thread-cpp11-boundedbuffer
Java BoundedBuffer Producer Consumer Problem (Condition) (updated)
multithread-java-ProducerConsumerCondition
Java BoundedBuffer Producer Consumer Problem (Semaphore)
multithread-java-ProducerConsumerSemaphore
Java BoundedBuffer Producer Consumer Problem (Monitor)
multithread-java-ProducerConsumerMonitor
Producer-Consumer Problem using Semaphore
Producer() {
put(item) {
P(empty); // for wait, Get an empty count, block if unavailable
P(mutex); // lock critical section: shared buffer
<<< critical section: Put item into shared buffer >>>
V(mutex); // unlock critical section
V(full); // for signal, increase number of full count
}
}
Consumer() {
take () {
P(full); // for wait, Get a full count, block if unavailable
P(mutex);
<<< critical section: Take item from shared buffer >>>
V(mutex);
V(empty); // for signal, increase number of empty count
return item;
}
}
Producer-Consumer Problem using Monitor
Producer() {
synchronized put(item) {
while(count >= buffer.length) { wait(); } // wait if buffer is full
count++
<<< critical section: Put iteminto shared buffer >>>
notifyAll(); // signal
}
}
Consumer() {
synchronized take () {
while(count <=0) { wait(); } // wait if buffer is empty
count- –
<<< critical section: Take itemfrom shared buffer >>>
notifyAll(); // signal
return item;
}
}
HW4 (Due extended by 12/13 23:00) 프린트는 수업시간에 제출
1. thread-cpp11-boundedbuffer test report
-윈도우,리눅스에서 실행해서 테스트해본다.
-코드 분석 및 실행 결과 리포트
2. multithread-java-ProducerConsumerCondition vs multithread-java-ProducerConsumerSemaphore vs multithread-java-ProducerConsumerMonitor test report
-윈도우,리눅스에서 실행해서 테스트해본다.
-코드 분석 및 실행 결과 리포트
3. multithread-cpp-synchronized WOEID (c++)
-WOEIDLIST1.csv~WOEIDLIST3.csv 파일을 각각 다른 쓰레드에서 로딩해서 하나의 매니저에 데이타 추가(Insert)후 출력(Print) 및 검색(Query)
4. Insert & Query synchronized data via ThreadedTCP (c++)
-WOEIDLIST1.csv~WOEIDLIST3.csv 파일을 각각 다른 클라이언트에서 서버로 데이터를 하나씩 보내서 서버 매니저에 데이타 추가(Insert)후 검색(Query)
-c/c++ 버전 (Windows와 Linux)으로 작성
-서버는 Threaded TCP & synchronized data manager 사용
-4개의 클라이언트는 각각 다른 파일(WOEIDLIST1.csv~WOEIDLIST3.csv)을 로딩하여 하나씩 Woeid 데이터 입력 메시지(INSERT id,city,country,latitute,longitude)를 전송(send) 하여 서버에서 새로운 데이터 insert 후 회신받음(receive)
-또한 클라이언트는 Woeid 데이터 검색 메시지(QUERY Seoul)를 전송(send)하여 서버 매니저에서 검색한 결과 Woeid 데이터를 회신받음(receive)
-또한 클라이언트는 전체리스트출력 메시지(PRINT)를 전송(send)하여 서버 매니저에서 리스틀 전체 출력하고 회신 받음(receive)
5. 자바로 서버를 실행하고 c/c++ 버전의 여러개 클라이언트를 연결하여 Insert & Query & Print 테스트한다.
반대로 c/c++ 버전으로 서버를 실행하고 자바버전의 여러개 클라이언트를 연결하여 Insert & Query & Print 테스트한다.
Message: INSERT 2487956,San Francisco,United States,37.747398,-122.439217
Message: QUERY San Francisco
Message: PRINT
lecture9
lecture9-Concurrency
In distributed computing, leader election is the process of designating a single process as the organizer of some task distributed among several computers (nodes).
https://en.wikipedia.org/wiki/Leader_election
Bully algorithm by Garcia-Molina (1982)
https://en.wikipedia.org/wiki/Bully_algorithm
Token-Ring election algorithm by Chang & Robert (1979)
https://en.wikipedia.org/wiki/Chang_and_Roberts_algorithm