MS 오픈소스 랩 방문기

포틀랜드에서 있을 O'reilly Open Source Convention 참석차 지금 시애틀에 와 있습니다. 컨퍼런스는 이미 오늘 시작했지만 저는 시애틀에 있는 MS 본사쪽과 오늘 미팅이 있어 아직 시애틀에 머무르고 있습니다. 오늘은 MS에서 운영중인 오픈소스 랩을 방문하였지요. 랩 담당 책임자인 Hank Janssen씨는 매우 키가 크고, 독일이나 동유럽 계통이 아닌가 하는 느낌을 받았는데 매우 솔직 담백하게 자신이 몸담고 있는 MS 오픈소스 랩에 대한 이야기를 해 주었습니다.

R0014619

MS 오픈소스 랩은 오픈소스 소프트웨어에 대한 분석과 벤치마크, 오픈소스 소프트웨어가 MS 제품 위에서(현재는 주로 윈도우즈) 잘 동작하게 하는 것, 그리고 오픈소스 커뮤니티에서 해당 오픈소스 프로젝트가 MS 제품위에서(역시 주로 윈도우즈) 잘 돌아가지 않을 경우 오픈소스 커뮤니티에 대해 일종의 기술지원을 실시하는 것 등을 주요 업무로 진행 중이라고 합니다. 여기서 기술지원은 오픈소스 개발자에게 MSDN 라이브러리 라이센스를 무상으로 제공하는 것과 같은 활동을 포함한다고 예를 들어 주었구요. 현재는 Apache와 PHP 관련하여 많은 일들을 진행 중이라고 전해 주었습니다. 아파치 웹서버와 PHP가 윈도우즈 위에서 잘 돌아가도록 하는데 많은 노력을 진행 중이라고 하더군요.

R0014622

MS 오픈소스 랩은 MS 내부적으로도 가장 특이한 조직이라고 합니다. 그도 그럴것이 MS와 오픈소스 소프트웨어들은 시장에서 경쟁 관계에 있습니다. 리눅스와 윈도우즈만이 아니라 여러 수많은 오픈소스 소프트웨어들이 또한 여러 수많은 MS 제품들과 경쟁하고 있지요. 그러나 MS 오픈소스 랩은 오픈소스를 공존해야 할 대상으로 규정하고 함께 발전해 가는 것이 더 중요하다고 이야기한다고 합니다. 당연히 그래야겠지만요. :-)

R0014626

랩에는 여러가지 다양한 장비들이 꽉 차 있었습니다. 각 벤더별 블레이드 서버들, 스토리지 서버들, 그리고 일반 화이트박스 서버들 등등... 상당한 양의 장비들이 랙에 쌓여 있었는데 최근에는 가상화 관련해서도 많은 관심을 가지고 관련 솔루션 개발 및 각종 테스트들을 진행하고 있다고 이야기해 주었고 자신들이 보유한 장비 사양이 단일 조직 기준으로 MS 내에서도 몇 손가락 안에 들 정도의 양이라는 이야기도 해 주었습니다.

R0014624

실제 개발 작업과 관련해서는 곧 여러가지 솔루션들이 추가로 발표될 것임을 알려 주었습니다. System Management Server(이름이 맞는지 모르겠습니다)에 현재 리눅스 서버를 자동으로 찾아서 관리해줄 수 있는 기능이 포함되어 있고 조만간 닷넷으로 컴파일할 수 있는 PHP도 릴리즈할 예정이라고 하네요. 그외에도 계속해서 할 일이 많이 있어 매우 바쁘지만 재미있고 보람있게 일하고 있다는 이야기도 자랑스럽게 전해 주었습니다.

R0014625

