PCB 내부에 무엇이 들어있나 갑자기 궁금해졌다.
그 안에는 레지스터의 여러 종류들이 보였고,
레지스터에 대해 좀 더 알고 싶어서 포스팅을 만든다.
✨ Address Registers
- PC (Program Counter, 프로그램 카운터)
- PC는 일반적으로 순차적으로 진행
- 현재 실행 중인 명령어의 다음 위치 가르키는 주소 저장
- 순차적 실행 흐름이 끊기는 경우
- 특정 메모리 주소로 실행 흐름을 이동하는 명령어
- 인터럽트 발생
- 함수 호출 시 PC 값을 스택에 저장하고, 함수 호출이 끝나면 스택에 저장된 값이 다시 PC로 복귀
- MAR (Memory Address Register, 메모리 주소 레지스터)
- 메모리에서 데이터를 읽거나 쓸 때 필요한 메모리 주소 저장
- SP (Stack Pointer, 스택 포인터)
- 스택 구조에서 가장 최근에 추가된 데이터 주소 가르킴
- 스택 포인터가 가르키는 주소는 가상주소
- 일반적으로 높은 주소에서 낮은 주소로 확장
- 스택 포인터 주로 사용되는 상황
- 함수 호출 시
- 매개변수, 반환 주소, 지역 변수를 스택에 저장
- 스택 포인터는 스택의 최상단 가르킴
- 함수 반환 시
- 스택에 저장된 반환 주소로 이동
- 스택 포인터를 이전 위치로 되돌림
- 지역 변수 또는 임시 데이터
- 함수 호출 시
- Base Register (베이스 레지스터)
- 스택 내에서 기준 위치
- 함수 호출 시 고정된 기준점 역할
- 함수 호출되면 스택 포인터 값이 베이스 레지스터에 복사 (고정 기준점)
- Segment Register (세그먼트 레지스터)
- 세그먼트 단위로 나누어 관리
- Code / Data / Stack / Extra Segment 등등
✨ Date Registers
- IR (Instruction Register, 명령어 레지스터)
- 현재 CPU가 실행하고 있는 명령어
- PC가 가리키는 메모리 주소에서 명령어 가져옴
- 명령어 = 연산자 + 오퍼랜드
- MBR (MBR, 메모리 버퍼 레지스터)
- 메모리에서 읽어온 데이터 또는 쓸 데이터 임시 저장
- 메모리와 CPU 간의 데이터 전송 과정에 중요
- General Purpose Register (범용 레지스터)
- CPU 연산에 사용되는 다목적 레지스터
- 일반적인 데이터 저장 또는 연산에 수행
- Flag Register (플래그 레지스터)
- 연산 결과에 따라 다양한 상태 플래그
- Zero / Sign / Carry / Overflow 등
위에 버퍼라는 단어가 나왔다. 버퍼 또한 속도를 위해 데이터를 저장한다.
그러면 버퍼와 캐시의 차이는 무엇일까 ?
- 버퍼
- 데이터 일지적 저장소
- 데이터 전송 속도 차이 조정
- 원활한 데이터 흐름 보장
- 주로 I/O 장치와 CPU 간의 데이터 전송에 사용
- 장치 간의 속도 차이 완충
- 캐시
- 데이터를 저장하여 접근 속도 높힘 (속도 최적화 목적)
- 자주 접근하는 데이터 중복 저장
- CPU, 디스크, 웹 브라우저 캐시 등 존재
'CS' 카테고리의 다른 글
Pintos Project1 -키워드 정리 (코드로 이해하기) / 프로세스, 스레드, 멀티 스레딩 문제 (0) | 2024.11.02 |
---|---|
네트워크 소켓 및 함수 정리 (CS:APP) (1) | 2024.10.29 |
네트워크 핵심 키워드 정리 (네트워크 계층,소켓,CGI,HTTP,Proxy 등등) (2) | 2024.10.28 |
정렬 알고리즘 (삽입,선택,버블,셸,퀵,힙,병합 정렬) (0) | 2024.09.11 |
1장. 컴퓨터 시스템 (Computer Systems A Programmer's Perspective) (1) | 2024.09.08 |