Virtual Memory
·
Low Level/OS
Linux 기준 하나의 Process가 메모리에서 차지하는 공간이 4GB이다. 그럼 유저의 RAM 사양이 8GB면 프로세스 2개 로드된 상태에서 끗..? 말도 안되지 근데 어떻게 이런 일이 가능한 것일까? [가상메모리? 물리메모리?] 일단 프로그램을 실행하면, 프로세스 스케쥴러가 가상메모리안에 모든 스택영역을 예약한다. 하지만 물리메모리에는 그렇지 않다. 추가적인 물리메모리가 요구될 때에만 할당한다. 그렇다. 하나의 프로세스가 4GB 만큼 예약되었다고 해서 실제로 CPU가 반드시 4GB만큼 명령어를 읽어나갈 필요는 없다. 실제로 동작할 때 (이 부분은 약간 의문이 남는다) 물리 메모리에 추가 할당된다. [가상메모리 활용 방식] IDT(Interrupt Descriptor Table), System cal..
Interrupt 동작과정 (feat. System Call)
·
Low Level/OS
Unix 계열의 어셈블리어의 3줄의 코드로 표현되는 시스템 콜 함수 인터럽트 수행과정을 살펴보자. 우선 cpu Register의 'EAX' 'EBX'부터 가볍게 눈으로 보고 넘어가자 EAX (Extended Accumulator Register) : Arithmetic Logic Operation 수행, 함수의 반환값이 이 레지스터에 저장됨. EBX (Extended Base Register): 메모리 주소를 저장하기 위한 용도 (32 bit Linux OS 기준) 시스템콜 인터럽트의 수행 과정을 살펴보자 1. 시스템콜 어셈블리 코드 실행 (살펴보기!) [Assembly Code] mov eax, 1 mov ebx, 0 int 0x80 eax : systemcall number (주소)가 저장됨 ebx:..