Byte Alignment ㈜ 웰컴정보시스템 김 정 은.

Slides:



Advertisements
Similar presentations
03 변수와 자료형 세종대학교 최옥경 교수 참고 : 한빛미디어 뇌를 자극하는 C, INFINITY Perfect C.
Advertisements

멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
Power C++ 제6장 포인터와 문자열.
C 언어 기초 2 위덕대학교 에너지전기공학부 이 수 형 2009년 2학기.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
2005년 배출업소 환경관리실태 평가결과 환 경 부.
8. 객체와 클래스 (기본).
2강. JAVA 프로그래밍이란?-II & 변수 JAVA 프로그램 환경설정과 실행 방법 변수란?
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
Department of Computer Engineering
쉽게 풀어쓴 C언어 Express 제18장 입출력과 라이브러리 함수 C Express.
Kasimov C언어 세미나 1st.
구조체 struct 구조체와 함수 구조체의 배열, sizeof 연산자 열거형 enum 형 정의 typedef
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
head data link data link data link NULL a b c
자료 구조: Chapter 3 (2)구조체, 포인터
제 18 강 데이터 타입 타입, 변환, 캐스팅 shcho.pe.kr.
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express.
Department of Computer Engineering
동적메모리와 연결리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
프로그래밍 서울대학교 통계학과 2009년 2학기 컴퓨터의 개념 및 실습 (
7장 배열 배열의 정의 배열의 초기화 1차원 배열 2차원 및 다차원 배열 문자 배열 배열과 구조.
Chapter 10. 포인터.
아날로그 VS 디지탈 -. Analog Vs Digital -. 디지털 논리에 대하여 -. 메모리에 대하여
제 3 장 상수와 변수
임베디드 소프트웨어 설계.
프로그래밍실습 제 13 강.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
5장. 상수와 기본 자료형. 5장. 상수와 기본 자료형 5-1 C 언어가 제공하는 기본 자료형 자료형(data type) 기본 자료형 사용자 정의 자료형 int val; "선언할 변수의 특징을 나타내기 위한 키워드" 기본 자료형 기본적으로 제공이 되는 자료형 사용자.
9장 데이터링크층 소개 (Introduction To Data-Link Layer)
헤더 파싱 ( Header Parsing ).
23강 API - II - 약방의 감초 Random 클래스 - Scanner 및 Sysout - Wrapper 클래스의 이해
13. 포인터와 배열! 함께 이해하기.
Windows 환경에서 동작하는 Arm Emulator(Simulator)
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
Java의 정석 제 2 장 변수(Variable) Java 정석 남궁성 강의
Chapter 04 자료 유형.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
컴퓨터공학실습(I) 3주 인공지능연구실.
Chapter 04. 데이터의 표현과 연산(Ⅱ).
4장 자료형.
학습목표 Chapter 2-1. 변수와 포인터 변수의 선언과 변수에 대한 메모리 할당을 살펴본다.
2 배열과 구조.
nauten Compiler – Report Ver.3 Mini-C (주간)
Department of Computer Engineering
18장. 다차원 배열 그리고 포인터.
자료구조 (Data Structure).
03. 메모리 관리 C++ 프로그램에서 다룰 수 있는 메모리의 종류
자바 5.0 프로그래밍.
GDB - GNU Debugger 김진용.
컴퓨터 프로그램은 여러 기능의 복합체이다. 라이브러리 함수와 사용자 정의 함수
C언어 프로그래밍의 이해 Ch03. 기본 자료형, 변수와 상수.
컴퓨터 프로그래밍 기초 - 11th : 파일 입출력 및 구조체 -
성공적인 입사지원서 작성법 제이비커리어 교육수석 소 은 선.
▶서류관리 프로그램 1. 로그인….2 2. 서류등록 … 서류도착 서류스티커발행
3주차: Control Flow and Others
C.
printf("Global Korea\n");
C++ 언어의 특징
3b장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
Presentation transcript:

Byte Alignment ㈜ 웰컴정보시스템 김 정 은

Byte Alignment 란? 32bit machine 에서 32bit bus line 을 활용하여 메모리를 access 한다. 프로세서의 성능 향상을 위하여 주소버스가 4의 배수형태의 주소만 access 하다. 어떤 객체(4byte) 가 4의 배수형 주소에 있지 않다면 메모리 access 를 2번 해야 한다. 이에 따라 각 변수는 저장 될 수 있는 주소의 번지 패턴이 있다. 이 모든것은 최적화를 위한 것이다.

General Byte Alignment Rules 2byte 형은 2byte boundary 에 정렬 4byte 형은 4byte boundary 에 정렬 Double (8byte) 형은 windows 에서는 8byte, 리눅스에서는 4byte boundary 가 된다. 배열은 그 형에 따라 boundary가 결정 align되어 있지 않는 주소를 잘못 쓸 경우 "bus error"라는 치명적인 오류 발생

Structure Byte Padding 구조체의 멤버들이 byte alignment 을 해야 하는 관계로 멤버들 사이에 임의의 공간이 생기는 현상(padding byte). 구조체의 경우 멤버 중 가장 큰 데이터 타입의 배수값으로 크기가 결정 alignment of starting address of a struct depends on the compiler and the platform

지역변수의 byte alignment char c :: 0022FF73 2293619 int main() { int i=0; char c=0; printf("char c :: %p %d\n",&c,&c); printf("int i :: %p %d\n",&i,&i); return 0; } int main() { char c=0; int i=0; printf("char c :: %p %d\n",&c,&c); printf("int i :: %p %d\n",&i,&i); return 0; } char c :: 0022FF73 2293619 int i :: 0022FF74 2293620 char c :: 0022FF77 2293623 int i :: 0022FF70 2293616 변수의 위치가 달라져도 ( 정렬 순서 ) 바이트 alignment 는 지켜짐

구조체의 padding 과 크기 Int 형이 가장 큰 데이터 형 Int 배수 형태가 크기(12)로 결정 struct Message { char Data1; short Data2; int Data3; char Data4; }; int main() printf("%d \n", sizeof(struct Message)); return 0; } 결과 : 12 ( 예상 - 8 ) struct MixedData /* after compilation */ { char Data1; char Padding0[1]; // short 는 2의 배수 short Data2; int Data3; char Data4; char Padding1[3]; // }; Int 형이 가장 큰 데이터 형 Int 배수 형태가 크기(12)로 결정

Malloc 과 Alignment GNU malloc()은 8byte로 align되어 있는 값을 리턴