BeOS Programming 1

From 흡혈양파의 인터넷工房
Jump to navigation Jump to search
BeOS 프로그래밍의 시작

백성수 (rainbow@hnc.co.kr)


BeOS의 특징

  • 선점형 멀티 태스킹
  • 보호형 주소처리를 하므로 시스템 전체를 잡아먹는 경우는 없다.
  • 가상메모리
  • 속성(?) 파일 시스템지원
  • 동적 디바이스 드라이버를 지원하므로 드라이버를 새로 업데이트 할 때 다시 부팅할 필요가 없음

네트웩 시스템이 기본으로 제공

  • 오디오/비디오 실시간 처리 가능
  • 동적 라이브러리(DLL) 공유
  • 객체지향 프로그램을 OS차원에서 기본제공


BeOS의 시스템 구성(BeOS Layer)

Beosstructsmall.gif



BeOS에서 정의한 표준 규약

명명규칙(Name Convention)

분류 접두어 구 성
클래스 이름 B 대문자로 시작한 문자열 조합(예, BTextView)
멤버 함수 대문자로 시작(예, GetText)
멤버 변수 모두 소문자로 표기
상수 B_ 모두 대문자(예, B_WILL_DRAW)
전역변수 be_ 모두 소문자(예, be_app)
그외 모두 소문자
명명규칙


코딩 상에 나타나는 몇가지 규칙

Application Signature(MS Windows시스템의 윈도우 클래스 이름과 비슷함)는 MIME형식(대략 "supertype/subtype"형식으로 구성된 문자열)의 문자열로 작성한다. 즉, MIME의 supertype은 "Application"을 갖고 subtype은 응용 프로그램 이름을 지정해 준다.


BeOS의 시계 프로그램의 Sigunature를 보자.

"Application/x-vnd.Be-SimpleClock" 경우 "Application"은 이미 BeOS에서 정의하고 있는 응용 프로그램을 나타내는 supertype이다. "vnd.Be"는 개발 업체(Vendor)를 축약해서 vnd로 표현했다. 마지막으로 "SimpleClock"는 응용 프로그램의 이름을 나타낸다.


메모리 할당의 경우 프로그램내에서 사용자가 할당한 메모리는 꼭 제거해야한다(기본 이라는 거 알죠...). 소프트웨어 키트(BeOS에서 제공하는 BApplication, BWindow등의 Kits들)에서 메모리를 할당해서 포인터로 넘겨 받는 경우는 약간의 주의가 필요하다. 즉, char *pText = BWindow->Text()라고 키트내에 문자열을 할당받아 포인터로 넘겨 받는 경우 pText포인터는 안전한 메모리 포인터를 갖고 있지 않다는 것이다. 왜냐면 키트가 이 메모리를 어느 시점에 제거할 지 모르기 때문이다. 이럴때는 자신의 프로그램내에 메모리를 할당받고 키트내의 복사 생성자(Copy Constructor)를 이용해서 작업하는 것이 안전한 코딩법이 된다.

char *pText = new char[BWindow->GetLength()+1];
strcpy(pText, BWindow->GetText());
delete [] pText;


개체내에 또 다른 개체를 메모리에 할당한 경우 제거에 대한 책임은 개체를 포함한 개체가 책임을 지진다. 즉, 부모 개체가 제거될 때 자식 개체도 제거되야 한다.

개체를 할당하는 방법에는 정적할당과 동적할당으로 나눈다. BeOS에서는 사용자가 개체를 할당할 경우 일반적으로 정적방법으로 처리한다. 그러나 하나의 개체에서 또다른 개체를 할당할 때(포함 개체), 쓰레드를 가지는 개체의 경우 동적으로 개체를 할당해야 한다.