Thursday, April 21, 2016

[티맥스OS] 윈도우 호환OS 만드는 방법

이번에 티맥스OS의 발표를 보고 너무나 안타까워서 오랫동안 윈도우 프로그래머로서의 경험을 살려서 윈도우 호환OS 만드는 방법을 생각해 봤다.

내가 윈도우 호환OS를 만든다면 MySQL 호환 DBMS인 MariaDB와 같은 방식으로 만들었을 것 같다. MariaDB는 이름만 MariaDB이지만 터미널에서 mysql 명령어 실행파일로 동작하며, MySQL C API의 이름도 심지어 똑같다. 함수명을 예를 들면 mysql_connect() 등. 사실상 쓰는 사람의 입장에서는 MySQL인지 MarisDB인지 모른다. 태생이 MySQL 소스코드에서 출발해서 그렇지만...

티맥스의 가장 큰 고객은 대한민국 정부이다. 그리고 아래아한글(HWP) 처럼 공공기관의 MS워드를 대체하는 것처럼, 윈도우를 대체하는 것이 목표이다.

요구사항
1. 인터넷 익스플로러가 구동 되거나 인터넷 익스플로러 호환 브라우저가 있을 것
예전 웹기반 IT 시스템은 IE 6.0을 타겟으로 만들어진 것이 많다. 그래서 IE버전을 7.0 이상 올려도 화면이 깨지는 웹시스템이 많다.

2. ActiveX가 돌아갈 것
말안해도 알겠지만 전자정부의 공인인증서, 인터넷뱅킹 및 증명서 발급은 ActiveX 기반의 보안 시스템 및 리포트 툴(문서 프린트 소프트웨어)을 사용한다.

3. 윈도우의 드라이버가 그대로 설치될 것
수많은 하드웨어 드라이버를 새로 만들 수는 없다. 그래서 기존의 드라이버를 그대로 돌아가게 해야한다.

4. 윈도우의 실행파일 및 소프트웨어가 그대로 설치 및 실행될 것
가장 기본적으로 오피스와 개발도구인 Visual Studio가 돌아가야 한다. 최신버전이 안돌아 가더라도 최소한 오피스2003이나 Visual Studio 2008 정도는 실행되어야 한다.

구현방법
1. Boot Loader의 구현
이거는 모든 OS의 공통적인 사항이다. 목표가 윈도우98이면 IO.SYS, MSDOS.SYS를 구현하고, 윈도우XP이면 NTLDR, 윈도우7이상이면 BOOTMGR를 똑같이 구현하던가 나름대로 구현해야한다.
뭐 리눅스 방식으로 구현해도 상관은 없다. 부팅만 되면 되니까.

2. PE 파일의 구동
리눅스의 실행파일은 ELF(Executable and Linkable Format), 윈도우의 실행파일은 PE(Portable Executable)라고 한다. PE는 가장 많이 보는 EXE파일이다.
윈도우 호환 OS라면 이 EXE가 실행이 되야 한다. 말 그대로 윈도우 EXE로 되어 있는 프로그램이 설치가 되고 구동이 되어야 한다는 거다.

3. Win32 API의 구현
GDI32.DLL
USER32.DLL
KERNEL32.DLL
EXE파일을 실행시키려면 최소한의 DLL 3개가 필요하다. Visual C++ 해본 프로그래머들은 알거다. 아무것도 안해도 Win32 EXE로 컴파일해도 위 3개는 필요하다는거.
그리고 기존에 간단한 윈도우 프로그램을 만든 걸 돌리려고 해도 기본적인 API가 호환이 되어야 한다.

4. COM(Component Object Model)의 구현
이건 MS에서 사용하는 바이너리 인터페이스 모델이다. DLL, OCX에서 VB, VC++,Delphi 프로그램 상호간 통신하고 오피스와 ActiveX에서 사용하는 기술인데 이게 되어야 ActiveX가 된다. 그리고 복잡한 프로그램은 이걸 지원해야 한다.
그리고 이게 되어야 DirectX가 된다. 게임이 된다는 소리다. OpenGL 게임은 뭐 상관없지만 대부분의 게임은 DirectX로 개발되어 있다.

5. WDM(Windows Driver Model) 구현
OS를 만들어도 드라이버가 없으면 어떻게 쓰냐? 그래서 기존에 윈도우용 드라이버를 호환 시켜야 한다.

이번에 티맥스OS가 목표를 어떻게 잡았는지 모르겠는데 내가 윈도우 호환 OS를 만든다면 윈도우2000이나 윈도우XP에서 32비트만 목표로 잡고 호환시킨후에 추후에 64비트 호환 그리고 FreeBSD기반인 OSX나 Linux의 ELF바이너리를 실행할수 있게 호환을 시켰을거다. 그러면 거의 무적의 OS가 될 수 있다. 모바일계의 Xamarin처럼

P.S.#1
운영체제 개발에 관심있는 사람은 이책을 추천한다. 국산 OS 개발관련 책 중에서 제일 괜찮은것 같다. 내가 저자는 아니므로 광고는 아님
http://www.yes24.com/24/goods/2502876?scode=032&OzSrank=8

P.S.#2
안철수가 만든 안랩이 알려진 바로는 연봉도 적고 무시 받는 직장일 수 있는데 한국에서는 안랩 프로그래머가 윈도우 시스템 프로그래밍은 제일 잘하는 듯 하다.

윈도우 디버깅, 커널모드, 드라이버 관련 저술은 여기 엔지니어들이 제일 많이 내는 듯. 요즘은 석박사들도 윈도우는 연구를 안하고 죄다 리눅스를 하니깐 그런지 몰라도.

No comments:

Post a Comment