컴퓨터
06/05/02 18:57(년/월/일 시:분)
운영체제 실습 - WIN32 - CreateProcess() 중에서
BOOL CreateProcess(
LPCTSTR lpApplicationName,
LPTSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCTSTR lpCurrentDirectory,
LPSTARTUPINFO lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation
);
윈도우가 강력합니다. 정말 좋습니다. 그런데 너무 복잡해요.
여러분이 콘솔 프로그래밍 해보면 아시겠지만, 내가 가지고 있는 표준 입출력 3개를 전달하기 위해 별 짓 다해야 되는 걸 보면 참 그렇죠. 리눅스에서는 기본적으로 0,1,2번 약속해서 쓰는걸, 윈도우에서는 그거 하나 전달하려고 핸들 막 복사해주고 닫았다 열었다 해주는 걸 보면 답답한데요. 그래도 강력하대니까.
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
그리고 여기 시큐리티 옵션 있죠? 윈도우가 C2 등급을 받았습니다. 오렌지 북이라는 미 국방성이 만든 가이드라인이 있어요. 리눅스보다 높은 보안등급을 받았죠.
BOOL bInheritHandles,
DWORD dwCreationFlags,
보시면 아시겠지만, 프로세스가 자기가 가지고 있는 리소스를 자기 자식에게 어떻게 상속시킬건지, 누가 억세스할 건지 명확히 줄 수 있죠.
대신에 쓰는 사람 입장에서는 어때요? 보안은 언제나 Trade-off죠. 편리하려면 보안 다 없애면 되요. 핸들 안 만들고 PID값 하나 갖고 쓰면 되잖아. 하지만 PID값은 별도로 있고 내가 쓸수 있는지를 GetHandle해서 ID를 가지고 핸들값을 얻어올 수 있는지 검사하면 더 안전한거죠.
이런 것들이 있기 때문에 윈도우가 좀 더 복잡해진 것 같아요. 어쨌든 복잡해진건 프로그래머의 몫이고, 쓰는 사람의 입장에서는 더 편하니까요. 사용자는 반대죠. 리눅스 쓰면서 야 뭐가 이렇게 불편해? 이렇게 얘기하죠. 그런데 프로그래머의 입장에서는 야 이거 프로그램하기 진짜 편한데. 이렇게 얘기하죠. 그런 차이가 있는 것 같아요.
프로그래머들은 좀 하다보면 리눅스가 참 좋습니다. 소스 공짜로 얻을 수 있는 거 많죠, 프로그래밍하는거 심플하죠. 그런데 MFC부터 시작해서 WIN32까지 욕을 태바가지로 먹으면서도 지금 계속 건재한건, 유저가 쓰기 편하기 때문이죠.
여러분은 어려운 길을 가셔야 합니다. 윈도우 망하겠어요? MS사가 쉽사리 망할 것 같지는 않죠. 좀 복잡하더라도 쓰셔야 하는 건 현실입니다. 대신 WIN32 같은 복잡한거 하면 돈은 많이 받겠죠. 여러분이 정말 고급 프로그래머가 되려면 윈도우를 열심히 하세요.
그런데 단, 앞으로 틈새시장이 많이 열리는 것 같아요. 리눅스 쪽 보시면, 삼성에서 리눅스 개발자들을 많이 데려가죠. 일반 개발자가 아니라 리눅스 밑에 하부에 있는 커널이라던지 OS까지 밑단까지 내려갈 수 있는 분들을 많이 데려가는데요. 그러니까 여러분이 자기 나갈 곳을 잘 봐서 프로그램을 하시면 될 것 같애요. 윈도우 쪽도 나가서 쓸모가 있겠습니다만은, 리눅스도 확실하게 해두면 취업하는데는 문제가 없을 것 같아요.
작은 장치들, 임베디드쪽 시스템에서는 리눅스가 굉장히 시장이 커지고 있죠. 서버 쪽도 어느 정도 윈도우를 따라잡는다고 하지만, 내다보면 윈도우보다 강한 파트는 임베디드 쪽이라고 얘기하죠.
서버 쪽은 솔직히 말해서 리눅스는 다룰 줄 아는 전문가가 드문 편이에요. 자리도 좀 없고. 물론 많이 쓰고는 있지만 관리적 측면에서 윈도우를 많이 택하고 있죠.
그래서 앞으로 임베디드 쪽으로 가실 분들은 리눅스를 많이 보시고, 일반 사용자를 대상으로 하는, 하드웨어와 별개인 쪽을 하실 분들은 윈도우를 열심히 하셔야겠죠.
- 수업 중에서.