과학

학관 식당 줄서기로 알아보는 효율성 : 병목(Bottle Neck)과 고착(Dead Lock)

학관 식당 줄서기로 알아보는 효율성 : 병목(Bottle Neck)과 고착(Dead Lock)

여탕 관련 개드립에서 학관에서 밥을 수령하고 앉아서 밥 먹으면 되지 왜 자리 맡아두고 밥을 먹는지 모르겠다. 라는 게이랑 효율성에 대하여 이야기 하던중
10여년전 운영체제(OS) 관련 수업중 교수가 병목과 고착에 대한 부분을 저 학관에서 자리를 맡아두고 밥을 먹는게 효율적이다 라는 부분을 빗대어 설명한게 생각나서 써 봄.
OS의 자원(Resource : CPU, RAM, 하드디스크 등등)을 효율적으로 관리하는 법이기도 하고 경제학에서 사용되는 방법이기도 해.

아래 천천히 Step-by-Step으로 설명할께


사전에 알아둘 정보가 있어.

그림과 같이 식당에서 줄서서 밥을 받고 자리가 날때까지 기다린 다음 밥을 먹는 것이야.
단계별로 요약해서 [대기] - [배식트레이] - [식사대기] - [식사중] - [식사끝]으로 단계를 간략화 할꺼야.
CONDITION_0.jpg



각 단계로 넘어가는 이동시간은 없다고 보고 Step by Step으로 보자.


[병목(Bottel Neck)]
Output을 넘는 Input으로 인해 한 지점에 대기수요가 몰리는 현상. (ex 고속도로 정체, 러시아워)

* 조건 #1 - 이상적(Ideal)
일단 가장 이상적(Ideal)인 상태는 밥을 받자 마자 앉아서 밥 먹고 나가는 것이야.
배식이 한 단계에서 10명이 배식이 가능하고 식사 할 수 있는 자리가 10명이면 먹고 바로 나가는 방법이야.
우리가 알고 있는 학관에서 밥 먹고 나오는 것이지, 효율성이 최대화 되는 시점이야. 최대 10명이 받고 바로 밥을 먹을 수 있는 것이야.
CONDITION_1.jpg



자, 병목을 한번 일으켜보자. 
식사 최대인원을 줄이면 한눈에 안 보이니 배식하는 최대 인원을 늘려보자.
(사실 밥 먹는 시간이 20분이면 밥 타는데 5분도 안 걸리니 단위 시간당으로 보면 이게 맞긴하다)

* 조건 #2 - 낮은 수준 병목
배식하는 최대 인원이 20명이 된다고 보자. 
CONDITION_2.jpg



최초 배식을 20명이 탔어. 하지만 식사 가능한 사람이 10명이니 나머지 10명은 한템포를 기다려야해. 다음 단계로 넘어가면 기존에 기다린 10명은 식사를 하겠지만 방금 배식을 받은 사람은 또 기다려야 해.

위와 같이 전개가 되면 맨 마지막 사람은 총 2스텝을 기다려야 해.
위와 같을 경우 총 4스텝(1 + 1 + 2)의 병목 현상을 일으키게 되지.
여기서 스텝이라는 것은 밥을 받고 자리가 없어서 서서 기다리는 것이라고 보면 된다. 팔 아프고 지겹고 밥은 식어가는 그러한 비용(Cost)로 보면 돼.


* 조건 #3 - 높은 수준 병목
배식하는 최대 인원이 30명이 된다고 보자.
CONDITION_3.jpg



이번에는 대기가 10명, 배식을 30명을 받게 되지. 똑같은 방법으로 전개하면 총 5스텝( 1 + 2 + 2)의 병목이 발생해.


즉, 한 스텝내에 최대 배식이 가능한 수가 늘어날때 대기하는 사람들 고생은 늘어난다고 할 수 있어. 그 비용(Cost)는 고스란히 사용자들에게 전가가 되는 거야.


[교착(Dead Lock)]
서로 상호간의 작업이 끝나기를 바라는 상태로 두개의 작업이 서로 끝나지 못하고 있는 상태를 말한다. (ex - 전진만 하는 두 염소의 외나무 다리 건너기)
외나무 염소.jpg



앞서 말한 학관과 엄밀히 말하면 교착 분류에 들지는 않지만 교착의 연쇄화를 설명하기 위해서 무리하게 적용 해 볼께


교착을 강하게 일으켜 보자.
배식이 40명이 가능한 상황에서 식판이 40개 밖에 없다면?
그리고 사람들이 몰려서 40명이 아닌 80명이 기다린다면?
CONDITION_4.png



스텝3이 되면 위와 같은 상태가 된다.
10명이 밥을 먹을 동안 30명이 밥을 타고 기다리고 있어.
식판이 40개 밖에 없으니 배식을 못 해서 40명은 밥도 못 받고 기다려야 해.
CONDITION_4_1.png



