반응형
NS2는 인터페이스를 구성하는 OTcl(프론트엔드)과 시뮬레이션을 실행하는 C++(백엔드)로 이루어져 있다. 2가지 언어를 사용해야 하고 두 언어 사이에 연동(Binding)해야 하므로 번거롭지만, 언어를 분리해서 사용해야 하는 이유가 있다. 바로 NS2 시뮬레이터의 크기가 상당히 크기 때문이다.
C++은 코드를 바로 실행하지 못하고, 컴파일 과정을 거쳐서 실행파일을 생성한 뒤에 실행할 수 있는 컴파일 언어(Compiled language)이다. 컴파일 과정을 거치므로, 코드를 수정하면 다시 컴파일해야 하지만 실행속도는 빠르다. 반면에, OTcl은 컴파일 과정을 거치지 않고 코드만으로 바로 실행할 수 있는 인터프리트 언어(Interpreted language)이다. OTcl은 코드를 수정한 부분을 바로 실행할 수 있지만, 실행속도는 느린 편이다. 즉, C++은 속도는 빠르지만 변화를 적용하는 데 오래 걸리고(컴파일하는 데 보통 몇 초 정도 걸린다), OTcl은 실행속도는 느리지만 변화를 빠르게 적용할 수 있다.
따라서 크기가 큰 NS2의 내부 동작은 C++로 작성하되, 자주 바뀌는 네트워크 구성 부분인 인터페이스 부분은 OTcl로 작성하여 두 언어의 장점을 모두 활용한 것이다.
반응형
'프로그래밍' 카테고리의 다른 글
Python 실행 시 뜨는 UnicodeDecodeError 해결 방법 (0) | 2022.06.13 |
---|---|
[Ubuntu 20.04] HDMI로 연결한 모니터 내장 스피커에서 소리가 안 나오는 문제 (0) | 2021.01.19 |
[Ubuntu 18.04/20.04] Xmodmap 부팅마다 초기화되는 문제 (0) | 2020.09.24 |
[Android] 안드로이드 스튜디오 로그 확인하는 법 (0) | 2018.01.28 |