검색결과 리스트
2014/02/13에 해당되는 글 2건
- 2014.02.13 이중 포인터 개념 정리
- 2014.02.13 SDN(Software Defined Network)
글
이중 포인터 개념 정리
int arr[2][3]; 로 int형 배열이 선언되어 있을때 원소의 개수는 몇개 일까요?
6개 같지만 2개입니다. 2차원 배열처럼 보이지만 실제 메모리는 1차원 이므로 2차원 배열이 아니라
1차원 배열의 확장입니다.
배열의 포인터는 int (*pArr)[3] = arr; 로 표현이 가능합니다.
☞ int *pArr[3]으로 작성하면 컴파일러는 int형 포인터를 리턴하고 변수가 배열인 함수로 해석합니다.(괄호 필수)
2차원 동적 배열을 선언할때 대부분
int **myArr = (int**)calloc(2, sizeof(int*));
for(int i=0; i<3; i++)
myArr[i] = (int*)calloc(3, sizeof(int));
으로 선언하고 사용합니다. 이때 선언시 2차원 포인터를 사용해서 2차원 배열은 2차원 포인터를 사용하는것으로
생각하기 쉽습니다.
하지만 이차원 포인터로 생각하는 이유는 참조의 참조 2번의 참조를 거치기 때문에 사용하는것이지,
꼭 2차원 배열을 동적할당할 때에는 2차원 포인터를 사용하지 않아도 됩니다.
☞ int (*myArr)[3] = (int(*)[3])malloc(sizeof(int)*2*3); // c 스타일
int (*myArr)[3] = static_case<int(*)[3]>malloc(sizeof(int)*2*3); // c++ 스타일
[정리]
1. 포인터 : 다른 지역의 변수를 접근하기 위해 사용한다.
2. 배열과 포인터 : 배열명은 자신의 첫 번째 원소의 시작 주소를 의미하는 상수 포인터.
이때 배열의 타입은 원소의 타입이여야 하고, 배열명을 사용하여 포인터에 저장할 경우,
배열 전체 타입이 하나의 원소의 타입으로 축소된다. 이것을 decay(퇴화)라고 한다.
3. 배열포인터 : 배열 전체를 의미하는 포인터 // 타입(*포인터)[길이]
4. 포인터의 연산 : 포인터간의 연산(정수포함)은 제한적인 연산만이 가능하다.
포인터 - 포인터 = 정수
포인터 + 정수 = 포인터
포인터 - 정수 = 포인터
5. 함수의 포인터
함수의 타입 : 리턴 타입과 매개변수 전체가 함수의 타입
함수의 선언 : 함수의 심볼은 반드시 리턴 타입과 매개변수 사이에 위치
☞ 리턴타입 (*포인터명)(매개변수)
설정
트랙백
댓글
글
SDN(Software Defined Network)
SDN이란 무엇일까요?
기존의 전통적인 네트워크는 각각의 라우터, 스위치 허브등의 노드들의 링크로 구성되어 있습니다.
[그림1] 전통적인 네트워크 망
하지만 이러한 기존 네트워크는 여러가지문제점이 많습니다.
그중 한가지는 OSI 7계층등 여러개의 연결로 네트워크를 통하여 [그림2]와 같이 프록시 장비, 방화벽, IPS/IDS등의 장비
등은 각각 OSI계층으로 분할되어 있습니다. 이러한 절차를 거치다 보면 네트워크 전송 시간이 오래 걸리며, HW+SW 등의
분할로 관리가 어려운 측면이 많습니다. 따라서 이러한 단점을 보완하기 위해 [그림3]과 같이 단일 장비(HW+SW)로 구성
해서 속도면과 장비 관리 측면이 쉬운 장점이 있습니다.
[그림2] 기존 네트워크망의 문제
[그림3] SDN 네트워 조직망
[Open Flow]
SDK에 첫번째로 지정된 표준입니다. 하드웨어 계층 레이어에서 네트워크 디바이스 컨트롤러 들과의 통신을 정의합니다.
Openflow스위치는 테이블[그림5]을 관리해 룰을 지정, 제한합니다. 각 테이블은 어플리케이션을 통해 지정할수 있고,
테이블에 없는 주소는 라우팅(포워딩)하는 기능(컨트롤러 [그림6])을 수행합니다. 리눅스 기반에서 돌아가는 어플리케이
션은 동시에 여러개의 어플리케이션이 실행이 가능하며 사용자의 필요에 맞게 SW를 설계하여 사용할수 있는 장점이 있습
니다.
[그림4] SDN 아키텍처
[그림5] Openflow 스위치 테이블
[그림6] SDK 구성 이미지
SDK의 전망
- 모든 스위치를 컨트롤러에서 처리하니 관리하기 쉽다.
- 하나의 정책에 일관되어 보안에 좋다
- 자주 움직이는 컨트롤은 새로운 포트번호 할당등을 통해 유연하게 대처가 가능하다.
- 기존의 장비보다 가격이 싼 장점이 있다.
- 구글가 아마존, IBM, CISCO, 마이크로소프트 등 SDN 장비 교체하는 추세이다.
개발
- POS : 파이썬 기반
- NOX : C++기반