SF / 과학 포럼
SF 작품의 가능성은 어떻게 펼쳐질 수 있을까요? 그리고 어떤 상상의 이야기가 가능할까요?
SF에 대한 가벼운 흥미거리에서부터 새로운 창작을 위한 아이디어에 이르기까지...
여기는 과학 소식이나 정보를 소개하고, SF 속의 아이디어나 이론에 대한 의견을 나누며, 상상의 꿈을 키워나가는 곳입니다.
( 이 게시판은 최근에 의견이나 덧글이 추가된 순서대로 정렬됩니다. )
우선 이 생각이 나온 계기는 위력만 같은 데스스타의 주포를 달았으나 크기가 도시 하나 정도밖에 되질 않는 우주선을 정하던 때였습니다
주포의 출력을 모으던 중 너무 심하게 출력을 올린 탓에 우주선 컴퓨터가 마비되게끔 설정하고 싶은데
컴퓨터의 일시적 마비의 원인들(전력 부족,cpu 과열 등등)과 해결 방법에는 어떤 것들이 있을지 알고 싶습니다
워프공간에서 악마가 들러붙었기 때문입니다.
해결방법은 황제에게 기도를 올리고 인퀴지터를 보내 승무원들을 전원 이단심문에 회부한 뒤 싸이커들을 갈아넣으면 됩니다.(···)
컴퓨터라는건 결국 전자장치로 1과 0의 신호를 주고 받음으로써 작동하게 되는 법인데... 이 1과 0의 신호라는건 물리적으로는 전압(voltage)을 많이 사용합니다. 저야 전자쪽은 개론정도밖에 모르므로 다른분들이 더 잘 아시겠지만 대략적으로 설명하자면, 한 소자에 +5 V가 걸리면 1의 신호가 들어왔다고 인식하고, +2 V의 전압이 걸리면 0의 신호가 들어왔다고 인식한다고 이해하시면 되겠네요.
그런데 이게 외부의 어떤 인자에 의해서 +8 V 와 +5 V의 전압이 걸리게 된다면 그 소자는 무조건 1의 신호만 받는다고 생각하게 되고... 결과적으로 오작동으로 나타날 수 있습니다. 사실 보통은 이런 것을 방지하기 위해서 여러가지 방법을 사용합니다만, 뭐 기계나 외부 환경이라는 건 알 수 없는 거니까요. 사람의 실수도 있고, 충분히 가능성은 있다고 봅니다.
마침 비슷한 예를 들은적이 있어서 한가지 소개시켜드리자면... 대형 병원에서 약 조제를 도와주는 시스템을 만드신 교수님의 이야기입니다. 환자가 처방전을 들고오면 그 처방전이 약사에게 전달되고, 약사는 그 자리에서 약을 조제해서 바구니에 넣습니다. 그 바구니는 자동화된 임시 창고에 저장되어 있다가 창구에서 신호가 오면 조제 된 약이 창구로 배달되서 환자에게 전달해주는 시스템을 만드셨지요. 이전에는 약사가 처방전을 받아서 약있는데까지 갔다가 약을 조제해서 다시 창구로 와서 환자에게 배달시키는 식으로 동선이 길었는데, 저 시스템을 사용하면 약사는 약을 조제하는 곳에서 움직이지 않고 약만 조제하면 되니 훨씬 효율적으로 일 할 수 있죠.
근데 문제가 발생했습니다. 하루에 많이는 아니고 대 여섯개 정도 찾아가지 않는 약이 나타난 거죠. 환자가 안 찾아간 것이 아니라 창구에서 약을 배달시켜 달라고 신호를 보냈는데, 그게 이상하게 신호가 중간에 사라져서 배달이 안되는 경우가 종 종 생겼습니다. 주기적인 것도 아니고, 하루에 발생하는 수도 일정하지 않고, 그렇다고 시스템상 버그도 아니고... 한참 고생하면서 찾다 찾다 결국 찾은 것이 약 조제실 옆의 엘레베이터 때문이다 라는 것이었습니다.
엘레베이터에 사람이 많이 타게 되면 그 사람들을 들어올리기 위해서 파워를 많이 써야 하는데, 마침 그 엘레베이터의 파워 케이블이 약 조제실 옆을 지나간 것이죠. 파워 케이블에 높은 전압이 걸리면 그 주변에 고등학교 때 배운 대로 큰 자기장이 발생하고, 그 자기장에 의한 전자기 유도현상으로 시스템의 회로에 유도기전력이 생겨서 에러를 발생한 것이었습니다. 위에 예로 이야기 하자면 +5 V와 +2 V의 전압 대신에 +8 V와 +5 V걸려서 에러가 발생한 샘이었습니다. 이게 미묘한게 엘레베이터에 사람이 적게 타면 파워를 많이 소모 안해도 되니까 유도기전력이 적게 발생하고, +5 V와 +2V 걸릴 게 +6 V, +3 V 걸려서 아슬아슬하게 작동하는 바람에 하루에 몇개 발생 안하고, 주기도 일정하지 않았던 겁니다.
글쓴분의 것과 맞춰보자면 글쎄요... 초장거리 사격을 위해서 에너지를 모으다보니 컴퓨터에 영향을 줄 정도의 전압이 발생하였고, 결과적으로 컴퓨터 화면엔 악몽의 블루스크린이... 뭐 이건 설계 미스긴 하겠지만 충분히 가능하다고 봅니다.
그런 문제, 혹은 다른 문제로 컴퓨터는 여러 확인 수단을 갖추고 있습니다.
parity check bit 같은 경우는 1바이트 중에서 7비트를 데이터로 쓰고 1비트를 데이터 오류의 검출용으로 쓰는 방식입니다.
parity check bit 야 오류 검출율이 50%나 되지만, 다른 패리티 체크 방식은 블록 단위의 데이터를 검사해서 오류율이 현저하게 낮습니다.
몇가지 방식을 섞어서 이용하기도 하고, 이것이 더 발전한게 많이들 들어보신 CRC(Cyclic redundancy check) 입니다.
게다가, 꼭 오류를 확인만 하는 방식만 있는게 아니고, 데이터의 비율을 더 줄인다면 단순 오류확인이 아닌 데이터의 복구에 사용할 수도 있습니다.
프로그램의 오타 하나 때문에 일정 출력이 넘자 오류가 생기고 그것이 무한 루프하며 커져서 컴퓨터 CPU가 과부하 되고 이내 가동을 멈춤. 그러나 66개의 예비가 있어 문제 없음.
공격병기를 갖춘 대형 병기일수록 아주 철저하게 예비를 갖추죠. F22의 컴퓨터는 몇십개의 모듈을 통해 예비를 갖추고 있어요. 그런 것이 문제가 되기 위해선 매우 의외의 것이 문제가 되거나 해야죠. B2를 떨어트린 컴퓨터의 습기 같은거요.
설계상의 문제가 있었다고 하면 되겠죠. 어느 한도 이상 주포 출력을 올리면 일부 방열판이 떨어져나가는 문제가 있는데 하필 이 방열판이 제어 컴퓨터 냉각용매 돌리는 용도라 컴퓨터가 오버히트로 뻗는다던가... 이런 신병기는 보통 초도 물량에 온갖 결함이 생기기 마련이니까요. 물론 이런 종류의 결함 장치는 결함을 최초 발견했을 때 1회만 유효합니다. 제정신을 가진 군대라면 이런 결함을 그냥 냅두고 운용하진 않을테니까요. 아니면 정말 '정상적인' 운용 환경에서는 발생하지 않을 문제라 결함 해결을 미루고 있다던가, 해결 방법이 너무 비싸게 먹혀서 냅뒀다던가 할 수는 있지만요.
이미 완성 한 후에 주포 개량 사업이 있었다면 어떨까요. 출력을 두배로 올렸다던가 말이죠. 사업 완료후 장기간 운행시 주포 출력을 원래 설계 이상으로 올리면 컴이 오작동 하는 경우가 발생 했고. 이거 고치려면 주포 개량사업에 준하는 공사비가 들어서 임시로 리미터를 걸고 사용중이라고 하면...
개량사업 전의 출력으로 쏘면 아무 문제가 없으나 개량되어서 올라간 2배 출력으로 올리면 컴이 맛탱이가 간다 그에대한 개량사업이 또 예정되어있으나 예산문제로 지연되는 사이에 기존 출력으로만 사용하기로 하고 운행중이었는데 할수없이 허용 출력 이상으로 발포할 일이 생겨서...
이건 제가 군대(대대 본부 FDC)에서 겪었던 문제인데...출력때문은 아니지만...진동때문에 발생한 사건이 있습니다. 훈련시 사격지휘 장갑차에 제원 계산용 컴퓨터를 탑재하고 행군을 하면 장갑차의 진동때문에 종종 내부 카드가 접촉불량되어 화면출력이 맛탱이가 가는 일이 있었습니다. 대대 FDC였던 분이 계시다면...그 컴퓨터가 얼마나 튼튼하게 만들어져 있는지는 아실겁니다.(EMP대책도 되어있을거라는 터무니없는 루머가 있을 정도...) 원래 생각지도 못한데서 발생하는거죠. 고장이란게;;;
일단 누군가에 의해서 주포를 쓰기 시작하면 어딘가 망가지기 시작된다는 복선을 몇군데 곳곳에 까시는게 어떨까요.
그리고 우주에서의 가동을 상정한 컴퓨터라면 보통 우주선(cosmic rays)에 대한 차폐 혹은 높은 내구성을 가지고 설계를 하게 됩니다.
일반적인 반도체 소자는 복잡한설계와 나노미터단위 이하의 사이즈의 배선구조로 메인부들이 제작되기 때문에 이러한 우주선(cosmic rays)에 노출되면 그냥 아주 시밤 쾅!!!이거나 정확한 결과를 보장 할 수 없게됩니다.(사실 평상시 사용하는 cpu에서도 굳이 우주선(cosmic rays)때문이 아니라도 캐시미스라던가 부동소수점 연산결과의 오류는 약간씩 있고 이럴때마다 cpu는 재연산을 실시하기도 합니다.) 때문에 우주선에 쓰이는 cpu들은 최대한 문제가 생길 소지가 적을 정도의 단순하거나 성능이 낮은 구조로 제작하면서(뱀발로 우주선(space ship)나 군용 병기에 486이나 Z80같은 cpu들이 쓴다는 이야기들은 여기에서 기인합니다. 실제로는 오래되었기때문에 나름 설계변경후 새로 생산을 하는 식을 쓰겠습니다마는....) 양자역학 효과가 일어나기 쉬운(터널링 현상이라던가...음?) 나노미터이하의 배선단위로는 제작을 잘 안합니다.(제가 전문분야는 아니기때문에 나노미터 이하의 배선을 한다고 해도 나름 많은 고민을 가지고 내부를 조심스럽게 설계하리라 봅니다.) 사족이 길었는데 데스스타나 주포가 왕왕거리며 우주선(space ship)들이 활개치는 시대라면 일단 컴퓨터에 대해서도 지금의 기술보다 좀더 고도의 우주선(cosmic rays)에 대한 차폐나 설계기술이 나와서 쓰였을 겁니다.(그렇게 된다면 cpu의 제작과정들도 이러한 차폐기술에 의존해서 공학자들은 좀더 복잡하고 nm이하규모의 배선이 들어간 부품의 설계를 고려하게 될 수 있게 될테니깐요.) 그렇다면 간단하게 이러한 구조상의 설계나 소재의 불안전성(몇도C를 넘으면 처음 적용해본 새로운 합금에 대한 우주선(cosmic rays)의 차폐율이 낮아진다던가 라는 식으로.. 물론 공학자들이 미쳤다고 이런 간단한 미스를 놓칠리 없겠습니다만...그전에 실험결과가 조작되었다 라든가 합금 제작과정중에 비리가 있었다 라는 식의 복선을 깔음으로서 몇몇 공학자들만이 제대로 된 실험결과를 알고 있었고 실 제작자들은 합금의 문제점에 대해 몰랐었다 하는 식으로 무마 할 수 있을것 같습니다.)에 의해 메인 부품들이 우주선에 다량 노출되고(데스스타나 빔 계열의 주포라면 발사시 따라오는 전자기파같의 EMP효과는 지대하게 발생하리라 생각됩니다. 열도 상당할테구요. 빔이아니라도 레일건도 비슷할까 생각되는데요. 정확한 과학의 근거라기보단 감에 가깝네요..끙...)
컴퓨터라는 물건은 정확한 제어가 생명입니다. 0과1의 행렬 중 한 비트만 틀어져도 데이터 전체를 폐기 해야 하죠. 아주 사소한 데이터 오염도 시스템 전체를 다운시켜 버리기도 합니다.
전력 부족하면 이러한 사태를 초래 하고 대부분의 컴퓨터는 느려진다기 보다는 오동작을 하면서 다운되어 버립니다. 데이터의 정합성을 보증할 수 없기 때문이죠.
현재 크고 아름다운 대형 서버들은 리부팅 하면 수 십분에서 수 시간까지 걸립니다. 달린 장치들이 하도 많아서 하나하나 점검하고 올라와야 되기 때문이죠.
전력 부족에 대응하려면 이를 감지하고 대응하는 보호 장치가 별도로 붙어 있어야 합니다. (무정전 전원장치 같은...)
즉 전력이 부족하면 컴퓨터가 저절로 느려진다는 엄밀히 말해 전력 소모를 줄이기 위해 클럭을 다운시키는 보호 회로 등이 붙어 있어 느려진다가 답이겠죠.
물론 긴급한 대규모 연산을 위해 클락 유지가 필요하다면 무정전 전원장치의 가용 자원을 최대한 짜내어 15분간 동작 가능... 뭐 이런 상황도 가능하겠죠.
사용자의 고의 적 과충전에 의한 문제라면, 문제의 원인을 알고 예상문제를 충분히 예측할 수 있으며 대응방안을 쉽게 도출할 수 있기 때문에 큰 문제가 발생하지 않습니다. 적절한 수준에서 안전장치가 작동하던가 하겠죠.
아무리 점검해도 장비 상태는 정상이고 오작동할 이유가 없는데 오작동 한다던가.. 이런게 진짜 문제죠.
이런건 보통 설계자와 운용자 모두 미처 고려하지 못한 사소한 문제가 발단이 되어 시스템을 거치며 문제가 확대되는 경우입니다.
센서에 벌레가 들어갔다던가, 표시장치 전구가 나갔다던가, 정비한다고 뭐 물려놓은걸 깜빡하고 빼지 않았다던가...