동아리 활동

System Hacking : 리눅스 메모리 레이아웃 Quiz 풀이

2023. 4. 27. 12:28

System Hacking


STAGE 2 : Background - Computer Science (1/3)


Linuux Memory Layout 퀴즈 풀이

 

 

 

Quiz 1.

e는 어느 세그먼트의 데이터를 가리키는가?

#include <stdlib.h>
int a = 0xa;
const char b[] = "d_str";
int c;
int foo(int arg) {
  int d = 0xd;
  return 0;
}
int main()
{
  int *e = malloc(sizeof(*e));
  return 0;
}

A 데이터

B 힙 ✔️

C 스택

D 읽기 전용 데이터 (rodata)

E 코드

F BSS

 

 

풀이: e는 malloc()을 호출하여 메모리를 동적 할당 받았으므로 힙 세그먼트에 위치한다.

 

 

 

Quiz 2.

a가 위치하는 세그먼트는 어디인가?

#include <stdlib.h>
int a = 0xa;
const char b[] = "d_str";
int c;
int foo(int arg) {
  int d = 0xd;
  return 0;
}
int main()
{
  int *e = malloc(sizeof(*e));
  return 0;
}

A 스택

B 데이터 ✔️

C 읽기 전용 데이터 (rodata)

D 코드

E BSS

F 힙

 

 

풀이: a는 컴파일 시점에 값이 정해진 전역 변수이므로 데이터 세그먼트에 위치한다.

 

 

 

Quiz 3.

d가 위치하는 세그먼트는 어디인가?

#include <stdlib.h>
int a = 0xa;
const char b[] = "d_str";
int c;
int foo(int arg) {
  int d = 0xd;
  return 0;
}
int main()
{
  int *e = malloc(sizeof(*e));
  return 0;
}

A 힙

B 코드

C 데이터

D 읽기 전용 데이터 (rodata)

E 스택 ✔️

F BSS

 

 

풀이: d는 foo 함수의 지역 변수이므로 스택 세그먼트에 저장된다.

 

 

 

Quiz 4.

b가 위치하는 세그먼트는 어디인가?

#include <stdlib.h>
int a = 0xa;
const char b[] = "d_str";
int c;
int foo(int arg) {
  int d = 0xd;
  return 0;
}
int main()
{
  int *e = malloc(sizeof(*e));
  return 0;
}

A 힙
B 코드
C 데이터
D 읽기 전용 데이터 (rodata) ✔️
E 스택
F BSS

 

 

풀이: b는 const로 상수화 하여 값을 변하지 않게 선언해줬기 때문에 rodata (read-only-data) 세그먼트에 위치한다.

 

 

 

Quiz 5.

foo가 위치하는 세그먼트는 어디인가?

#include <stdlib.h>
int a = 0xa;
const char b[] = "d_str";
int c;
int foo(int arg) {
  int d = 0xd;
  return 0;
}
int main()
{
  int *e = malloc(sizeof(*e));
  return 0;
}

A 스택
B 힙
C 데이터
D 코드 ✔️
E BSS
F 읽기 전용 데이터 (rodata)

 

 

풀이: foo는 함수이므로 코드 세그먼트에 위치한다.

 

 

 

Quiz 6.

"d_str"이 위치하는 세그먼트는 어디인가?

#include <stdlib.h>
int a = 0xa;
const char b[] = "d_str";
int c;
int foo(int arg) {
  int d = 0xd;
  return 0;
}
int main()
{
  int *e = malloc(sizeof(*e));
  return 0;
}

A 힙
B 데이터
C BSS
D 읽기 전용 데이터 (rodata) ✔️
E 코드
F 스택

 

 

풀이: "d_str"은 상수화 된 값이 변하면 안되는 데이터이므로 rodata 세그먼트에 위치한다.

 

 

 

Quiz 7.

c가 위치하는 세그먼트는 어디인가?

#include <stdlib.h>
int a = 0xa;
const char b[] = "d_str";
int c;
int foo(int arg) {
  int d = 0xd;
  return 0;
}
int main()
{
  int *e = malloc(sizeof(*e));
  return 0;
}

A 읽기 전용 데이터 (rodata)
B 힙
C 스택
D 코드
E BSS ✔️
F 데이터

 

 

풀이: c는 컴파일 시점에 값이 정해지지 않은, 선언만 하고 초기화하지 않은 전역 변수이므로 BSS 세그먼트에 위치한다.

 

 

 

 

'동아리 활동' 카테고리의 다른 글

System Hacking : x86 어셈블리 (2)  (0) 2023.05.01
System Hacking : x86 어셈블리 (1)  (0) 2023.05.01
System Hacking : 컴퓨터 아키텍처 Quiz 풀이  (0) 2023.04.29
System Hacking : 컴퓨터 아키텍처  (0) 2023.04.28
System Hacking : 리눅스 메모리 레이아웃  (0) 2023.04.26
  1. Quiz 1.
  2. Quiz 2.
  3. Quiz 3.
  4. Quiz 4.
  5. Quiz 5.
  6. Quiz 6.
  7. Quiz 7.
'동아리 활동' 카테고리의 다른 글
  • System Hacking : x86 어셈블리 (1)
  • System Hacking : 컴퓨터 아키텍처 Quiz 풀이
  • System Hacking : 컴퓨터 아키텍처
  • System Hacking : 리눅스 메모리 레이아웃
Hicecream
Hicecream
Hicecream
Hicecream
Hicecream
전체
오늘
어제
  • 분류 전체보기 (202)
    • 코딩테스트 & 문제 풀이 (159)
    • 동아리 활동 (8)
    • 외부 활동 (0)
    • 대학 과제 (3)
    • Git & Git Hub (5)
    • 코딩 프로젝트 (4)
    • 공부 메모 (17)
    • 일상 (2)
    • 참고사항 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Bronze 2
  • programmers
  • Silver 4
  • 사칙연산
  • C
  • Java
  • C언어 기초 100제
  • python
  • 정렬
  • BOJ
  • Bronze 5
  • 문자열
  • Code up
  • Silver 5
  • 구현
  • LV1
  • Bronze 4
  • Bronze 3
  • 수학
  • Bronze 1

최근 댓글

최근 글

hELLO · Designed By 정상우.
Hicecream
System Hacking : 리눅스 메모리 레이아웃 Quiz 풀이
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.