| [ CnUnix ] in KIDS 글 쓴 이(By): hello (Yang S.S.) 날 짜 (Date): 1996년09월09일(월) 07시54분37초 KDT 제 목(Title): [Re] OS의 다른 OS화일의 실행. 음.. 위에서 말씀하신것에 대해 일단 결론부터 말씀드리죠. 컴파일러가 같다고 해서 다른 OS에서 수행할수는 없습니다. 컴파일러가 같다는 말도 이상한데. 일단 OS별로 compiler가 다르겠죠 물론. 같다는 말은 같은 회사에서 나온 컴파일러다 라고 이해했습니다.(물론 version 명이 같을 수 도 있죠.) 서로 다른 OS에서 수행이 안되는 이유는 다음과 같이 간단히 말할수 있습니다. 일단 컴파일된 결과의 binary는 hardware에서 알아듣는 기계어로 번역되죠. (어셈블리어가 아닙니다. 어셈블리는 단지 기계어를 보기 편하게 보여준것 뿐이죠 이경우도 실행화일 자체는 기계어고 그 기계어를 디버거로 통해 어셈블리어로 본거일때 얘기입니다. 손으로 입력한 어셈블리어가 아니구.즉 어셈블러로 어셈블한 것이 아니라는 얘기.) 그런데 실행화일은 자신이 수행하는데 필요한 모든것을 가지고 있지 않습니다. 즉 실행시에 필요한 기능들을 OS로 요청해서 사용하죠. 이것이 OS System Call입니다. (물론 실행을 위해서는 OS에서 메모리로 올려야 되고, 이과정을 로딩이라고 합니다. 즉 OS에서 loader부분이 있죠. 그 로더가 실행화일을 메모리에 올려줍니다. 이 메모리로 올려줄때도 실행화일이 OS에서 알고 있는 실행화일의 형태가 아니면 어느것이 실행문이고 어느것이 데이타인지 구분을 못하죠. 따라서 실행화일의 형태도 OS와 관련있는 것입니다.) 다시 또 그럼 OS가 같으면 실행화일이 실행되느냐.. 물론 이것도 아닙니다. 일례를 들어 Solaris 2.x대의 버전도 SUN용과 Intel용이 있죠. SUN에서 compile한것이 그대로 Intel에서 안돌아 가죠. 이것은 생성된 실행화일의 기계어는 기계마다 다르다는 것이죠. 이것이 같은 것은 Architecture가 같다고 하고 family라고 하죠. 이해하기 쉬운말로 x86 architecture는 8086, 80186(이것은 거의 controller로 밖에 사용을 안한것으로 기억합니다.) 80286, 80386, 80486, pentium, penitum pro 대부분 architecture가 같죠.( 반드시 같다는 것이 아님. 왜냐하면. 나름대로의 기계어 명령을 가지고 있죠. 물론 대부분 compatibility를 제공하여 하위호환은 다 되죠.) 또한 IBM의 360 도 같은 family를 형성하고 있습니다. (기타 등등 굉장히 많아요.) 어찌되었든 (너무 아래로 내려가면 머리만 아프니까.) 그러면 다른 기계에서 compile한것을 (다른 OS에서도 포함) 수행 못하느냐. 그건 아닙니다. emulation하는 방법과 cross compile하는 방법이 있습니다. 먼저 cross compile은 실행화일을 만들때 아예 컴파일 하는 기계에서 수행하는 실행화일을 만드는 것이 아니라. 목적하는 기계 (OS)에서 수행하는 실행화일을 만듭니다. 또 다른 것은 emulation입니다. emulation은 그야말로 마치 수행하는 기계가 목적하는 기계인양 하는 거죠. 어찌보면.. OS/2에서나 Win95에서의 Dos session에서 수행하는 것을 이방법 처럼 생각하면 됩니다. (사실 같은것으로 치기에는 OS의 기능이 너무 많지만. 논쟁의 여지는 굉장히 많지만. 이해하시는데는 더 목적을 두었으므로 그냥 우기죠. =) ) 또한 linux에서 dosemu라고 dos를 emulation하고 wine라고 해서 windows를 emulation하는 기능이 있습니다. 그럼 이렇게 PC에서반 있느냐.. 그것도 아닙니다. workstation에서 dos를, windows를 emulation해주는 기능이 있습니다. HP에서것은 직접 써 봤고요... SUN에도 있다고 들었지만 실제로 보진 못했습니다. HP에서는 얼마나 수행이 잘되는지 (여기서 HP는 HP workstation 720crx이고 HP-UX8.x 를 OS로 하는 것임) 실험해 볼려구 PC에서 수행되는 WINDOWS를 디렉토리째로 퍼다가 HP에 올리고 실행했는데.. 결과는 PC보다 엄청 빨리 (느낌으로 한 3배정도 빨랐음) 수행되더라구요.. 물론 CPU도 OS도 틀린 상황이죠. 또한 요즘엔 OS에서 아예 지원을 약속하고 나오는 것들이 있죠. (위에서 말한 dos session도 이쪽에 더 가깝지만 위에서 일단 우겼으니 그냥 밀고 나가죠. =) ) OS에서 보면. ~와 binary compatible이라고 언급하는 것이 있습니다. 이런것들이 실행화일을 그대로 가져다 실행하면 수행이 된다는 거죠... 좀 길게 설명을 해서 지루하고 요점을 피해갔는지는 잘 모르겠지만. 어쨋든 도움이 되었으면 합니다.... ------------------------------------------- 안녕하세요? <o>------< HELLO e-mail : ssyang@metro.telecom.samsung.co.kr ------------------------------------------- |