패딩은 왜 하는가?

hni1124·2022년 5월 11일
0

패딩이 있다라는 건 알고 있었지만,
Printf과제 평가 중 왜 발생하는가에 대한 의문이 생겨 정리.

자료구조 내에 char형 a,b와 int형 c를 선언하면
총 6바이트 공간만 사용 할 것처럼 보이나, 사실은 그림처럼 8바이트를 사용한다.
이처럼 빈 공간이 생기는 개념이 Padding

핵심 원인 : 메모리를 읽는 프로세스가 1바이트씩 읽지 않는다.

읽어들일 때
32비트 운영체제는 한 번에 4바이트, 64비트 운영체제는 8바이트씩 읽어온다.

즉 접근할 때 +4씩만 할 수 있고 +1씩은 조절할 수 없다.

b뒤에 c를 바로 붙혀버리면 c에 접근할 때 아래와 같이 2사이클의 읽는 동작이 필요하다. (32비트)
1. c가 a부터 4바이트 이내에 있기 때문에 +4를 읽는다. => c의 4바이트 중 2바이트만을 읽는다.
2. 다시 +4바이트 이후 c의 나머지 2바이트에 접근.

패딩 적용 후 c에 접근 시
1. a의 주소에서 +4바이트만큼 띄워서 c를 한 번에 읽는다.

위와 같은 사이클의 차이가 있기 때문에 이러한 비효율성을 막기 위해 패딩을 한다.

참고자료

profile
42Seoul / 알고리즘 공부 중

0개의 댓글