개인적으로... MS가 아직 완전히 오픈소스의 친구라고 보기는 어렵다는 생각을 여전히 가지고는 있지만 MS도 기업이고 자신들의 이익에 가장 부합하는 방향으로 나갈 것이므로 제가 문제라고 생각하는 오픈소스에 대한 소프트웨어 특허 공세라든가 지적재산권 관련한 의견도 곧 오픈소스와의 공존을 가정하고 전향적인 변화를 취하게 될 것이라고 생각하고 있습니다. 이미 오피스 파일 포맷 등 여러가지 기술 스펙들을 공개하기도 했고요. 다만 기존에 원체 독점 기업의 이미지가 강했고, 실제로도 그러하므로 아직 무슨 일을 하더라도 색안경을 끼고 바라보는 시각을 완전히 피하지는 못하고 있는데 이번주 금요일 오픈소스 컨퍼런스 키노트 현장에서 오픈소스와 관련한 뭔가 커다란 뉴스를 터뜨릴 것이라 하니 또한번 기다려 봐야겠습니다.

NTeen 십대 리눅서들을 모집합니다.

십대중심 리눅스 동호회를 모집합니다.

십대 리눅서들께서 활동하실수 있는 환경을 제공하기위해서
이번에 NTeen에서 리눅스 관련 십대 동호회분들을 모시고 있습니다.
십대 리눅서 연합을 결성하고 있습니다.

음 리눅스에 관심이 있거나 현재 리눅스 매니아 이신 십대 분들께선 누구나 참여 가능
합니다.

이번에 추진하는 십대 리눅서 연합은 우선 linuxer.nteen.org 으로 계정을 할당할 예
정이구, 주축을 이룬 팀장들에겐 ????@nteen.org와 같이 지원해 드립니다.

공부하는 입장이니 서로간의 정보공유의 기회가 되었으면 합니다.

신청은 아래 신청게시판으로 가셔서..주소와 활동 내용을 적어 주시기 바랍니다.

http//www.nteen.org/board/sin/jboard.cgi

그리고 저희 IRC 서버는 irc.nteen.org 입니다.
리눅스 동호회 방은 #linux 입니다^^

NTeen 활동은 지금일 다 끝나구 6둴정도 부터 시작할꺼 같습니다.
지금 다 올리지 못해서.ㅠ.ㅠ 죄송..

그럼 많은 신청 바라며^^ 저는 물러갑니다..쿠쿠

fork() 후 waitpid 하는 도중에...

프로세스를 공부하다고 질문이 생겨서 글을 올립니다.

데이타가 있다고 할때 어떤 연산은 자식프로세스를 만들어서 하고 결과만 부모 프로세스에서 출력하고자 하는 간단한 코드인데요

만약에 그 연산이라는게 상당한 시간이 걸려서, 기다리는 도중에 부모프로세스에서 무언가를 해주어야 할때는 어떻게 해야 하는지요?

가령 자식프로세스를 기다리다가 시간이 너무 길어지면 3초에 한번정도는 '지금 연산중입니다' 라는 메시지를 출력하고 싶거든요...

waitpid 에 WNOHANG 옵션을 줘서 non-block 한 코드를 만들어야 한다는 것 까지는 알겠는데 그 후로는 깜깜하네요...

프로세스간에 pipe를 연결해서 어떻게 해야 될것 같은데.. 너무 어렵네요

도움 말씀 부탁드립니다.

#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>

int
main(void)
{
	pid_t	pid;
	int status;
	int i,j,k,some_array[1000];
	unsigned int total = 0;

	for(i=0;i<1000;i++) {
		some_array[i] = i+1;
	} // some data


	if ( (pid = vfork()) < 0)
		perror("vfork error");
	else if (pid > 0) {
		waitpid(0,&status,WNOHANG);	/* child goes first */

		printf("waiting... child's opearion\n");
		/* I want print this at every 3 second.*/

		printf("Total number : %u\n",total);
	} else { /* child part*/
		sleep(10); // require 10 seconds

		for(j=0;j<1000;j++) { // some 'complicated' operation
			for(k=0;k<=j;k++)
				total += some_array[k];

		}
	}
	exit(0);
}