[OS] 운영체제 공부 - 컴퓨터의 구조와 성능 향상(1)(CPU, 입출력 장치, 저장 장치, 메인보드, 폰노이만 구조, 산술논리 연산장치, 제어 장치, 레지스터)

양다혜·2021년 1월 25일
1

운영체제공부

목록 보기
1/2
post-thumbnail

학기중에 운영체제 수업을 들었지만 온라인이기도 했고, 이런저런 핑계로 제대로 학습하지 않아서 다시한번 공부하는 시간을 가져보려고한다.ㅠㅠ
혼자 공부하면서 그냥 노트에 적듯 작성한 것이고, 내가 보려고 쓰는거다!!🙂

컴퓨터의 기본 구성

하드웨어의 구성

  • 필수장치: 중앙처리장치, 메인메모리
  • 주변장치: 입력장치, 출력장치, 저장장치

필수장치: 중앙처리장치(CPU), 메인메모리(RAM, ROM)

주변장치: 입력장치, 출력장치, 저장장치

주변장치는 CPU가 직접 접근할 수 없음

앞으로의 용어는 다음과 같이 통일함

  • 메인메모리 → 메모리
  • 보조저장장치 → 저장장치
  • 중앙처리장치 → CPU

CPU와 메모리

  • CPU: 메모리를 해석하여 실행하는 장치로, 인간으로 치면 두뇌에 해당
  • 메모리: 작업에 필요한 프로그램과 데이터를 저장하는 장소로, 바이트 단위로 분할되어 있으며 분할 공간마다 주소(address)로 구분

입출력장치

  • 입력장치: 외부의 데이터를 컴퓨터에 입력하는 장치
  • 출력장치: 컴퓨터에서 처리한 결과를 사용자가 원하는 형태로 출력하는 장치

저장장치

  • 메모리보다 느리지만 저렴하고 용량이 큼
  • 전원의 온,오프와 상관없이 데이터를 영구적으로 저장
    • 자성 이용: 카세트테이프, 플로피디스크, 하드디스크
    • 레이저 이용: CD, DVD, 블루레이디스크
    • 메모리 이용: USB 드라이버, SD카드, SSD

메인보드

  • CPU와 메모리 등 다양한 부품을 연결하는 커다란 판
  • 전력이 공급되면 버스(bus=명령어, 데이터가 이동하는)로 연결된 부품이 작동
  • 그래픽카드, 사운드카드, 랜카드 등이 기본적으로 장치되어있기도 하고, 성능을 향상하기 위해 따로 장착하기도 함

폰노이만 구조(프로그램 내장 방식)

  • CPU, 메모리, 입출력장치, 저장장치가 버스로 연결되어 있는 구조
  • 하드웨어는 그대로 둔 채 작업을 위한 프로그램만 교체하여 메모리에 올리는 방식
  • 모든 프로그램은 메모리에 올라와야 실행할 수 있다.

요리사 모형에 비유

  • 요리사 = CPU

  • 도마 = 메모리

  • 보조 요리사, 주방 보조 = 입출력장치

  • 보관 창고 = 저장장치

  • 도마가 크면 재료를 모두 가져다놓고 요리할 수 있음, But 도마가 작으면 모두 가져올 수 없음

⇒ 메모리 크기가 작으면 작업 속도가 떨어짐

하드웨어 사양 관련 용어

  • 클록: 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)

  • 플래그 같은 상태 정보를 저장
  • 프로그램이 수행되는 순간 마다 프로그램의 수행 상태와 프로세서 상태를 나타냄
profile
아는 것을 잘 설명할 수 있는 개발자되기👩🏻‍💻

2개의 댓글

comment-user-thumbnail
2021년 6월 25일

잘 읽었습니다 :) 프로그램 상태 레지스터에 대한 설명도 있으면 좋을 것 같아요!

1개의 답글