목록전체 글 (26)
IT's 2 EG
메모리 레이아웃 프로그램을 실행하면, 커널은 그 Image 를 메모리에 올리고(load), 실행을 시작하는데 그 실행환경(context)와 메모리에 올라온 이미지를 프로세스라고 하며, 리눅스에서는 이를 task 라고 부른다. OS에서는 일종의 Segmentation 기법인 VMA(Virtual Memory Area)를 구현하여 한 프로세스가 Address space 를 사용할 수 있도록 한다. 이러한 Area 들은 Stack, bss, Data, Text 가 존재하며 다음과 같은 개념으로 존재한다. Text 는 Code Section 이라고 부르며, Start_routine 과 실제 프로그램 코드(실행되는 이미지)가 적재된다. 이 Section 은 읽기만 가능하며, 로더에 의해서 메모리에 로드된다. Da..
레지스터란? CPU 레지스터란 데이터를 고속으로 처리하기 위해 CPU 내부에 존재하는 다목적 저장 공간을 말한다. 디버깅을 하기 위해서는 어셈블리 명령어를 잘 알아야 하고, 이러한 어셈블리 코드를 잘 이해하기 위해서는 레지스터에 대한 이해가 필수이다. 범용 레지스터 (General Purpose Register) 32비트(4바이트)의 크기를 가지는 범용 레지스터는 주로 상수나 주소를 저장할 때 사용되며 특정 어셈블리 명령에서는 레지스터 조작을 위해 사용된다. EAX (Accumulator for operands and results data)EBX (Pointer to data in the segment)ECX (Counter for string and loop operations)EDX (I/O poi..