이론/buffer overflow_달고나bof

8086 Memory Architecture

O'bin 2022. 3. 29. 14:28

 

 

 

<- 8086 시스템의 기본 메모리 구조

 

 

 

기본적으로 커널은 64KByte영역, 최근 OS는 더 큰 영역 사용

 

 

 

 

 

32bit 시스템에서 CPU가 한번에 처리할 수 있는 데이터 단위 : 32bit  ->  메모리 주소 할당 범위 0~2^32-1

64bit 시스템(최근 pc, 서버급)        〃                             : 64bit  ->  메모리 주소 할당 범위 0~2^64-1

 

 

 

OS는 하나의 프로세스 실행시키면 프로세스를 segment 단위로 묶어 가용 메모리 영역에 저장

           ↓

 

 

multi-tasking

memory에 여러개의 프로세스가 저장되어 병렬적 작업 수행

 

 

 

 

 

 

 

 

segment

하나의 프로세스를 묶은 것

실행 시점에 실제 메모리의 어느 위치에 저장될 지 결정됨

시스템에는 최대 16,383개 sement 생성 가능

하나의 segment 최대 크기 : 2^32byte

 code segment : instructions 들어 있음

segment에서는 logical address 사용

logical address는 physical address 와 매핑되어있음

 

 

physical address = offset + logical address

 

 

 

 

segment's physical address : 0x80010000

instruction IS1's  physical address

= 0x00000100(logical add) + 0x80010000(segment offset)

= 0x80010100

 

 Data segment  : 프로그램 실행 시 사용되는 데이터(전역변수)

 Stack Segment  : 현재 수행중인 handler, task, program 저장, 버퍼 저장, multiple stack 생성, 스택 간 switch, 지역변수 저장

 

 

 

 

SP(stack pointer)

stack 꼭대기 가리키는 레지스터

데이터 저장=PUSH, 데이터 읽기=POP

 

'이론 > buffer overflow_달고나bof' 카테고리의 다른 글

프로그램 실행 시 Segment 에서는  (0) 2022.07.17
8086 CPU 레지스터 구조  (0) 2022.03.29