글을 시작하기 전에 몇가지 핵심적인 단어를 포함하는, 간단한 문장의 결론부터 밝히고 시작을 하겠다.
* 오래된 컴퓨터에서 하드디스크에 이상이 발생하기 시작했다.
- 하드디스크의 속도가 현저히 느려지기 시작한 것.
- 이대로 두면 하드디스크의 데이터를 모두 잃게 되리라 생각했고
- 새 하드디스크를 구입해서 새 OS를 설치했다. (Windows 7)
* 그리고 사용한지 2달 정도 되었다.
* 사용 중에 네트워크가 끊기는 현상이 가끔 발생하더니 빈도가 차츰 많아졌다.
* 이벤트 뷰어를 보니 네트워크 칩의 오류가 기록되어 이었다.
* 뿐만 아니라 디스크 콘트롤러에서도 오류가 발생하는 것을 확인했다.
* 디스크 포트를 변경하는 것으로 문제가 상당히 완화 되었다.
* 하지만 여전히 발생한다.
* 혹시나 Windows 7의 문제일까 의심했다.
- 그리고 새 하드디스크의 성능을 시험하고, 맛이 가려던 하드디스크를 함께 시험했다.
- 문제는 SATA 포트에 있었고 하드디스크에는 문제가 없었다.
* 예전의 하드디스크, 예전의 OS (Windows XP), 단지 SATA 포트만 바꾸어 옛날로 돌아갔다.
* 예전의 상황에서도 네트워크 끊어짐의 현상이 발생했다.
- 주로 비디오와 네트워크를 동시에 사용하는 경우에 주로 발생했다.
- 보드에 내장된 네트워크를 disable 시키고, 오래된 PCI 네트워크 카드를 설치했다.
* 또 다시 하드디스크의 속도가 느려졌다.
- 보드에는 4개의 SATA 포트가 있다. 4개중 2개가 이상해졌고, 그 2개가 모두 Master에 해당하는 포트였다.
- 될까 싶었지만 Slave 포트에 연결했는데, 다행히 잘 부팅했다.
* 오디오에서 이상한 현상이 나타났다.
- 처음 오디오가 켜질 때에 스피커에서 딱~ 하는 큰 소리가 났다.
- 마치 갑자기 쇼트된 것처럼.
* 얼마간 잘 쓰다가 다시 하드디스크의 속도가 느려졌다.
- 마지막 남은 SATA 포트에 연결했다.
* 갑자기 블루스크린 발생
- 며칠간의 간격으로 발생한 듯 하며, 간격이 점차 줄어든다는 느낌.
- 주로 크롬브라우저에서 동영상(유튜브 혹은 기타 동영상)을 보는 중에 많이 발생했으며,
- 마지막은 크롬 브라우저로 일반 사이트를 접속해서 사용하던 중, 그 사이트의 다른 페이지로 링크를 타고 넘어가는 순간... 한동안 응답이 없고, 브라우저 하단에는 "캐시를 기다리는 중"이라는 메시지가 보이다가 블루스크린이 떴다.
- 이 현상이 발생할 때면, 하드디스크의 작동 LED는 들어와 있으나 메모리 덤프가 끝나지 않아 블루스크린 상태를 계속 유지하고 있으므로 강제로 파워를 꺼야만 했고,
- 다시 새로 시작한 후에는 항상 Event Log에 디스크 콘트롤러 오류, 디스크 읽는 중 패리티 오류, 디스크 에러 등의 이벤트가 발생했었다고 나온다.
이상의 문제 현상들이 나타났을 때, 문제의 원인들을 찾아 보려고 노력했는데 아직까지도 정확한 원인은 찾을 수가 없었다.
1. 하드디스크의 노후
- 이 부분은 원인이 아니었음이 밝혀졌다.
- 새 디스크로 바꾼 후에도 문제가 타나났고, 노후된 하드 디스크로도 포트만 바꾸어서 정상이 되었다.
2. 파워의 부족
- 위의 과정에서 중간 즈음에 이 문제를 의심해 보았다.
- 본격적으로 의심한건 마지막 블루스크린이 뜨는 때 부터였다.
- 블루 스크린이 발생하고 바로 다음날 파워를 뜯어서 분해해 보았지만 아무 문제도 찾지 못했다.
- 사실 파워서플라이의 파워 부족을 어떻게 찾아내는지 그 방법도 모호했다.
- 현대 내가 가지고 있는 멀티미터로는 12V/5V의 전원 핀에서 정상적인 전압이 나오는지 확인해 보는 것 뿐인데, 현재의 파워는 물론이고, 예전에 쓰다가 고장났다고 생각했던 파워도 전압 자체는 정상으로 나오고 있음을 확인했다.
- 파워는 전압은 물론이고, 충분한 전류도 공급이 되어야 하지만, 전류를 측정하는 건 만만치 않은 작업이다.
3. 보드의 문제
- 네트워크가 끊어지는 문제를 처음 본 다음부터 이 문제를 의심했다.
- 육안으로 확인해 본 결과로는 부풀어오른 콘덴서 한개가 보였는데, 인터넷으로 구한 이 메인보드의 회로도를 통해서 확인해 보니 이 콘덴서는 전혀 상관이 없는 IEEE 1394에만 사용되는 콘덴서였다.
- SATA 포트가 돌아가면서 문제를 일으켰으니 이 부분을 확인해 보았지만, 포트와 포트 주변의 회로는 매우 간단했으며 문제를 찾을 수 없었다.
- SATA 포트가 연결되는 곳은 사우스 브릿지인 ICH7 칩인데, 이 칩의 주변에서도 특별한 문제점을 찾을 수 없었다.
- 네트워크의 문제점이 발생하는 경우가 대부분 비디오와 함께 사용하는 경우였던 점을 생각하면 노스브릿지도 생각해 볼 수 있다. 하지만 이 칩의 주변에도 문제는 없어 보였다.
- 결국 문제는 있지만 원인은 발견할 수 없다는 것.
- 하지만 여기에서 한가지 의심스러운 정황은 IEEE 1394와 관련된 콘덴서가 부풀은 점.
- 사용하지도 않았던 저 콘덴서는 왜 부풀은 것일까? 내가 구한 회로도가 잘못된 것이고, 실제로는 영향이 있는게 아닐까? 아니면 저 콘덴서를 부풀게 만든 어떤 원인이 다른 부분에까지 영향을 끼쳐서 문제가 된 건 아닐까?
지금으로썬 할 수 있는 방법이,
1. IEEE 1394에서 사용된다고 생각했던 콘덴서의 교체.
2. Video Card의 교체
3. 파워서플라이 교체
의 정도가 아닐까 싶다.
아니면... 이제는 놔줘야 하는걸까.
CPU : Intel Pentium D 920 Presler
Memory : DDR2 6400 1G x 4 (Dual Channel)
Main B'd : Gigabyte (GA-8i945PMF)
Video Card : NVidia GeForce 9500GT 512M
HDD : Hitach 1TB (HDS721010CLA332)
2012년 7월 19일 목요일
진화(進化)의 계단
이전에도 간혹 어렴풋이 들던 생각이,
최근에 다시, 좀 더 또렷하게 들고 있습니다.
프로그래밍 언어들에 대한 구분이 저수준(Low-Level)과 고수준(High-Level)이 되는 경우가 있는데, 이런 구분은 그 언어의 역할 및 용도를 보다 명확히 해 줍니다.
저수준의 언어는 근본적으로 프로그램이 작동하게 될 컴퓨터의 구조와 밀접하게 연관이 되며 군더더기 없고 간결하며 빠르게 작동하는 장점을 가집니다.
반면에 고수준의 언어는 컴퓨터의 구조에 대한 고민을 많이 줄여주고 인간의 복잡한 논리를 구현하는데 더 적합한 장점을 지니게 됩니다.
리버스 엔지니어링을 하다보면, 고수준의 언어로 작성된, 복잡한 알고리즘의 프로그램은 그 자체가 안티-리버싱의 역할도 하지 않나 생각될 정도입니다.
이런 프로그래밍 언어의 고수준화는 하나의 "진화의 계단" 역할을 합니다.
복잡하고 까다로운 논리를 저수준의 언어로 작성하는 것은 무척이나 어려웠을 것입니다.
기본적으로 저수준의 언어를 사용하는 프로그래머의 머리에는 컴퓨터의 구조, 레지스터, 스택, 메모리 사용 등에 대한 지식과 고려가 가득 차 있었을 것이므로 새로운 생각을 할 여유가 그 만큼 적었을 것이기 때문입니다.
비슷한 예로,
플랫폼 또한 하나의 "진화의 계단" 역할을 했을 겁니다.
'플랫폼'이라는 단어 자체가 무언가를 딛고 올라설 수 있는 평평한 곳을 의미하니 너무도 당연하기도 합니다.
많이 알려진 자바가 그렇고, 브라우저도 하나의 플랫폼이며, 플래쉬 또한 하나의 플랫폼이 됩니다.
좀 더 위로 올라가 보면,
MS-Office도 하나의 "계단"이 되지 싶습니다.
LaTex이나 PostScript도 제한적이지만 "계단"이 될 수 있으며,
PhotoShop이나 그림판도 "계단"이 될 수 있지 않을까요?
어쩌면 모든 프로그램은 하나의 "계단"이 아닐까 싶습니다.
무언가를 만들거나 만드는게 도움이 되는...
...
다시 아래로 내려가 볼까요?
Operating System은 확실하게 "진화의 계단" 역할을 했습니다.
이만큼 광범위하고 다양하게 컴퓨터의 자원과 기능들을 사용할 수 있는 편의장치(facility)를 제공해 주는 건, 확실히 쉽지 않은 일입니다.
좀 더 내려가 보면,
컴퓨터의 모든 부품들과 컴퓨터 그 자체 또한 너무나도 당연히 "진화의 계단"입니다.
초기의 컴퓨터를 설계한던 사람들은 그들이 만든 이 "계단"이 지금 이만큼까지 올라올걸 상상이나 했을까요?
아마도 이만큼은 절대 상상하지 못했을 겁니다.
단지 그들은 좀 더 위로 올라가기 위한 하나의 "계단"을 만들었을 뿐이겠죠.
그리고 하나의 계단을 딛고 올라선 사람들은 다시 또 하나의 계단을 만들었을 것입니다.
좀 엉뚱한 상상이지만,
진화론의 측면에서 바라보면, 인간 또한 하나의 "계단"은 아닐까요?
최근에 다시, 좀 더 또렷하게 들고 있습니다.
프로그래밍 언어들에 대한 구분이 저수준(Low-Level)과 고수준(High-Level)이 되는 경우가 있는데, 이런 구분은 그 언어의 역할 및 용도를 보다 명확히 해 줍니다.
저수준의 언어는 근본적으로 프로그램이 작동하게 될 컴퓨터의 구조와 밀접하게 연관이 되며 군더더기 없고 간결하며 빠르게 작동하는 장점을 가집니다.
반면에 고수준의 언어는 컴퓨터의 구조에 대한 고민을 많이 줄여주고 인간의 복잡한 논리를 구현하는데 더 적합한 장점을 지니게 됩니다.
리버스 엔지니어링을 하다보면, 고수준의 언어로 작성된, 복잡한 알고리즘의 프로그램은 그 자체가 안티-리버싱의 역할도 하지 않나 생각될 정도입니다.
이런 프로그래밍 언어의 고수준화는 하나의 "진화의 계단" 역할을 합니다.
복잡하고 까다로운 논리를 저수준의 언어로 작성하는 것은 무척이나 어려웠을 것입니다.
기본적으로 저수준의 언어를 사용하는 프로그래머의 머리에는 컴퓨터의 구조, 레지스터, 스택, 메모리 사용 등에 대한 지식과 고려가 가득 차 있었을 것이므로 새로운 생각을 할 여유가 그 만큼 적었을 것이기 때문입니다.
비슷한 예로,
플랫폼 또한 하나의 "진화의 계단" 역할을 했을 겁니다.
'플랫폼'이라는 단어 자체가 무언가를 딛고 올라설 수 있는 평평한 곳을 의미하니 너무도 당연하기도 합니다.
많이 알려진 자바가 그렇고, 브라우저도 하나의 플랫폼이며, 플래쉬 또한 하나의 플랫폼이 됩니다.
좀 더 위로 올라가 보면,
MS-Office도 하나의 "계단"이 되지 싶습니다.
LaTex이나 PostScript도 제한적이지만 "계단"이 될 수 있으며,
PhotoShop이나 그림판도 "계단"이 될 수 있지 않을까요?
어쩌면 모든 프로그램은 하나의 "계단"이 아닐까 싶습니다.
무언가를 만들거나 만드는게 도움이 되는...
...
다시 아래로 내려가 볼까요?
Operating System은 확실하게 "진화의 계단" 역할을 했습니다.
이만큼 광범위하고 다양하게 컴퓨터의 자원과 기능들을 사용할 수 있는 편의장치(facility)를 제공해 주는 건, 확실히 쉽지 않은 일입니다.
좀 더 내려가 보면,
컴퓨터의 모든 부품들과 컴퓨터 그 자체 또한 너무나도 당연히 "진화의 계단"입니다.
초기의 컴퓨터를 설계한던 사람들은 그들이 만든 이 "계단"이 지금 이만큼까지 올라올걸 상상이나 했을까요?
아마도 이만큼은 절대 상상하지 못했을 겁니다.
단지 그들은 좀 더 위로 올라가기 위한 하나의 "계단"을 만들었을 뿐이겠죠.
그리고 하나의 계단을 딛고 올라선 사람들은 다시 또 하나의 계단을 만들었을 것입니다.
좀 엉뚱한 상상이지만,
진화론의 측면에서 바라보면, 인간 또한 하나의 "계단"은 아닐까요?
피드 구독하기:
글 (Atom)