시분할(time sharing)
나는 예전에 외부 server에 있는 자료를 취하여,
사무실 pc에 정기적으로 저장하던 작업을 했던 적이 있다.
그런데 어느 날 network 사정이 좋지 않아 자료를 놓친 경우가 생기곤 했다.
이때는 도리 없이 종이 자료를 보고 일일이 손으로 입력을 해야 한다.
직원 하나가 이 일을 하는데, 영 속도가 나지 않는다.
옆에서 지켜보자하니, 그의 작업 과정은 이러하다.
① 눈으로 종이 자료를 본다. → ② 눈을 거두어 자판으로 옮겨 온다. →
③ 자판과 모니터를 번갈아 보면서 keystroke 한 번.
형편이 이러하니 마냥 부지하세월이다.
나는 그를 불러서 ‘time sharing’을 주제로 간단히 설(說)을 펴서 일러주었다.
공간도 시간도 하나의 자원이다.
자원은 무한한 것이 아니다.
이런 한정된 자원을 효율적으로 관리하고 이용하는 방법,
특히 시간을 대상으로 하는 방법 중에 ‘time sharing’이란 게 있다.
우리말로 하면 ‘시분할’, ‘시간 분배’, ‘시간 쪼개기’ 쯤 된다.
가정해보자.
자, 여기 일을 처리하는 기기(processor)가 있다.
그리고 이를 이용하려는 10명의 사람이 있다.
각자는 공히 10단위 길이의 작업량에 해당하는 작업을 행해야 한다.
만약 작업자A가 프로세서(processor,처리기)를 먼저 점유(사용)하였다면,
이 자가 10단위 시간이 다 지나도록 후순위 작업자B는 대기하여야 한다.
작업자B 차례 이후 후순위 작업자C도,
역시 작업자B의 일이 다 끝날 때까지 대기하여야 한다.
이런 식이라면, 작업자 열 명의 작업이 모두 끝나려면 10*10=100 단위 시간이 필요하다.
더욱이 마지막 작업자J의 경우에는 90단위 시간을 허송세월하며 기다려야 한다.
게다가 프로세서가 고가의 장비라면 낭비가 크다.
작업자들이 10단위 시간 길이의 작업량을 갖고 있다 하더라도,
프로세서가 실제 처리하는 것은 10단위 모두가 아니다.
예컨대, 작업자가 모니터를 쳐다보고 생각하는 동안은 프로세서가 일할 필요가 없다.
통상 프로세서는 고속이고 인간 작업자는 저속이다.
그런즉, 인간이 짬짬 쉬는 동안 고속의 프로세서는,
그냥 아무 하는 일 없이 덩달아 놀아야 한다.
그러하다면, 작업자 열 명의 일을 동시에 처리할 수만 있다면,
프로세서의 낭비는 한결 줄어 들 것이다.
이것을 어찌 할 것인가?
시간을 쪼개는 것이다.
즉 프로세서가 작업자A의 일 중 일정분만을 처리하고,
이어 다음 시간 단위에 작업자B의 일 중 일정분 만을 처리하는 식으로 …….
이리 연속으로 일을 나누어 처리하는 것이다.
마지막 작업자J의 일을 할당하고 나서는,
다시 작업자A의 나머지 다음 처리단위를 프로세싱 하는 것이다.
이렇게 시간을 잘게 나누어 쪼개고 (slices of time),
고속으로 여러 사람의 일을 조각내어 차례로 돌아가면서 처리하게 되면,
작업자는 프로세서가 온전히 자기만을 상대로 일을 하는 양 느끼게 된다.
하지만 실제 프로세서는 열심히 열 명을 상대로 일을 하고 있는 것이다.
이는 프로세서가 고속이기 때문이기도 하지만,
한편으로는 작업자 각자는 10단위 일 중 짬짬이 생각하고, 예비 동작하는 등,
프로세서를 필요로 하지 않는 구성 시간을 갖고 있기 때문이기도 하다.
(※ 기타 참고 글 : ☞ 2008/06/05 - [소요유] - interrupt & poll)
시간 할당을 통해 프로세싱은 순차적으로 일어나고 있지만,
외부 이용자들은 모두 동시병발적으로 일이 처리되고 있는 것으로 느끼게 된다.
이것이 소위 multi-tasking for muti-users인 것이다.
그 근저에는 time sharing 기술이 깔려 있다.
time sharing 이 기술이 현실화될 수 있는 이유는 두 가지다.
역시 가장 중요한 것은 비약적인 프로세서의 고속화이지만,
인간이 작업을 수행할 때 상당분 처리기와 비접속된 채로,
자신만의 시간을 갖는다는 점일 것이다.
이것을 무엇이라고 불러야 할까?
작업자의 예비동작이라고 할까?
또는 흔히 쓰이는 말뜻과는 다르게,
이를 나는 冗長性(용장성,redundancy)이라고 잠정 부르기로 한다.
사무실 직원은 이제껏,
single user, single task 타입으로 일을 한 것이다.
자신을 프로세서라고 할 때,
그 역시 time sharing 기술을 원용하여 muti-tasking 타입으로 일을 할 수도 있는 게다.
예컨대,
눈으로 자료를 취한 후,
손으로 자판을 두드리며 입력을 하는 순간,
그와 동시에 다음 자료를 눈으로 취하는 것이다.
이제까지 그는 한 가지 일이 끝나야 비로소 다음 차례 일을 순차적으로 했다.
나는 눈과 손이 동시에 작업에 임하도록 가르친 것이다.
시간을 잘게 쪼개 재빠르게 머리를 회전시키면,
외견상 손과 눈이 동시에 일을 하게 된다.
“그대 머리는 눈과 손보다 한결 좋지 않은가 말이다.”
single processor가 고속화되자
mutil-tasking이 가능하게 되었지만,
이로도 만족하지 못하자 multi processor가 동원된다.
이즈음 개인 pc에서도 quad-processor가 장착되는 시대다.
저 직원은 당분간 머리가 아플 것이다.
요즘 프로세서(CPU)에는 저마다 머리 위에 fan을 달고 있다.
고가의 프로세서를 쥐어짜듯 부려먹으려니까,
열이 많이 나고 이를 식히려고 fan을 다는 것이다.
기계야 열을 식혀주면 고통을 못 느낄런가?
(※ 참고 글 : ☞ 2008/02/11 - [소요유/묵은 글] - 팔진도와 반도체)
하지만,
인간은 저리 주리 틀 듯 볶아대면,
어디까지 견디어 낼까나?
공학은 효율을 추구하는 면이 강하다.
그러하니 mutiltasking, mutiplexing, time-sharing, space-sharing 등등
갖은 조작질(manipulation), 교활한 짓을 다 고안한다.
테일러의 time study, motion study , 포드이즘이라는 것도 따지고 보자면,
자원의 효율적 활용이라는 명제,
내가 흔히 ‘자본명제’라고 부르는 그것을 위한 ‘쥐어짜기’에 다름 아니다.
나는 작금의 생명공학에 이르러 그 작렬하는 쥐어짜기의 극한을 목도한다.
기계를 넘어 생명까지도 쥐어짜고자 한다.
인간이란 생명을 위해 타자의 생명, 그 근원까지 스스럼없이 해쳐버리려 하고 있다.
그런데 실상은 그것이 인간의 생명을 위한 것이 아니라,
극히 특정된 사람의 ‘자본’에 복속된 것이 아닐까 나는 이리 의심을 하곤 한다.
그것은 궁극엔,
저들 그 잘난 인간들이 우쭐거리면 뱉어내는 '그 잘난 인간생명'까지 해치고 말 것이라는
우울한 전망을 나는 그치지 못하겠다.
이 순간,
도리 없이 예전에 내가 쓴 글,
그곳에 이른다.
장자 천지편 노인과 자공의 문답에서
기심(機心)을 경계하는 우화가 나옵니다.
노인이 우물에서 물 길어 밭에 내고 있었는데,
자공은 용두레란 물 긷는 기계를 권하며,
노인의 우둔함을 딱하게 여깁니다.
노력은 적게 들고 효과는 큰(用力甚寡 而見功多) 기계.
기계가 있으니 그 기능(機事)이 있고, 기능이 있은즉
이를 동원하려는 기심(機心)이 생깁니다.
이 기심(機心)이 질주할 때,
20보를 취하기 위해 무수한 생명을 죽이게 됩니다.
그래 그 우화에서 노인은 자공에게 이리 말합니다.
“내가 (기계를) 알지 못해서가 아니라 부끄러이 여겨서 기계를 사용하지 않을 뿐이네.”
(※ 참고 글 : ☞ 2008/02/13 - [소요유/묵은 글] - feedback(피드백))