사람은 여러가지 일을 동시에 처리해야 할 때 어떤 기준으로 순서를 정해서 처리할까요? 혹은 이일은 할 것인지 저일을 할 것인지 택일을 해야 한다면 또 어떤 기준으로 선택을 할까요? 사람마다 기준이 다 있을테고 그 기준대로 살아가고 있을 겁니다.
컴퓨터의 운영체계 즉 Operating System(OS) 을 배울 때 비슷한 내용이 나옵니다. 하도 오래전이라 자세히 기억이 나질 않습니다만, OS 의 주요 기능인 멀티태스크 스케쥴링 알고리즘에도 비슷한 고민을 하고 있습니다.
가장 쉬운 것은 FIFO, 순서대로 처리하기 입니다. 제일 공정한 것 같습니다. 인간사회에서도 줄서기의 기본이지요. 하지만 빨리 처리해야 할 일, 시간이 안 걸리는 간단한 일 등 일의 특성에 상관없이 순서대로 처리하는 것은 좀 답답해 보이기도 합니다. 특히 효율적인 일처리를 우선으로 생각하는 사람들에게는 적합하지 않지요. ^^
그래서 여러가지 변형 스케쥴링이 고안되었습니다. 시간당 처리건수가 제일 많을려면, 시간이 적게 걸리는 일을 우선적으로 처리하는 것이지요. 혹은 중요한 일(?)을 우선적으로 처리하도록 할 수 있습니다. 이런 방법을 쓰면 효율적으로 여러가지 일들을 처리할 수 있습니다.
하지만 효율적인 방법으로 스케쥴링을 하면 문제가 발생을 합니다. 자칫 시간이 지나더라도 계속 처리를 하지 않는 일들이 있을 수 있다는 겁니다. 기아(Starvation)가 발생을 합니다. 이렇게 되면 당장은 컴퓨터가 빠르게 잘 돌아가는 듯 보이지만 어떤 순간에 starvation 인 채로 처리하지 못한 일 때문에 컴퓨터가 다운이 됩니다.
중요하지 않다는 이유로, 비용이 많이 든다는 이유로, 효율적이지 않다는 이유로 사회에서 소외되는 사람이 없도록 하는 것이 정치의 의무입니다. 자칫 기아가 발생을 하면 사회가 무너지게 됩니다. 당장은 효율적이지 않게 보이고 중요한 일을 먼저 처리하고 나서 해도 된다고 생각을 하다보면 무서운 결과를 초래하게 됩니다.
컴퓨터에서는 (기본적으로) 모든일에게 공평하게 똑같이 작은 시간을 들여서 일을 처리하도록 합니다. 그 작은 시간안에 끝나면 좋겠지만 주어진 시간안에 끝나지 않으면 순서의 맨 뒤로 줄을 세워 놓고 다음 차례에 이어서 일을 처리할수 있게 기다리도록 합니다. 컴퓨터니깐 잠깐 중지했다가 다시 시작해도 곧바로 계속 일을 진행할 수 있습니다.
사람일은 절대로 컴퓨터처럼 단순하지 않지요. 훨씬 더 세밀한 스케쥴링이 필요합니다. 그래도 starvation 이 발생하지 않도록 해야 한다는 목적은 같아야 합니다.
'일상' 카테고리의 다른 글
포레스트 검프 (0) | 2018.11.28 |
---|---|
좋은말 나쁜말 (0) | 2018.11.23 |
귀에 익은 CF BGM... 아오 궁금해~~~ ^^ (0) | 2018.05.15 |
교통사고 처리 (0) | 2018.02.18 |
새내기 노트북 고르기 (0) | 2018.02.12 |