<- 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 |