Sessions/DEMA Talks

운영체제와 잡념 - 이지윤

DEMA Studio 2018. 7. 11. 20:58

안녕하세요 이지윤 hands 입니다!

디마 방학들은 잘 보내셨나요? 시험기간에 다들 고생이 많았을 것 같은데요, 평소에 생각이 많지 않은 저는 시험기간에 유독 인생의 통찰을 몰아서 하는 편입니다. 공부하기 싫어서 생각이 많아지는 것 아니냐. 물론 맞습니다. 잡념이 많아지는 것이죠. 그래서 이번 관점공유는 제가 시험기간 때 해본 이런 저런 생각들을 소개해보는 시간을 가져보겠습니다. 전공 소개가 아닌 제 '잡념' 소개임을 유념하고 들어주세요.


우선 제가 수강하고 있는 과목들은 다음과 같습니다. 보기만 해도 지루함이 몰려오는데요, 특히나 이번 학기 과목들이 가지각색의 이유로 보람도 없고 재미도 없는 경우가 많아서 절 힘들게 했어요. 그 중, 운영체제라는 과목만이 제게 의미있는 몸짓으로 다가왔습니다.


깊이 있게 들어가진 않고요, 또 제 이해수준이 그정도가 되지도 않습니다. 후에 제 '잡념'과 이어지기 위해 맥락상 간단히만 이 과목을 소개하자면 컴퓨터 안의 한정된 자원을 어떻게 프로세스(프로그램)들에게 나눠줄 것인가! 를 다루는 과목입니다. 즉, 자원을 어떻게 관리할 것인가를 전체적으로 고찰하는 학문인데요, 벌써 느낌이 오지 않나요? 우리 사회와 많이 닮아 있다는 생각이 들지 않나요? 한정된 자원과 이를 가져가려는 프로세스들처럼, 이 사회 또한 밥은 정해져있고 먹을 입은 많죠. 그래서 앞으로의 설명은 여러분의 직관적 이해를 위해 "자원= 빅맥 (누구나 빅맥을 원하니까요) 프로세스= 사람들" 이라고 비유하겠습니다.


뒤에서 설명할 차례는 FCFS SJF HRRN 순이 되겠는데요, 갑자기 이게 무슨 용어냐 할 수 있어서 옆 괄호안에 순우리말로 설명을 적어두었어요. 빅맥을 사람들에게 나누어주는 3가지 방법을 다루되, 이들은 서로 연관관계가 있고 앞 단계의 불편함으로 인해 이를 개선하고 발전시킨 방법이 뒤에 나오는 방법이 된다는 정도를 인식하고 들으시면 편하실 것 같아요.

자, 그럼 이제 빅맥을 나눠주는 첫번째 방법을 알아볼까요? 사람들이 뭔가 받는다고 할 때 가장 먼저 떠오르는 모습이 뭐죠? 놀이공원을 가서든, 공연 티켓을 받아야해서든 사람들은 줄을 섭니다! 가장 공평하고 단순한 방법이기 때문이죠. 여기서의 '우선권'은 오로지 '선착순'이라는 기준이기 때문에 그 누구도 불만을 가질 수 없습니다. 물론 불편할 수는 있지만요. 다음은 실제로 알고리즘상 쓰이는 방법이라는 것을 보여드리기 위해 가져온 화면입니다.


공평하기에 불만을 가질 수 없지만 딱 한가지의 기준만이 존재하는 만큼 한계점이 있습니다. 바로, 내 앞에 있는 사람이 주문을 너무 오래할 때죠. 주문을 오래하는 그 한사람, 빅맥송씨때문에 뒤에 몇 사람이 불행해졌나요? 빅맥송씨만 뒤로 뺀다면 몇 사람이나 행복해지나요? 전체 행복도가 중요한 사항으로 추가된다면 이와 같은 고려를 해볼 수 있는 것이죠.


그래서 나오게 된 개념이 Shortest Job First가 되겠습니다. 짧은 애들을 먼저 해주면 뒤에 기다리는 사람들이 덜 기다리므로 '전체 행복도'가 증가한다는 거에요! 일상 속에서 보이는 SJF가 무엇이 있을까 생각하다 자동응답기가 좋은 예시가 될 것 같다는 생각을 했어요. 10초 이내의 짧은 통화만 해도 되는 사람들이 있고 상담원에게 몇 분동안 자세한 이야기를 하고 싶은 사람들이 있겠죠? 물론 두 그룹을 아예 나누어서 처리했다는 점에서  SJF와 조금다르지만 모두의 행복을 위해 고려한 대안이라는 것을 설명드리고 싶었습니다.


하지만 우리의 빅맥송씨는 어떻게 하나요? 주문량이 많다는 이유로 한 없이 양보만 해야하나요? 그렇다면 이 분의 불만은 한 없이 쌓여가겠죠. 이렇게 양보를 강요당한 사람들을 위한 기법이 Aging 기법입니다. '너는 많이 기다려왔으니 이제 우선권을 줄게' 하는 것입니다. 정말 합리적이지 않나요? 전체의 행복과 개인의 행복 모두를 책임지고 있으니 말이죠!

잠시 관련 동영상을 보시면 더 이해가 될 것 같네요. (https://www.youtube.com/watch?v=l3FVe6j7lH4)


수고하셨습니다. 이제 빅맥을 사람들에게 행복하게 나누어주는 방법 세가지를 모두 소개해드렸는데요, 앞에서 말씀드렸다시피 우선순위를 구체화시켜나가는 과정이라는 것을 알 수 있습니다. 개인적으로 저는 두가지 포인트가 인상깊었는데요, 하나는 처음부터 완벽한 계획이 있는 것이 아니라 각 대안마다 부족한 점을 조금씩 고쳐나가는 모습이었고, 또 하나는 전체의 행복과 개인의 행복 사이 균형을 맞추려는 점이었습니다. 사실 우리 사회도 많이 배워나가야할 점이 아닐까 싶네요.


운영체제라는 절대적 권력이 모두의 행복을 책임진다. 그리고 모든 사람(자원)은 그 원칙에 이의를 가지지 않고 따른다. 마치 유토피아같은 광경 아닌가요? 이렇게 완벽한 설정이 있는 환경에서조차 한가지 방안으로 모자라 이를 개선하고 수정한 여러가지 대안들이 추가적으로 나오고 있는데, 실제 사회에서는 오죽할까요? 게다가 제가 자원을 사람에 비유하긴 했지만 실제로는 사람들은 자원과 달리 저마다의 입장과 의견이 있습니다. 이렇게 복잡한 환경에서 모두를 만족시키는 기준을 찾는 것은 불가능에 가까운 것 같아요. 따라서 계속 바뀌고, 불안정하며, 타협해나가야하는 이 사회의 기준들은 어떻게보면 당연하다는 생각이 들었던 순간이었습니다.

운영체제를 공부하다 든 저의 잡념, 들어주셔서 감사합니다.