2-2.[os] CPU와 메모리
CPU의 기본구성
- CPU: 요리사
- 산술논리 연산장치: 요리
- 작업 지시: 제어장치
- 레지스터: 재료 임시 보관
산술논리 연산장치
- CPU에서 데이터를 연산하는 장치
- 산술연산(+,-,x,&)
- 논리연산(AND, OR)
제어장치
- CPU에서 작업을 지시하는 부분
레지스터
- CPU 내에 데이터를 임시로 보관하는 곳
변수명: 데이터를 저장할 수 있는 메모리 주소의 다른 이름
- CPU: 기계어(machine code: 0과 1의 2진수)만 인식함
- 코드를 실행하려면 컴파일러를 이용하여 기계어로 바꿈
- 레지스터: CPU가 연산을 하려면 필요한 데이터를 CPU로 가져와 임시로 보관
흐름
- 메모리: 메모리에서 레지스터로 데이터를 가져옴
- 레지스터
- 산술논리 연산장치: 연산
- 레지스터: 결과값 레지스터 저장
- 메모리: 레지스터에 저장된 값을 메모리로 옮김
레지스터
가시 레지스터(user-visible register)
사용자 프로그램에 의해 변경됨
- 데이터 레지스터(DR): 메모리에서 가져온 데이터를 임시 보관
- 주소 레지스터(AR): 데이터 또는 명령어가 저장된 메모리의 주소
특수 레지스터
- 사용자가 임의로 변경할 수 없음
사용자 불가 레지스터 (user-invisible register)
- 프로그램 카운터(PC)
- CPU는 다음에 어떤 명령어를 처리해야 할지 알아야 한다
- 다음에 실행할 명령어의 주소를 기억하고 있다가 제어장치에 알려준다
= 명령어 포인터 (다음에 실행할 명령어의 주소를 가리키기 때문에)
명령어 레지스터(IR)
현재 실행 중인 명령어를 저장
메모리 주소 레지스터(MAR)
- 메모리에서 데이터를 가져오거나 보낼 때 주소를 지정하기 위해 사용
명령어를 처리하는 과정에서 필요한 메모리 주소를 여기에 넣으면 메모리 관리자가 이를 인식하여 해당 메모리 위치의 데이터를 가져오거나 해당 메모리 위치에 데이터를 저장
메모리 버퍼 레지스터(MBR)
- 메모리에서 가져온 데이터나 메모리로 옮겨 갈 데이터를 임시로 저장
흐름:
- 프로그램 카운터
- 명령어 레지스터
- 메모리 주소 레지스터
- 메모리 버퍼 레지스터
버스
- CPU와 메모리, 주변 장치 간에 데이터를 주고받을 때 사용
- 다음 작업을 지시하는 제어 신호 + 메모리의 위치 정보를 알려주는 주소 + 처리할 데이터
제어 버스
- 다음 작업을 지시하는 제어 신호를 보냄
- 읽기, 쓰기 신호
- CPU의 제어장치 <-> 제어버스 <-> 메모리
주소 버스
- 위치 정보 전달
- 어느 위치에서 작업할 것인지 메모리에게 알려준다
- CPU의 메모리 주소 레지스터 -> 주소버스 -> 메모리
데이터 버스
- 데이터가 목적지까지 이동
- CPU의 메모리 버퍼 레지스터 , 메모리 <-> 데이터버스 <-> 주변장치
버스의 대역폭
- 한 번에 전달할 수 있는 데이터의 최대 크기
- ex) 32bit, 64bit
- 버스의 대역폭 = 레지스터의 크기 = 메모리에 한 번에 저장할 수 있는 데이터의 크기
- 워드(word): CPU가 한 번에 처리할 수 있는 데이터의 최대 크기
- 64bit CPU의 1워드는 64bit
메모리
- 모든 프로그램은 메모리에 올라와야 실행될 수 있다
bit
- 메모리를 이루는 소자 하나의 크기
- 0 또는 1이 저장된다
메모리 = 램 or 롬
램 (RAM, Random Access Memory)
- 읽거나 쓸 수 있다
- 무작위로 데이터를 읽어도 저장된 위치와 상관없이 같은 속도로 데이터를 읽을 수 있다
롬 (ROM, Read Only Memory)
읽기만 가능
휘발성 메모리(volatility memory):
- DRAM (Dynamic RAM, 동적 램)
- 저장된 0과 1의 데이터가 일정 시간이 지나면 사라져 다시 일정 시간마다 재생해야한다
- ex) 메인메모리
- SRAM (Static RAM, 정적 램)
- 전력이 공급되는 동안 남아있다
- 속도는 빠르지만 가격이 비싸다
- ex) 캐시
- SDRAM (Synchronous Dynamic Random Access Memory)
- DRAM이 발전된 형태
비휘발성 메모리:
램은 전력이 끊겨도 데이터가 안 사라짐
플래시 메모리(flash memory)
- 전력이 없어도 데이터를 보관하는 저장장치
- ex) 디지털카메라,MP3 플레이어, USB 드라이버
- 플래시 메모리의 각 소자는 최대 사용 횟수가 제한되어 보통 소자 하나당 몇 천 번에서 만번 정도 사용하면 제 기능을 잃는다
- SD 카드나 USB 드라이버를 오래 사용하면 성능이 저하되거나 데이터를 잃어버릴 수 있다
FRAM (Ferroelectric RAM)
PRAM (Phase change RAM)
롬
- 전력이 끊겨도 데이터를 보관하는 것이 장점
- 데이터를 한 번 저장하면 바꿀 수 없다
- 빈 CD는 CD-ROM이라고함
메모리 보호
- CPU는 현재 진행 중인 작업의 메모리 시작 주소를 경계 레지스터 (bound register)에 저장한 후 작업한다.
- 현재 진행 중인 작업이 차지하고 있는 메모리의 크기 (마지막 주소까지의 차이)를 한계 레지스터(limit register)에 저장
- 두 레지스터의 주소 범위를 벗어나는지 하드웨어적으로 점검
- 작업이 데이터를 읽거나 쓸 때마다 CPU는 해당 작업이 경계 레지스터와 한계 레지스터의 주소값 안에서 이루어지는지 검사
- 값 벗어남 -> 인터럽트 -> 모든 작업 중단 -> 처리
부팅
- 컴퓨터를 켰을 때 운영체제를 메모리에 올리는 과정
- 운영체제도 CPU에 의해 실행되는 프로그램이기 때문에 당연히 메모리 에 올라와야 한다
전원을 켬 -> 바이오스 실행 -> (하드디스크 -> 마스터 부트 레코드 -> 부트스트랩 코드) ->
바이오스 - CPU, 메모리, 하드디스크, 키보드, 마우스와 같은 주요 하드웨어가 제대로 작동하는지 확인
마스터 부트 레코드 (Master Boot Record, MBR): 하드디스크의 첫 번째 섹터, 운영체제를 실행하기 위한 코드인 부트스트랩(bootstrap)이 이곳에 저장되어 있다
부트스트랩 코드: 운영체제를 메모리로 가져와 실행하는 역할을 하는 작은 프로그램
하드디스크의 마스터 부트 레코드에 있는 부트스트랩이 메모리에 올라오면 하드디스크에 저장된 운영체제를 메모리로 불러온다