컴퓨터 구조
우리가 사용하고 있는 컴퓨터는 크게 CPU와 메모리, 그리고 저장 장치로 이루어져 있다.
위 3개의 구조만 가지고 컴퓨터가 돌아간단 말이다. 물론 입,출력 장치가 있으면 더 좋고 말이다.
이러한 구조를 폰 노이만 구조라고 한다.

중앙 처리 장치 CPU
컴퓨터의 연산을 처리하는 두뇌.
프로세스의 코드를 불러오고, 실행, 결과를 저장하는 모든 과정이 일어난다.
더 깊게 들어가면 ALU, Control Unit, Pipe Line, Scheduling... 등 여러가지가 있으나 여기까지만 알아도 충분하다.
기억 장치
데이터를 기억하는데 필요한 중요한 장치다.
이게 없으면 아무리 CPU가 좋아도 연산 결과를 불러오지 못한다.
주 기억장치로는 RAM이 있으며, 장기 기억장치로는 HDD, SSD가 있다.
버스
컴퓨터 부품과 부품 사이에 신호를 전송하는 통로로 대표적으로 데이터 버스, 주소 버스, 메모리 버스 등이 있다.
CPU Register
CPU는 메모리에서 데이터를 읽어와 연산을 수행하는 역할을 한다.
그러기 위해 메모리가 필요한데 CPU 내부에는 Register라는 기억 장치 하나, 외부에는 RAM이라는 주 기억 장치 하나가 있다.
RAM만 있어도 충분할 것 같은데 왜 Register가 있을까?
CPU의 연산속도는 충분히 빠르다. 이는 RAM에서 불러오는 속도보다 엄청 빠르다.
CPU의 데이터 교환을 빠르게 하기 위해 CPU 내부에 Register와 Cache라는 임시 메모리를 두어 교환 속도를 획기적으로 단축시킨다.
RAM의 일부 내용을 Cache에 미리 옮겨담고, RAM으로 쓸 내용을 CPU에서 직접 옮기는 대신 Cache에서 가져간다.
이렇게 역할분담을 해두면 CPU가 RAM의 읽고 쓰는 속도에 맞추는 병목현상에 걸릴 일이 줄어든다.
명령어 집합
Instruction Set Architecture란, CPU가 해석하는 명령어의 집합을 의미한다.
기계어로 구성된 ISA를 CPU가 읽고 처리한다.
ISA는 x86, ARM, AVR등 다양하게 존재하는데, 이는 모든 컴퓨팅 장치가 동일 수준의 연산 능력을 요구하지 않으며, 컴퓨팅 환경과 목적이 다양하기 때문이다.
X86-64 아키텍처
x64는 인텔의 64비트 CPU의 아키텍처다.
인텔의 32비트 CPU 아키텍처인 IA-32를 64비트에서 쓸 수 있게 만든 것.
CPU가 이해할 수 있는 데이터의 단위를 WORD라고 하는데, 32비트상에선 1WORD가 4바이트가 된다.
그럼 64비트 환경에서는 1WORD를 8바이트라고 지정할 수 있다.
이렇게 WORD가 크면 CPU가 제공할 수 있는 가상 메모리의 크기를 크게 잡을 수 있게 된다.
레지스터
레지스터는 CPU가 데이터를 빠르게 저장하고 사용할 때 이용하는 보관소이다.
x64 아키텍처에서는 범용 레지스터, 세그먼트 레지스터, 명령어 포인터 레지스터, 플래그 레지스터가 있다.
레지스터 : 범용 레지스터
주 용도는 있으나 다양한 용도로 사용될 수 있는 레지스터.

레지스터 : 세그먼트 레지스터
x64로 아키텍처가 확장되며 용도에 큰 변화가 생긴 레지스터다.
cs. ss. ds. es. fs. gs의 6가지 세그먼트 레지스터가 있으며, 코드 영역과 데이터, 스택 메모리 영역을 가리킬 때 사용되는 레지스터다.
레지스터 : 명령어 포인터 레지스터
rip라고 불리는 레지스터 이며, 다음 명령어가 실행될 위치를 가리킨다.
레지스터 : 플래그 레지스터
프로세서의 현재 상태를 저장하고 있는 레지스터.

레지스터 호환
x86-64 아키텍처는 IA-32의 64비트 확장 버전이며, 호환이 가능하다.

32비트 환경에서는 E로 시작하는 레지스터를 썼다.
예를 들면 RAX는 EAX의 64비트 확장판이며, EAX는 다시 AX와 AX가 아닌 부분으로 나뉜다.
또 다시 AX는 AH와 AL로 나뉜다.
'컴퓨터 과학 > 시스템보안' 카테고리의 다른 글
| 스택 버퍼 오버플로우 공격3 (0) | 2024.11.27 |
|---|---|
| 스택 버퍼 오버플로우 공격2 (1) | 2024.11.26 |
| 스택 버퍼 오버플로우 공격 (0) | 2024.11.22 |
| 스택 메모리의 호출 관계 (0) | 2024.11.22 |
| 리눅스 메모리 레이아웃 (0) | 2024.11.21 |