학기중에 운영체제 수업을 들었지만 온라인이기도 했고, 이런저런 핑계로 제대로 학습하지 않아서 다시한번 공부하는 시간을 가져보려고한다.ㅠㅠ
혼자 공부하면서 그냥 노트에 적듯 작성한 것이고, 내가 보려고 쓰는거다!!🙂
컴퓨터의 기본 구성
하드웨어의 구성
- 필수장치: 중앙처리장치, 메인메모리
- 주변장치: 입력장치, 출력장치, 저장장치
필수장치: 중앙처리장치(CPU), 메인메모리(RAM, ROM)
주변장치: 입력장치, 출력장치, 저장장치
주변장치는 CPU가 직접 접근할 수 없음
앞으로의 용어는 다음과 같이 통일함
- 메인메모리 → 메모리
- 보조저장장치 → 저장장치
- 중앙처리장치 → CPU
CPU와 메모리
- CPU: 메모리를 해석하여 실행하는 장치로, 인간으로 치면 두뇌에 해당
- 메모리: 작업에 필요한 프로그램과 데이터를 저장하는 장소로, 바이트 단위로 분할되어 있으며 분할 공간마다 주소(address)로 구분
입출력장치
- 입력장치: 외부의 데이터를 컴퓨터에 입력하는 장치
- 출력장치: 컴퓨터에서 처리한 결과를 사용자가 원하는 형태로 출력하는 장치
저장장치
- 메모리보다 느리지만 저렴하고 용량이 큼
- 전원의 온,오프와 상관없이 데이터를 영구적으로 저장
- 자성 이용: 카세트테이프, 플로피디스크, 하드디스크
- 레이저 이용: CD, DVD, 블루레이디스크
- 메모리 이용: USB 드라이버, SD카드, SSD
메인보드
- CPU와 메모리 등 다양한 부품을 연결하는 커다란 판
- 전력이 공급되면 버스(bus=명령어, 데이터가 이동하는)로 연결된 부품이 작동
- 그래픽카드, 사운드카드, 랜카드 등이 기본적으로 장치되어있기도 하고, 성능을 향상하기 위해 따로 장착하기도 함
폰노이만 구조(프로그램 내장 방식)
- CPU, 메모리, 입출력장치, 저장장치가 버스로 연결되어 있는 구조
- 하드웨어는 그대로 둔 채 작업을 위한 프로그램만 교체하여 메모리에 올리는 방식
- 모든 프로그램은 메모리에 올라와야 실행할 수 있다.
요리사 모형에 비유
⇒ 메모리 크기가 작으면 작업 속도가 떨어짐
하드웨어 사양 관련 용어
- 클록: CPU의 속도와 관련된 단위 → 클록이 일정 간격으로 틱을 만들면 거기에 맞추어 CPU안의 모든 구성 부품이 작업
- 헤르츠(Hz): 클록 틱이 발생하는 속도를 나타내는 단위
1초에 클록틱 1번 = 1Hz, 1000번이면 1kHz
ex) 3.4GHz는 1초에 클록틱이 3,400,000,000번 발생한 것
- 시스템 버스: 메모리와 주변장치를 연결하는 버스로 FSB(Front-Side Bus) 즉, 전면 버스
- CPU 내부 버스: CPU 내부에 있는 장치를 연결하는 버스로 BSB(Back-Side Bus) 즉, 후면버스
- CPU와 메모리의 속도: CPU는 CPU 내부 버스의 속도로 작동하고 메모리는 시스템 버스의 속도로 작동
CPU와 메모리
CPU
- 명령어를 해석하여 실행하는 장치(산술논리 연산장치, 제어장치, 레지스터로 구성)
산술논리 연산장치(ALU: Arithmetic and Logic Unit)
데이터의 산술 연산(덧셈, 뺄셈, 곱셈, 나눗셈)
과 논리 연산(AND, OR)
을 수행
제어장치(Control Unit)
CPU에서 작업을 지시하는 부분
레지스터(Register)
데이터를 임시로 보관하는 곳
CPU는 필요한 데이터를 메모리에서 가져와 레지스터에 저장하고 산술논리 연산장치를 이용하여 연산을 한 후, 그 결과를 다시 레지스터에 저장했다가 메모리로 옮김
주요 레지스터 종류와 특징
<사용자 가시 레지스터(사용자가 접근할 수 있는)>
데이터 레지스터(DR, Data Register)
- 메모리에서 가져온 데이터를 임시로 보관할 때 사용
- CPU에 있는 대부분의 레지스터가 데이터 레지스터이기 때문에 일반 레지스터 또는 범용 레지스터라고 부름
주소 레지스터(AR, Address Register)
- 데이터 또는 명령어가 저장된 메모리의 주소를 저장
<사용자 불가시 레지스터(사용자가 접근할 수 없는, 오직 운영체제만 접근 가능한)>
프로그램 카운터(PC, Program Counter)
- 다음에 실행할 명령어의 주소를 기억하고 있다가 제어장치에게 알려줌
- 다음에 실행할 명령어의 주소를 가리키기 때문에 프로그램 카운터를 명령어 포인터라고도 함
명령어 레지스터(IR, Instruction Register)
- 현재 실행중인 명령어 저장
- 제어장치는 명령어 레지스터에 있는 명령을 해석한 후 외부 장치에 적절한 제어 신호를 보냄
메모리 주소 레지스터(MAR, Memory Address Register)
- 메모리에서 데이터를 가져오거나 반대로 메모리로 데이터를 보낼 때 주소를 지정하기 위해 사용
- 명령어를 처리하는 과정에서 필요한 메모리 주소를 해당 레지스터에 넣으면 메모리 관리자가 이를 인식하여 해당 메모리 위치의 데이터를 가져오거나 해당 메모리 위치에 데이터를 저장함
메모리 버퍼 레지스터(MBR, Memory Address Register)
- 메모리에서 가져온 데이터나 메모리로 옮겨갈 데이터를 임시로 저장
- 항상 메모리 주소 레지스터와 함께 동작
프로그램 상태 레지스터(Program Status Register)
- 플래그 같은 상태 정보를 저장
- 프로그램이 수행되는 순간 마다 프로그램의 수행 상태와 프로세서 상태를 나타냄
잘 읽었습니다 :) 프로그램 상태 레지스터에 대한 설명도 있으면 좋을 것 같아요!