다음 단계가 되어 10명이 밥을 먹었으니 식판이 10개가 새로 생겼어.
대기중인 사람 10명은 배식이 가능해.
뭔가 이상하지? 

맞아. 배식이 총 40명이 가능한데 처리량이 적은 식사하는 사람들 때문에 배식 자체가 느려지게 되는거야. 이러한 프로세스간에 한쪽에 병목이 심화되서 발생하면 그 여파가 앞선 배식까지 영향을 미치게 되는 것이야.

이러한 부분을 교착화되고 있다고 해. (엄연히 말하면 교착화 보다는 병목의 심화에 가깝지만 그려려니 했으면 해)




여기서 가장 문제는 밥을 받고 대기하는 저 단계가 문제인 부분이야. 
식판도 쓰고 각 학생들은 밥을 들고 서 있어야 하니 고역인 부분이지.

자, 이제 병목과 교착을 해결할 방법을 찾아보자.
첫번째 드는 자연스러운 생각이 있지?
바로 번호표를 받고 기다리다가 자기 차례가 되면 밥을 타서 먹는 것이야.
(일반적인 맛집에서 하는 줄서서 자리잡고 밥먹기이지)
줄서기.jpg



이 경우 맨처음에 줄서서 대기하는 사람이 상대적으로 증가하게 돼. 한번에 식사 할 수 있는 사람이 10명이니까. 하지만, 밥을 식판에 타서 들고 있는 사람이 0명이라 밥만 타면 바로 밥을 먹을 수가 있어.

위경우 번호표를 주기 위해서는 10명의 좌석 관리가 핵심이 되어. 


두번째로는 자리를 먼저 잡고 밥을 주문하는 것이야.
보통 카페나 백화점 푸드코트 가면 자주 듣는 이야기 있지?

"자리 먼저 맡으셨나요?"
푸드코트.jpg



맞아, 일행이 있어서 밥 먹는 수요가 1~XX명이 되면 식당측에서 관리가 안 되니 대기자들 보고 알아서 자리를 잡고 오라는 것이야.

이 경우 자리를 잡고 밥을 타러 오는 2스텝의 손실이 불가피 해.
자리를 맡고 다시 주문하는 사이에 10명이 밥을 먹을 수 있으니까.
보통 앞선 밥을 수령후 알아서 자리를 잡고 먹는게 낫다는 사람들이 이해를 못 하는 부분이기도 해.

하지만, 여기에 추가된 조건을 보면 일행(1~XX명)이 있을 경우라는 전제조건이 추가 되었지. 
앞선, 조건에서는 이러한 부분을 고려 안 했지만 현실에 맞게 하기 위해 추가를 하였어.
다소 비효율이 보이지만 더 복잡한 조건을 만족하기 위해서 사용하는 방법이야.

다양한 수요(식판수, 좌석수)를 컨트롤 하기 힘드니 사용자들에게 그만큼의 공간을 먼저 확보한 사람에게 배식을 한다는 내용이야.


준비 시간(배식)은 짧은데 실행 시간(식사)이 길고 제한된 자원(식판)이 있는 경우 병목 현상을 방지하기 위한 효율적인 방법이야.

긴 글 쉽게 쓰려고 했는데 역시나 재미가 없네.
암튼, 사회생활에 어떻게 효율적으로 되는 것인지 시뮬레이션하고 그 결론을 이야기 해 봤어.

일상의 다양한 문화현상을 이해하길 바래.


요약 : 
1. INPUT(배식)이 빠르고 OUTPUT(식사)가 느릴 경우, 사람이 몰리면 병목이 발생한다.
2. 병목현상중 자원(식판)이 제한 될 경우 자원을 소유한 사람(밥 타고 기다리는 사람)으로 인해 전체적인 효율성이 저하된다.
3. 병목과 교착을 없애기 위해 다양한 방법(대기표, 자리잡고 밥타기)이 사용된다.

결론 :
대기표, 자리잡고 밥타기는 병목과 교착을 해결하는 한 방법이다.


P.S : 개드립간, 여탕 논란에 대하여 때 불리는데 5분, 씻는데 1시간(60분)일 경우 어떻게 하면 병목과 교착을 없애는 것인지 적용 해 봤으면 해.

14개의 댓글

