CPU와 RAM이 서로 소통하는 방법

younoah·2020년 12월 29일
5

[Computer Science]

목록 보기
3/9
post-custom-banner

컴퓨터의 구성요소

  1. 메인보드
  2. 중앙처리장치(CPU)
    • CPU는 프로그램을 구체적으로 작동시키는 역할을 한다.
    • CPU는 보조기억장치에 직접 접근할 수 없다.
    • 오직 주기억 장치하고만 소통을 한다.
  3. 주기억장치(RAM : Random-Access Memory)
    • CPU가 실행시킬 프로그램들을 저장하는공간
    • 보조기억장치에서 주기억장치로 프로그램을 복사해서 온다.
  4. 보조기억장치(SSD or HDD)
  5. 그래픽카드 : GPU는 그래픽카드 안에 들어있는 CPU이다.
  6. 전원 공급장치

컴퓨터를 켤때 일어나는 일

  • 전원 공급

  • 부트 프로그램 실행 및 하드웨어 검사

    	- 메인보드에 내장되어있는 ROM BIOS를 통해 부트프로그램이 실행이된다.
    
    	- 하드웨어 검사를 수행하는 것이 메인이다.
  • 운영체제 로드

    	- 운영체제는 프로그램이며 보조기억장치에 저장이 되어있다. (주기억장치에 저장되면 전원을 끄는 순간 싹 날아간다.)
    	- 보조 기억장치는 운영체제 이의의 다양한 응용프로그램과 데이터 등을 저장하고 있다.
  • 운영체제 실행

    	- 컴퓨터가 수행되는 모든 일들은 모두 운영체제를 통해서 하는것이다.
    	- 따라서 운영체제는 매우 중요하다.

운영체제가 해주는 일들

  • 운영체제의 핵심 역할은 커널을 통해서 하드웨어를 조절하고 하드웨어와 응용프로그램 사이를 중재한다.
  • 커널은 운영체제에서 하드웨어를 처리하는 역할을 한다.
  • 또한 컴퓨터의 자원들(하드웨어- cpu, 메모리, 주기억장치.. 등등)을 누가(어떤 프로그램) 먼저 사용할지 관리해준다.
  • 사용자가 편하게 프로그램을 사용할 수 있도록 기본적인 유저 인터페이스를 제공한다.

컴퓨터는 왜 2진수를 사용할까?

컴퓨터는 모든 형태의 정보를 숫자로 바꾸어서 처리한다.

이떄 컴퓨터는 숫자를 2진수로 표현해서 사용하게 되는데 컴퓨터는 전기로 작동하기 때문에 껏다 켯다 2가지 신호만으로 작동하기 때문이다. 이 2가지 신호를 조절하고 제어하는 가장 기본적인 장치가 트랜지스터이다. 이 트랜지스터들를 아주 소형화 하여 집적해서 압축시켜 놓은것이 CPU이고 CPU에서 많은 트랜지스터들이 서로 스위치 역할을 하면서 복잡한 기능들을 수행한다.

현대적 컴퓨터의 기본구조

  • CPU, 메모리, 입출력장치 간의 소통을 할 때는 직접 소통하는것이 아닌 시스템버스를 이용하여 소통을 한다.

컴퓨터 메모리의 기본 구조

  • 램은 저장공간에 어디든 자유롭게 접근을 할수 있기 때문에 랜덤 접근이라고 한다.

  • 램은 그림과 같이 트랜지스터로 이루어진 하나의 셀이 여러개 모인 구조로 생겨있다.
  • 셀 1개당 1비트를 나타낼수 있다. (저장할수 있다.)
  • 즉, 1비트는 0이냐 1이냐 1가지의 정보를 저장한다.

CPU와 RAM이 소통하는 방법

  • CPU와 램은 시스템 버스를 통해서 소통을 하면 데이터를 주고 받는다.
  • 램의 역할은 CPU에게 데이터를 전달하거나 CPU에서 처리된 데이터를 받아와 저장하는 역할을 한다.
  • CPU와 램이 연결된 버스는 크게 3가지가 있다.
    - 컨트롤 버스 : CPU가 메모리에게 데이터를 요청하거나 저장하라고 하는 정보를 주고받는 버스
    - 주소 버스 : 메모리에서 해당 데이터의 주소 정보를 주고 받는 버스 (C언어에서 포인터의 개념이 존재하는 이유)
    - 데이터 버스 : 실제 주소에 저장되어있는 데이터를 주고 받는 버스

CPU의 기본 구조

  • 프로그램은 우선 보조기억장치에 저장이 된다.
  • 프로그램을 실행 시키려면 내부적으로 운영체제에게 요청을 한다.
  • 사용자로부터 프로글매을 실행시키라는 명령을 받은 운영체제는 보조기억장치에서 주기억장치로 프로그램을 복사한다.
  • 이후 CPU가 메모리에 있는 프로그램을 한줄 한줄씩 읽으면서 수행을 한다.

CPU가 사용하는 언어

CPU는 0과 1로 이루어진 기계어를 읽어서 동작을 한다. 이런 기계어로 제어를 하는데에 어려움이 있어서 어셈블리어, 고수준프로그래밍 언어 순으로 언어를 발전시켜서 개발자들이 편하게 프로그램을 작성하여 CPU가 그 언어를 읽어서 동작을한다.

즉,

a = 10;

이라고 작성한 고수준 프로그래밍 언어를 C언어는 1001001011011.... 과 같은 기계어로 인식하고 읽어서 동작을 한다.

  • 산술논리장치 : CPU에서 실제로 연산을 하는 곳
  • 제어 자치 : 일을 할때 관리해주는 역할을 한다.
  • 레지스터 : 산술논리장치가 연산을 하기위해 작업공간 역할을 한다. 즉, 메모리주소, 데이터, 명령 들을 임시로 저장해두고 산술논리장치와 제어장치에서 레지스터에 접근하여 연산을 한다.
profile
console.log(noah(🍕 , 🍺)); // true
post-custom-banner

0개의 댓글