Virtual Device 실제 시스템과 마찬가지로 VM에서는 성능, 메모리, 스토리지, 네트워킹 또는 그래픽과 같은 기능을 시스템에 제공하는 특수 장치가 필요하다. 물리적 시스템은 일반적으로 이러한 목적으로 하드웨어 장치를 사용한다. 그러나 VM은 소프트웨어 구현으로 작동하기 때문에 가상 장치라고 하는 이러한 장치에 대한 소프트웨어 추상화를 한다. 리눅스에서 virtual device란, 실제로 연결된 하드웨어가 없는 디바이스 파일을 말한다. virtual device는 sw 형태로 존재하나 hw인 척(?)을 한다. 따라서 시스템으로 하여금 특정 hw가 존재하는 것으로 착각하게 한다. 그럼 이러한 virtual device는 왜 존재하냐? 보통 OS에서 에러를 고치기 위해 사용된다고 한다. 예를 들어 ..
_IO_FILE _IO_FILE이란, fopen 등의 함수를 통해서 반환하는 함수 포인터가 가리키는 구조체를 말한다. 예를 들어 우리는 파일을 열 때 아래와 같은 코드를 사용했다. FILE *fp=fopen("./test.txt",'r') 이때 fopen을 통해 반환되는 포인터가 _IO_FILE 구조체 포인터가 되는 것이다. /* The opaque type of streams. This is the definition used elsewhere. */ typedef struct _IO_FILE FILE; _IO_FILE 구조체가 FILE로 쓰이는 것을 알 수 있다. _IO_FILE이란 구조체는 파일의 정보를 담고 있는 구조체이다. fopen을 통해서 파일을 여므로 이때 파일의 정보를 담고 있는 구조체가..
end로 점프하면 프로그램이 종료된다고 가정하자. 프로그램이 종료됐을 때, 0x400000 부터 0x400019까지의 데이터를 대응되는 아스키 문자로 변환하면 어느 문자열이 나오는가? [Register] rcx = 0 rdx = 0 rsi = 0x400000 ======================= [Memory] 0x400000 | 0x67 0x55 0x5c 0x53 0x5f 0x5d 0x55 0x10 0x400008 | 0x44 0x5f 0x10 0x51 0x43 0x43 0x55 0x5d 0x400010 | 0x52 0x5c 0x49 0x10 0x47 0x5f 0x42 0x5c 0x400018 | 0x54 0x11 0x00 0x00 0x00 0x00 0x00 0x00 ================..