2016.05.19
좋은글은 ㅊㅊ
0
재밌는 글 ㅊㅊ 근데 목욕탕에는 적용이 안될 것 같다
목욕탕에서는 푸드코트처럼 내부인원현황에 맞춰서 유입인원을 조절해줄 사람이 있기 힘든데다가
자리 순서를 결정하는 번호표..? 몸 불리고 있는 사람한테 하나씩 주면 되는건가.. 세신사 아줌마들은 자체적으로 번호표 만들어서 쓰고있다고는 하는데 자리에 어떻게 적용시켜야할지는..
0
2016.05.19
응 넌 꺼져
0
JMS
2016.05.19
교착 상태는 만저 자리를 맡아놓는 사람과 그냥 밥을 받고 자리를 찾으려는 사람들이 섞여있는 경우로 설명할 수 있지 않을까?
0
2016.05.19
@JMS
그게 더 명확할거 같다.
무리해서 자원(식판)부족을 했더니 좀 설명이 부족했는데
0
2016.05.19
교착상태 설명이 좀 잘못된거 같은데
0
2016.05.19
교착상태가 되기 위해서 가장 필요한 점은 "상대에 대한 요구가 순환되어야 한다" 라는 점이지.
내가 요구하는점이 있으면, 누군가도 나한테 요구하는게 있어야 한다는건데, 사진에서도 나타나지만 위의 상황은 절대로 요구조건이 순환되지 않지.
0
2016.05.19
@어랏
ㅇㅇ 맞음.
0
2016.05.19
목욕탕은 어떻게 보면 mutex 문제로 넘어가야함

식당처럼 지속적인 점유가 아니고 잠깐 점유해서 사용하는 공유자원을 혼자서 계속 점유해서 사용하려는 문제로 인식해야할거 같은데
0
2016.05.19
와 개소리를 이렇게 장황하게 짖어대네
0
2016.05.20
걍 상식적으로 생각해서 자리 잡고 밥 타는 놈 있으면 그놈이 밥 타가지고 거기에 앉아서 밥 다 먹을때 까지 그 자리가 아무도 쓸수 없는 상황이 되는데 그게 왜 개선책이여.
갸가 자리 잡을 동안 밥 받고 이제 자리 잡고 먹기 시작할 놈들이 자리가 없어 뽈뽈거리며 돌아다닐텐데 그 시간 때문에 오히려 악화될거구만
0
2016.05.20
운영체제냐
0
2016.05.21
푸드코너 예시도 이해가 안가는데...
0
2016.05.22
캬 시뮬레이션 수업 들을때 이거 해봤는데
프러그램 뭐더라
마소꺼였던거 같은디
0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
563 [과학] 경계선 지능이 700만 있다는 기사들에 대해 34 LinkedList 10 12 일 전
562 [과학] 번역)새들은 왜 알을 많이 낳는가? - 후투티의 형제살해 습성... 7 리보솜 3 2024.03.23
561 [과학] 학계와 AI, 그리고 Bitter Lesson (쓰라린 교훈) 26 elomn 35 2024.02.17
560 [과학] 지구의 속삭임, 골든 레코드의 우주 9 Archaea 10 2024.02.16
559 [과학] 잔혹한 과학실험 이야기 <1> 절망의 구덩이 19 개드립하면안됨 37 2024.02.15
558 [과학] 스트레스를 받으면 술이 땡기는 이유 12 동식 16 2024.02.10
557 [과학] 지능은 모계유전이 아니다. 40 울릉특별자치도 35 2024.01.26
556 [과학] 진화를 생각할 때 고려할 것들 23 날씨가나쁘잖아 12 2024.01.17
555 [과학] 학문적(과학적) 접근과 유사 진화심리"학" 26 날씨가나쁘잖아 19 2024.01.15
554 [과학] 호모 사피엔스의 야릇한 은폐된 배란에 대한 남녀 학자의 다... 14 개드립하면안됨 15 2023.12.29
553 [과학] 김영하의 작별인사를 읽고 느낀 점 (스포있음) 21 장문주의 2 2023.11.28
552 [과학] 제4회 포스텍 SF 어워드 공모전 ( SF 단편소설 / SF 미니픽션 ) 2 따스땅 1 2023.11.25
551 [과학] 펌) CRISPR 유전자 가위 치료제 "최초" 승인 12 리보솜 7 2023.11.25
550 [과학] 러시아는 기술산업을 어떻게 파괴시켰는가(펌) 9 세기노비는역사비... 15 2023.11.18
549 [과학] 고양이에 의한 섬생태계 교란과 생물 종의 절멸 (펌) 2 힘들힘들고 6 2023.11.16
548 [과학] 번역) 알츠하이머병 유전자는 어떻게 살아남았는가? 12 리보솜 10 2023.11.15
547 [과학] 『우영우』의 자폐 스펙트럼 장애 개념이 왜곡인 이유 (펌) 47 힘들힘들고 10 2023.11.12
546 [과학] 흑수저 문과충 출신 구글 취직하는 파이썬 특강 -1 14 지방흡입기 11 2023.09.27
545 [과학] 국가별 당뇨 유병율 이거 뭐가 바뀐건지 아는사람? 8 LAMBDA 1 2023.09.27
544 [과학] 물샤워 ㅇㅈㄹ 하는 놈들 봐라 171 철동이 48 2023.09.23