넥스지에서 주어진 업무가 Crypto 기능을 Sync 에서 ASync 로 변경하는 일이어서 관련 문서들을 살펴보고 있다. 

Documentation/crypto/api-intro.txt 를 살펴보고 있는데 아래와 같이 시작을 하고 있다.


Scatterlist Cryptographic API

InTRODUCTION
The Scatterlist Crypto API takes page vectors(scatterlists) as arguments, and works directly on pages. In some cases(e.g. ECB mode ciphers), this will allow for pages to be encrypted in-place with no copying.
 
 
Scatter/gather 는 함께 움직이는 개념이다. 

Scatter 의 사전적 의미는
  scatter [skt]   단어장에 추가
  1.…을 뿌리다, 흩뿌리다, 살포하다, [씨]를 뿌리다[on, over, with ].
  2.흩어지다, 뿔뿔이 헤어지다, 분산하다.
  
 이고,

Gather 의 사전적 의미는

  gather
 [g]   단어장에 추가
  1.모으다, 끌어[긁어]모으다(in, up, together); [물건]을 하나하나 줍다.
 

DMA 전송에 있어서 데이터가 물리 메모리 상에 일렬로 정렬되어 있는 것은 아주 중요한 요소이다.

 커널 영역에서 메모리 관리를 할 때는 어렵긴 하지만(오버헤드가 크지만) 물리 메모리에 일렬로 정렬해서 사용하는 것이 가능하지만 사용자 영역에서는 이렇게 할 수가 없다.
 
 커널 영역에서 메모리를 물리 영역에 일렬로 정리해서 쓰는것이 가능하다고 했지만 여기 저기 흩어져 있는(Scatter) 메모리를 일렬로 정렬되어 있는 것처럼 사용할 수 있다면 좀더 편한 관리가 가능할 것이다. 

 다시 정리하면 Scatter/Gather 의 개념은 여기 저기 흩어져 있는 메모리(Scatter) 를 논리적으로 모아서(Gather) 연속된 물리적 메모리처럼 사용하는 것을 의미하며 Scatterlist 는 여기 저기 흩어져 있는 메모리(Scatter) 의 모음(array) 라고 보면 된다.

 DMA 전송에 사용되는 개념이다. 

    struct scatterlist{
      struct page *page;
      unsigned int offset;
      dma_addr_t dma_address;
      unsigned int length;
    } 

위 구조체를 보면 알겠지만 하나의 흩어져 있는 메모리의 정보를 담을 수 있도록 되어 있고 위 구조체가 여러개 모이면 마치 하나의 연속된 메모리처럼 동작시킬 수 있게 된다. 

아래 파일은 Scatter list 에 대한 간략한 diagram 이다. 
 

'development' 카테고리의 다른 글

[crypto] ASync crypto 와 Sync crypto api 함수명 특징  (0) 2011.10.10
[linux_kernel] scatterlist example  (0) 2011.09.27
[HW] TTL 과 RS232 에 대한 정리  (0) 2011.09.26
[HW] TTL Level 과 CMOS Level  (0) 2011.09.26
[crypto] IPSec  (0) 2011.09.23
블로그 이미지

김유석0

,