지놈이 운영체제라면.

윈도우가 오픈 소스라고 가정해 봅시다.  그래서 개발과정중 매일매일 나이틀리 빌드가 있고 이걸 아무나 받아서 쓸 수 있슴다. 즉, 유저들이 쓰고 있는 빌드는 다운로드받은 날짜에 따라서 각각 조금씩 다른 버전이 되는 셈이죠. 물론 빌드를 받아서 쓰는 엔드유저는 소스코드를 볼 수는 없습니다. 

이런 운영체제를 지금의 윈도우처럼 벼라별 환경에서 다 쓰고 있습니다. 어떤 사람은 온갖 스파이웨어, 바이러스가 우글거리는 환경에서 아무런 안티바이러스도 없이 쓰고 있고, 다른 사람은 생판 듣도보도 못한 업체의 하드웨어의 드라이버를 올려 놓고 쓰고 있지요. 게다가 가끔은 운영체제의 파일이 덮어쓰여지기도 하고, 지워지기도 합니다. (왜 이런 일이 일어나는지는 묻지 말자 ㅋ) 컴터를 영하 30도의 냉동창고에서 쓰기도 하고, 60도가 넘는 사막 한 군데에서 쓰기도 합니다. 물론 사람에 따라서 제각각 다른 응용 소프트웨어를 쓰는 것은 당연하지요. 

이런 환경에서 특정한 문제가 있는 컴퓨터들이 있습니다. 가령 웹 브라우징을 어느정도 하다가 뻗어버리는 넘, 특정 하드웨어를 쓸때는 블루스크린이 나오는 넘, 갑자기 수행속도가 엄청나게 느려지는 넘, 특정 소프트웨어를 쓸때 잘 죽는 넘…

워낙 문제가 빈번하니 이런 문제를 해결하고 해결책이 없나 알아보기 위해서 여러가지 시도를 했는데, 이제는 윈도우에 딸린 모든 실행파일 및 데이터파일을 덤프해서 바이트 코드를 뽑고, 이를 디스어셈블리해서 각각의 차이가 있는지를 봅니다. 웹 브라우징을 하다가 뻗어버리는 넘과 그렇지 않은 넘의 각각의 실행파일의 바이너리를 비교해서 틀린 바이트가 있는지를 찾아봅니다. 대개는 비슷하지만 몇 kbyte 에 한 바이트 정도씩 차이나는 것이 있네요. 20만대를 조사해 봐서 통계적으로 유의미한 바이트를 골라냅니다. 그렇게 했더니 ‘윈도우 익스플로러의 수행시에 프리징되는데 관여되는 바이트’ 들이 나오네요. Single Byte Polymorphism (SBP) 라고 부르도록 하죠. 아마 다음부터는 전체 실행파일의 바이너리를 보지 않고 이 바이트만 보면 이 컴퓨터가 윈도우 익스플로러를 얼마나 안정적으로 실행하는지에 대해서는 예측할 수 있을 거예요. 아참. 무슨 바이트들이 $FF에서 $EF로 바뀌었을때는 윈도우가 부팅될 때 윈도우 로고가 나오지 않습니다. 이 SBP를 ‘윈도우 로고에 관여하는 바이트’ 라고 부르도록 하지요. 저희가 개발한 $17orYou 라는 소프트웨어를 이용하면 이렇게 찾아진 자신 윈도우의 SBP 들을 간단히 찾아볼 수 있습니다.  

어떤 사람들은 단순히 SBP만 봐서는 컴퓨터의 불안정성을 해결할 수 없다고 주장해요. 대신 시스템 파일이 삭제되거나 중간이 잘라지는 현상이 시스템별로 있으며, 어떤 파일이 존재하느냐 없느냐에 따라서 컴퓨터의 이상증상이 결정된다고 생각합니다. 가끔은 동일한 파일이 여러개 존재하기도 하는데, 이것에 따라서 운영체제의 안정성이 결정된다고도 주장하죠. 
…그건 그렇다 치고 툭 하면 죽는 내 컴퓨터를 어떻게 해결할 수 있냐구요? 지금 하는 연구가 내 컴퓨터의 안정성을 개선하는데 얼마나 중요하냐구요? 
글쎄요. 그런 것은 지금으로써는 무리고요. 일단은 여러분의 컴퓨터 안에 있는 윈도우가 다른 사람들의 윈도우와 무엇이 틀린지를 아는 것이 중요합니다. 무슨 소프트웨어나 하드웨어, 드라이버를 쓰는지도 중요하다구요? 아, 그게 중요한 것인지는 잘 아는데..워낙 응용소프트웨어나 하드웨어, 드라이버는 천차만별이지 않습니까. 솔직히 그걸 다 고려하기는 지금 기술로는 역부족이죠. 하하. 아시다시피 컴퓨터 한 일년 쓰면 맛 가지 않습니까? 깨끗하게 포맷하시고 최신 나이틀리 빌드 윈도우 받아서 새로 까세요. 프레쉬 스타트. 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s