컴퓨터의 구조와 성능 향상

메론보이·2024년 4월 26일
0

운영체제

목록 보기
2/11

컴퓨터의 기본구성

하드웨어 구성

  • 메인메모리의 경우 전력이 끊기면 데이터를 잃어버리기 떄문에 데이터를 영구히 보관하려면 다르디스크나 USB메모리를 사용해야 함
  • 메인메모릴를 제1 저장장치 하드디스크나 USB 메모리 같은 메모리를 제2저장장치 또는 보조저장장치라고함

CPU와 메모리

CPU

정의

  • CPU는 컴퓨터의 두뇌 역할을 하며, 모든 지시사항을 처리하고 명령을 실행하는 핵심 컴퓨터 하드웨어 구성요소
  • 프로그램 명령을 따르고, 데이터를 처리하며, 입/출력 작업을 관리함

왜 쓰는지

  • CPU는 컴퓨터 시스템의 성능을 결정짓는 핵심 요소
  • 모든 계산, 데이터 처리 및 시스템 명령 실행은 CPU를 통해 이루어짐

언제 쓰는지

  • 컴퓨터가 켜져 있고 작동하는 순간부터, 운영 체제를 로드하고, 사용자의 명령을 처리하며, 애플리케이션을 실행할 때까지 CPU는 지속적으로 사용

어떻게 쓰는지

  • CPU는 소프트웨어의 명령을 받아서 처리함
  • 프로그래밍 언어로 작성된 코드는 컴파일되어 CPU가 이해할 수 있는 기계어로 변환되며, CPU는 이 기계어 명령을 실행

사용 예시:

웹 브라우징, 문서 작성, 게임 플레이 등 일상적인 컴퓨팅 작업.
고성능 게임이나 그래픽 디자인 소프트웨어 실행 시 고사양 CPU 사용.
서버 CPU는 데이터 센터에서 복잡한 계산과 데이터 처리 작업을 수행.

메모리

정의

  • RAM은 컴퓨터에서 데이터를 일시적으로 저장하는 장소입니다. CPU가 빠르게 접근하여 데이터를 읽고 쓸 수 있도록 해 줌

왜 쓰는지

  • RAM은 CPU가 현재 처리 중인 작업과 관련된 데이터를 빠르게 접근하고 저장할 수 있게 해 줌
  • 시스템의 전반적인 성능과 반응 속도가 향상

언제 쓰는지

  • 컴퓨터가 실행 중인 모든 프로그램과 프로세스는 RAM에 데이터를 저장하고 접근
  • 사용자가 애플리케이션을 실행하거나 파일을 열 때, 해당 데이터는 RAM으로 로드됨

어떻게 쓰는

  • 운영 체제는 실행 중인 프로그램과 프로세스의 데이터를 자동으로 RAM에 할당하고 관리
  • 사용자는 메모리 용량에 따라 동시에 실행할 수 있는 프로그램의 수와 성능에 영향을 받음

사용 예시:

다수의 애플리케이션을 동시에 실행하면서 멀티태스킹을 수행할 때.
대용량 파일을 처리하거나 고사양 게임을 할 때 더 많은 RAM이 필요.
서버에서는 다수의 사용자 요청을 동시에 처리하기 위해 대량의 RAM을 사용.

입출력장치

정의

  • 컴퓨터와 사용자 사이, 또는 컴퓨터와 다른 컴퓨터/장치 사이의 정보 전달을 담당하는 하드웨어
  • 장치들은 데이터의 입력, 출력, 또는 둘 다를 가능하게 해 컴퓨터 사용자가 데이터를 입력하고, 결과를 받아볼 수 있게 함

왜 쓰는지?

  • 입출력 장치는 컴퓨터와 외부 세계 사이의 상호작용을 가능하게 함
  • 사용자가 컴퓨터에 명령을 내리고, 컴퓨터가 그 결과를 사용자에게 전달할 수 있도록 해줌
  • 사용자는 컴퓨터를 사용하여 다양한 작업을 수행할 수 있음

언제 쓰는지?
입력 장치

  • 사용자가 컴퓨터에 데이터나 명령을 입력할 때 사용 예를 들어 텍스트를 입력하거나, 소프트웨어를 조작할 때 필요힘
    출력 장치
  • 컴퓨터가 처리한 결과를 사용자에게 보여주거나, 외부 장치에 전달할 때 사용 예를 들어 문서를 인쇄하거나, 영상을 모니터에 표시할 때 필요함

어떻게 쓰는지?
입력 장치 사용

  • 키보드로 텍스트를 입력하거나, 마우스로 커서를 움직여 명령을 내림
  • 스캐너를 사용해 문서를 디지털화하거나, 마이크로 음성을 입력할 수도 있음

출력 장치 사용

  • 모니터를 통해 정보를 시각적으로 확인하거나, 스피커를 통해 소리를 듣을수있음
  • 프린터를 사용해 문서나 이미지를 종이에 인쇄할 수도 있음

사용 예시

입력 장치 예시

키보드: 사용자가 텍스트 데이터를 입력
마우스/터치패드: 사용자가 커서를 이동하거나 화면 상의 객체를 선택
스캐너: 종이 문서를 디지털 형태로 변환.
마이크: 음성 입력이나 음성 명령을 받음

출력 장치 예시

모니터: 컴퓨터에서 처리된 시각적 정보를 사용자에게 보여줌
스피커/헤드폰: 오디오 데이터를 소리로 출력
프린터: 디지털 문서를 종이에 인쇄
입출력 장치는 컴퓨터 사용의 기본적인 부분이며, 이를 통해 사용자와 컴퓨터 사이의 상호작용이 이루어짐

저장장치

정의

  • 데이터, 정보, 프로그램 등을 장기간 보관할 수 있도록 설계된 컴퓨터 하드웨어의 한 부분
  • 데이터를 저장하고 필요할 때 다시 검색할 수 있게 해줌

왜 쓰는지

  • 저장장치는 데이터를 안전하게 보관하고, 컴퓨터가 꺼진 후에도 정보를 유지할 수 있게 하며, 언제든지 필요한 정보에 접근할 수 있게 해줌
  • 사용자 데이터, 시스템 파일, 응용 프로그램 등을 저장하는 데 필수적

언제 쓰는지

  • 사용자가 정보를 영구적으로 저장하고 싶을 때, 예를 들어 문서를 작성하고 저장하는 경우, 사진이나 비디오를 보관하고 싶을 때, 시스템 백업을 만들 때 등 저장장치를 사용

어떻게 쓰는지

  • 내부 저장장치(하드 드라이브나 SSD)에 데이터를 저장하거나, 외부 저장장치(USB 드라이브, 외장 하드 드라이브)를 컴퓨터에 연결하여 데이터를 전송하고 저장
  • 클라우드 저장 서비스를 사용하여 인터넷을 통해 데이터를 저장하고 접근할 수도 있음

사용 예시

내부 하드 드라이브/SSD: 컴퓨터의 운영 체제, 응용 프로그램, 사용자 문서 및 미디어 파일 등을 저장합니다.

USB 플래시 드라이브: 프로젝트 파일, 문서, 사진 등을 손쉽게 전송하고 다른 컴퓨터와 공유하기 위해 사용합니다.

외장 하드 드라이브: 대량의 데이터 백업이나 아카이브를 위해 사용되며, 높은 저장 용량을 제공합니다.

클라우드 스토리지: 사진, 문서, 음악 파일 등을 인터넷을 통해 어디에서나 접근할 수 있도록 저장합니다. Google 드라이브, Dropbox, iCloud가 여기에 포함됩니다.

SD 카드/마이크로 SD 카드: 스마트폰, 카메라, 드론 등의 장치에서 추가 저장 공간을 제공하기 위해 사용됩니다.

저장장치는 데이터를 안전하게 보관하고 필요할 때 쉽게 접근할 수 있게 해주는 핵심적인 컴퓨터 구성 요소입니다.

메인보드

정의

  • 컴퓨터의 주요 회로 기판
  • 컴퓨터의 모든 구성 요소 및 외부 장치들이 연결되고 통신할 수 있는 중심 허브 역할

왜 쓰는지

  • 메인보드는 컴퓨터 내의 다양한 구성 요소들이 서로 데이터를 주고받을 수 있게 해주며, 전력을 분배하는 중요한 역할
  • 프로세서, 메모리, 저장 장치, 입출력 장치 등 모든 부품이 메인보드를 통해 연결되어 컴퓨터가 정상적으로 작동

언제 쓰는지

  • 메인보드는 컴퓨터가 작동하는 모든 시점에서 사용
  • 컴퓨터의 전원이 켜지는 순간부터, 운영 체제가 로드되고, 응용 프로그램이 실행되며, 데이터가 처리되는 모든 과정에서 메인보드는 중심적인 역할을 수행

어떻게 쓰는지:

  • 메인보드 위에 CPU, RAM, 그리고 다른 확장 카드들이 장착되고, 저장 장치, 키보드, 마우스 같은 외부 장치들이 메인보드에 연결
  • 사용자가 컴퓨터를 사용할 때, 메인보드는 이 모든 요소들 간의 데이터 전송 및 전력 공급을 관리

사용 예시:

개인용 컴퓨터 조립 시, 사용자는 자신의 요구 사항에 맞는 메인보드를 선택하고, 이 위에 필요한 CPU, 메모리, 그래픽 카드 등을 장착합니다.

기업 환경에서 서버를 구축할 때, 고성능 메인보드가 사용되어 여러 프로세서와 대량의 메모리를 지원할 수 있습니다.

게임용 컴퓨터에서는 고성능 그래픽 카드와 여러 개의 저장 장치를 지원하는 메인보드가 사용되어, 높은 그래픽 성능과 충분한 저장 공간을 제공합니다.

메인보드는 컴퓨터의 모든 구성 요소를 연결하는 핵심적인 역할을 하며, 컴퓨터의 성능과 확장성을 결정짓는 중요한 요소

폰노이만 구조

정의

  • 폰 노이만 구조는 컴퓨터의 설계 아키텍처를 의미
  • 이 구조는 CPU, 메모리, 입력 장치, 출력 장치가 서로 연결되어 데이터와 명령어를 주고받는 방식을 기본으로 함
  • 중요한 특징 중 하나는 메모리가 데이터와 프로그램 명령어를 같은 공간에 저장
  • 가장 중요한 특징은 "모든 프로그램은 메모리에 올라와야 실행할 수 있음"

왜 쓰는지

  • 폰 노이만 구조는 컴퓨터가 명령어를 순차적으로 실행하도록 설계되어 있어 프로그래밍과 컴퓨터 구현을 단순화
  • 이 구조를 사용함으로써 하드웨어 설계가 용이해지며, 소프트웨어 개발자는 기계의 복잡성을 크게 신경 쓰지 않고 프로그램을 작성할 수 있습니다.

언제 쓰는지

  • 컴퓨터나 기타 디지털 장치를 설계하고 구현할 때 폰 노이만 구조가 사용
  • 컴퓨터의 기본적인 작업을 수행하고 프로그램을 실행할 때마다 이 구조가 기반으로 작용

어떻게 쓰는지

  • 이 구조를 기반으로 한 컴퓨터는 메모리에서 명령어를 순차적으로 읽어, CPU가 처리
  • CPU는 명령어를 해석하고 실행한 다음 필요한 데이터를 메모리에서 읽거나 메모리에 쓰게 됨
  • 사용자는 입력 장치를 통해 데이터를 입력하고, 출력 장치를 통해 결과를 받아볼 수 있습니다.

사용 예시

일반적인 개인용 컴퓨터(PC): 사용자가 소프트웨어를 실행하거나 문서를 작성할 때, 폰 노이만 구조에 따라 프로그램 명령어가 메모리에 저장되고 CPU에 의해 순차적으로 처리됩니다.

스마트폰: 앱을 실행하거나 사진을 찍는 등의 작업을 할 때, 폰 노이만 구조를 기반으로 한 프로세싱이 이루어집니다.

임베디드 시스템: 자동차의 전자 제어 유닛(ECU)이나 가전 제품에서도 폰 노이만 구조를 기반으로 한 컴퓨팅이 사용됩니다. 이러한 시스템들은 입력을 받아 처리하고, 결괏값을 출력하는 방식으로 작동합니다.

폰 노이만 구조는 현대 컴퓨팅의 기초를 이루며, 다양한 디지털 장치와 시스템에서 광범위하게 사용됩니다.

요리사 모형

추후 작성

CPU와 메모리

CPU의 구성과 동작

CPU 기본 구성

CPU정의

  • 명령어를 해석하여 실행하는 장치(요리로 따지면 요리사)

CPU의 주요 특징

  • 명령어 집합 아키텍처(ISA): CPU가 이해하고 실행할 수 있는 명령어의 집합
  • 클록 속도: CPU가 명령을 처리하는 속도로, 일반적으로 GHz(기가헤르츠) 단위로 측정
  • 코어 수: 현대의 CPU는 다수의 코어를 가지고 있어, 여러 작업을 동시에 처리
  • 캐시 메모리: 자주 사용하는 데이터와 명령어를 임시 저장하여 접근 속도를 향상시키는 메모리

왜 쓰는지

  • CPU는 컴퓨터의 모든 연산과 데이터 처리 작업을 수행하기 때문에 필수적
  • 소프트웨어의 명령을 실제 작업으로 변환하여, 컴퓨터가 다양한 작업을 실행할 수 있도록 함

언제 쓰는지

  • 컴퓨터가 켜져 있고 작동하는 모든 시간 동안 CPU는 활동적으로 사용
  • 프로그램을 실행하거나, 파일을 처리하거나, 인터넷을 검색하는 등의 작업이 모두 CPU를 통해 처리

어떻게 쓰는지

  • CPU는 메모리로부터 명령어를 읽어 들인 후, 이를 해석하고 실행
  • 데이터를 처리하고, 필요에 따라 결과를 메모리에 저장하거나 다른 하드웨어로 전달
  • 사용자의 입력과 소프트웨어의 지시에 따라 다양한 작업을 수행

사용 예시

개인용 컴퓨터: 문서 작성, 게임 플레이, 웹 서핑 등
서버: 웹사이트 호스팅, 데이터베이스 관리
모바일 기기: 스마트폰, 태블릿에서 앱 실행
임베디드 시스템: 가전 제품, 자동차의 전자 제어 시스템
CPU는 현대 생활의 거의 모든 디지털 기기와 시스템에 있어 중심적인 역할

CPU의 기본 구성

산술논리 연산장치

정의

  • CPU 내부의 주요 구성 요소 중 하나로, 다양한 산술 연산(덧셈, 뺄셈 등)과 논리 연산(AND, OR, NOT 등)을 수행하는 하드웨어이다.
  • 요리사모형에서 요리부분임

주요 특징:

  • 다양한 산술 및 논리 연산 기능 제공
  • 연산 속도가 CPU의 성능에 큰 영향을 미침
  • CPU의 연산 처리 능력의 핵심 구성 요소

왜 쓰는지:

  • 프로그램 실행 중 필요한 계산과 판단을 빠르고 정확하게 처리하기 위해

언제 쓰는지:

  • CPU가 명령어를 수행할 때마다, 필요한 연산을 처리하기 위해 지속적으로 사용됨

어떻게 쓰는지:

  • CPU는 명령어를 해석한 후 필요한 연산의 종류를 판단하고, 해당 연산을 ALU에 전달하여 실행

사용 예시:

덧셈 명령어를 실행할 때, ALU가 해당 덧셈 연산을 수행
조건 분기 명령어에서 조건을 판단하기 위한 논리 연산 수행

제어장치

정의

  • CPU 내에서 명령어를 해석하고, 그에 따라 CPU의 다른 부분 및 연결된 하드웨어의 동작을 제어하는 구성 요소
  • 요리사모형에서 작업 지시임

주요 특징:

  • 명령어 해석 및 실행 순서 제어
  • CPU 내부 및 외부 장치와의 통신 조정
  • 시스템의 동기화 유지

왜 쓰는지:

  • 컴퓨터 시스템에서 명령어 실행을 제어하고 조정하여, 정확하고 효율적인 시스템 운영을 보장하기 위해

언제 쓰는지:

  • 컴퓨터가 작동하는 순간부터 지속적으로, 명령어 실행 과정을 제어하고 조정하는 데 사용됨

어떻게 쓰는지:

  • 명령어를 해석하여 해당 명령어에 따른 동작을 CPU의 다른 부분에 지시

사용 예시:

  • 프로그램 실행 시, 각 명령어를 순차적으로 읽어 들이고, 해당 명령어에 맞는 동작을 CPU 내의 다른 구성 요소에 지시

레지스터

정의

  • CPU 내에 임시로 데이터, 명령어, 주소 등을 저장하는 빠른 메모리 구성요소
  • 요리사모형에서 재료 임시 보관임

주요 특징

  • 고속 데이터 접근을 제공하며, 용량이 제한적이고 다양한 용도로 사용되는 여러 종류가 있음

왜 쓰는지

  • CPU의 처리 속도와 직접 관련된 데이터나 명령어를 빠르게 접근하기 위해 필요함

언제 쓰는지

  • CPU가 연산을 수행하거나 명령어를 실행할 때 필요한 데이터를 저장하고 접근하기 위해 사용

어떻게 쓰는지

  • CPU가 특정 연산을 수행할 때 필요한 데이터를 레지스터에 임시 저장하고, 연산 후 결과값을 레지스터에 저장

사용 예시

  • 사용자가 프로그램을 통해 사진을 편집할 때, CPU는 이 작업을 처리하기 위해 여러 레지스터에 데이터를 임시 저장

CPU의 명령어 처리 과정

int D2 = 2; // 메모리 100번지가 D2라고 가정
int D3 = 3; // 메모리 120번지가 D3라고 가정
int sum; // 메모리 160번지가 sum라고 가정

sum = D2 + D3;

  1. 제어장치는 메모리 100번지에 있는 값(2)을 레지스터 2로 옮기라는 명령을 내림
  2. 제어장치는 메모리 120번지에 있는 값(3)을 레지스터 3로 옮기라는 명령을 내림
  3. 레스터디 2와 3의 값을 산술논리 연상장치(ALU)로 보내서 더하라는 명령을 내림 결과 값
    5는 레지스터 5에 임시 보관
  4. 레지스터 5의 값을 메모리 160번지(sum)로 옮기라는 명령을 내림

레지스터의 종류

일반 레지스터

데이터 레지스터(Data Register)
정의

  • 데이터를 임시 저장하는 데 사용되는 레지스터입니다.

주요 특징

  • 일반적인 데이터 처리 및 저장에 사용됩니다.

왜 쓰는지

  • 연산에 필요한 데이터를 저장하고 CPU가 쉽게 접근할 수 있게 합니다.

언제 쓰는지

  • 데이터를 처리할 때마다 사용됩니다.

어떻게 쓰는지

  • 데이터가 CPU로 전송되어 처리되기 전과 후에 데이터 레지스터에 저장됩니다.

사용 예시

  • 프로그램이 사용자로부터 입력받은 숫자를 처리할 때, 해당 숫자가 데이터 레지스터에 저장됩니다.

주소 레지스터(Address Register)
정의

  • 메모리 주소를 저장하는 데 사용되는 레지스터입니다.

주요 특징

  • 메모리 접근 시 주소 지정에 필수적입니다.

왜 쓰는지

  • 메모리의 특정 위치에 데이터를 저장하거나 그 위치에서 데이터를 검색할 때 사용됩니다.
    언제 쓰는지
  • 메모리에 접근할 때마다 사용됩니다.

어떻게 쓰는지

  • 메모리에서 데이터를 읽거나 쓸 위치의 주소를 저장합니다.

사용 예시

  • 프로그램이 변수의 값을 메모리에서 읽을 때, 해당 변수의 메모리 주소가 주소 레지스터에 저장됩니다.

특수 레지스터

프로그램 카운터(Program Counter, PC)

정의

  • 다음에 실행될 명령어의 주소를 저장하는 레지스터입니다.

주요 특징

  • CPU가 실행할 다음 명령어의 위치를 항상 가리킵니다.

왜 쓰는지

  • 순차적인 명령어 실행을 가능하게 하여 프로그램의 흐름을 제어하기 위해 사용됩니다.

언제 쓰는지

  • 프로그램이 실행될 때, 각 명령어가 차례로 실행될 때마다 사용됩니다.

어떻게 쓰는지

  • CPU가 명령어를 실행한 후, PC는 자동으로 다음 명령어의 주소로 업데이트됩니다.

사용 예시

  • 프로그램이 시작할 때, PC는 프로그램의 첫 번째 명령어 주소로 설정됩니다. 명령어가 실행된 후, PC는 다음 명령어의 주소로 진행합니다.

명령어 레지스터(Instruction Register, IR)

정의

  • 현재 실행 중인 명령어를 저장하는 레지스터입니다.

주요 특징

  • CPU의 명령어 해석 및 실행 과정에서 중요한 역할을 합니다.

왜 쓰는지

  • CPU가 현재 실행해야 할 명령어를 저장하고 해석하기 위해 사용됩니다.

언제 쓰는지

  • 프로그램의 명령어를 CPU가 실행할 때 사용됩니다.

어떻게 쓰는지

  • 명령어가 CPU로 전송되면, 해당 명령어가 IR에 저장되고 해석됩니다.

사용 예시

  • CPU가 덧셈 명령어를 실행할 때, 그 명령어는 먼저 IR에 저장되고, CPU는 저장된 명령어를 해석하여 덧셈을 수행합니다.

메모리 주소 레지스터(Memory Address Register, MAR)

정의

  • 데이터를 읽거나 쓸 메모리의 주소를 저장하는 레지스터입니다.

주요 특징

  • 메모리 접근 시 필요한 특정 주소를 가리킵니다.

왜 쓰는지

  • 메모리에서 데이터를 읽거나 메모리에 데이터를 쓰기 위한 주소 지정에 사용됩니다.

언제 쓰는지

  • CPU가 메모리에 접근할 필요가 있을 때마다 사용됩니다.

어떻게 쓰는지

  • CPU가 데이터를 메모리에서 읽거나 쓸 때, MAR에 접근하려는 메모리 주소가 저장됩니다.

사용 예시

  • 변수의 값을 메모리에서 읽어야 할 때, 해당 변수의 메모리 주소가 MAR에 저장되고, CPU는 MAR에 저장된 주소를 사용하여 메모리에서 값을 읽습니다.

메모리 버퍼 레지스터(Memory Buffer Register, MBR)

정의

  • 메모리와 CPU 사이에서 데이터를 임시로 저장하는 레지스터입니다.

주요 특징

  • 메모리에서 읽은 데이터 또는 메모리로 쓸 데이터를 임시로 저장합니다.

왜 쓰는지

  • 메모리와 CPU 사이에서 데이터 전송을 중개하기 위해 사용됩니다.

언제 쓰는지

  • CPU가 메모리에서 데이터를 읽거나 메모리에 데이터를 쓸 때 사용됩니다

어떻게 쓰는지

  • CPU가 메모리 주소 레지스터(MAR)를 통해 특정 메모리 주소를 지정한 후, 메모리로부터 데이터를 읽거나 메모리에 데이터를 쓰려고 할 때, 해당 데이터는 메모리 버퍼 레지스터(MBR)를 통해 전송됩니다.
  • 데이터 읽기 작업시 MBR은 메모리에서 읽은 데이터를 임시로 저장하며, 데이터 쓰기 작업시에는 MBR이 CPU로부터 받은 데이터를 임시로 저장한 후 메모리에 전송합니다.

사용 예시

  • 예를 들어, 프로그램이 사용자로부터 입력받은 데이터를 메모리에 저장해야 하는 경우, CPU는 먼저 해당 데이터를 메모리 버퍼 레지스터(MBR)에 저장합니다. 그런 다음, 메모리 주소 레지스터(MAR)를 사용하여 해당 데이터가 저장될 메모리 위치를 지정합니다. 이후, MBR에 저장된 데이터는 MAR에 지정된 메모리 주소로 전송되어 저장됩니다. 반대로, 프로그램이 메모리에 저장된 데이터를 읽어야 할 때도 비슷한 과정을 거칩니다. CPU는 먼저 MAR을 사용해 읽고자 하는 데이터의 메모리 주소를 지정하고, 메모리로부터 해당 데이터를 MBR로 읽어들입니다. 그 후, CPU는 MBR에서 데이터를 가져와 처리합니다.

버스의 종류


정의

  • 시스템 버스는 컴퓨터 내에서 데이터, 주소, 제어 신호 등을 CPU, 메모리, 입출력 장치간에 전달하는 데 사용되는 통신 경로

주요 특징:

  • 복수의 선(라인)으로 구성되어 있으며, 데이터 버스, 주소 버스, 제어 버스로 나뉨
    데이터 버스는 데이터의 전송을 담당하고, 주소 버스는 데이터가 전송될 위치를 지정하며,
    제어 버스는 전송 제어 신호를 전달
  • 컴퓨터의 성능에 직접적인 영향을 미침

왜 쓰는지:

  • 컴퓨터 내부의 다양한 구성 요소들 사이에서 정보를 효율적으로 전달하고 제어하기 위해 사용됨

언제 쓰는지:

  • CPU가 메모리로부터 데이터를 읽거나 쓸 때, 혹은 입출력 장치와 데이터를 교환할 때 시스템 버스를 통해 이러한 작업들이 수행됨

어떻게 쓰는지:

  • 예를 들어, CPU가 특정 메모리 주소로부터 데이터를 읽어야 할 경우, 주소 버스를 통해 해당 메모리 주소를 전달하고, 제어 버스를 통해 읽기 명령을 보냅니다. 그 후, 데이터 버스를 통해 해당 데이터가 CPU로 전송됨

사용 예시:

  • 프로그램이 실행될 때, CPU는 프로그램의 명령어와 데이터를 메모리로부터 읽어야 합니다. 이때 시스템 버스를 통해 CPU와 메모리 사이의 데이터 교환 작업이 이루어집니다.
  • 예를 들어, 사용자가 문서 편집 프로그램에서 글자를 입력하면, 이 정보는 입출력 장치로부터 시스템 버스를 통해 CPU로 전송되고, CPU는 이를 처리한 후 결과를 다시 메모리에 저장합니다. 이 과정에서 데이터, 주소, 제어 신호가 시스템 버스를 통해 전달됩니다.

프로그램 상태 레지스터(Program Status Register, PSR)

정의

  • 프로그램 상태 레지스터(PSR)는 CPU의 현재 상태를 나타내는 플래그들을 포함하고 있는 레지스터입니다
  • 이 레지스터는 현재 실행 중인 명령어의 결과에 따라 변경되는 여러 가지 상태 정보(예: 제로 플래그, 오버플로 플래그, 사인 플래그, 캐리 플래그 등)를 저장합니다.

주요 특징

플래그들

  • PSR에는 연산 결과에 따른 여러 상태를 나타내는 플래그들이 있습니다. 이들은 프로그램의 실행 흐름을 제어하는 데 중요한 역할을 합니다.

조건부 명령 실행

  • 특정 플래그 상태에 따라 명령어의 실행 여부가 결정되기도 합니다.

왜 쓰는지

  • CPU가 수행한 연산의 결과를 표현하고, 이를 바탕으로 프로그램의 실행 흐름을 제어하기 위해 사용됩니다.

언제 쓰는지

  • CPU가 명령어를 실행하여 연산을 수행할 때마다 PSR의 상태가 업데이트됩니다.

어떻게 쓰는지

  • 예를 들어, 덧셈 연산 후 결과가 0이라면, 제로 플래그가 설정됩니다. 이후 프로그램은 PSR의 이 플래그 상태를 확인하여 다음에 수행할 명령을 결정할 수 있습니다.

사용 예시

  • 조건부 분기 명령어에서 PSR의 사용 예를 들 수 있습니다. 예를 들어, 어떤 연산의 결과가 0인지 아닌지에 따라 다음에 실행할 명령이 결정되는 경우, PSR의 제로 플래그를 확인하여 그에 따른 분기를 수행할 수 있습니다. 연산 결과가 0이면 제로 플래그가 설정되고, 프로그램은 이를 확인한 후 특정 조건 하에 다음 명령으로 점프할 수 있습니다.

CPU비트의 의미

  • CPU 비트는 CPU가 한 번에 처리할 수 있는 데이터의 양을 나타냅니다. 예를 들어, 32비트 CPU는 한 번에 32비트(4바이트)의 데이터를 처리할 수 있습니다.
  • CPU의 비트 수는 처리 속도와 메모리 접근 능력에 영향을 미칩니다.

정의

  • 비트(bit)는 이진수의 한 자리를 의미하며, 컴퓨터 데이터의 가장 작은 단위입니다. 비트는 0 또는 1의 값을 가질 수 있습니다.

주요 특징

  • 이진 표현: 모든 컴퓨터 데이터는 비트를 사용하여 이진수 형태로 표현됩니다.
  • 정보의 기본 단위: 비트는 정보를 표현하고 저장하는 기본 단위입니다.

왜 쓰는지

  • 비트는 데이터를 저장하고 처리하는 컴퓨터 시스템의 기본 구성 요소입니다. 모든 종류의 정보(문자, 숫자, 이미지 등)를 이진 코드로 변환하여 처리하고 저장하는 데 사용됩니다.

언제 쓰는지

  • 컴퓨터가 작동할 때 데이터를 처리하거나 저장할 필요가 있을 때마다 비트가 사용됩니다. 컴퓨터의 모든 명령 실행과 데이터 저장 과정에서 비트가 활용됩니다.

어떻게 쓰는지

  • 컴퓨터는 비트를 사용하여 이진수 형태로 데이터를 표현하고, 이를 조합하여 문자, 숫자 등을 나타냅니다.
  • 예를 들어, ASCII 코드는 문자를 나타내기 위해 7비트 또는 8비트를 사용합니다.

사용 예시

  • 문자 표현: 'A'라는 문자는 ASCII 코드에서 65로 표현되며, 이진수로는 01000001(8비트)입니다.
  • 숫자 계산: 컴퓨터는 0과 1의 비트 조합을 사용하여 모든 숫자의 계산을 수행합니다. 예를 들어, 이진수 1010은 십진수로 10을 의미합니다.
  • 32비트 및 64비트 시스템: 오늘날 대부분의 컴퓨터는 32비트 또는 64비트 CPU를 사용합니다. 64비트 시스템은 더 큰 메모리 주소 공간을 제공하고 더 큰 데이터 단위를 한 번에 처리할 수 있어 더 빠른 성능을 제공합니다.

메모리의 종류와 부팅

의미

  • 모든 프로그램은 메모리에 올라와야 실행할수있음
  • 메모리를 이루는 소자 하나의 크기는 1bit(0 or 1), 그러나 소자 하나만으로 데이터를 표현할 수 없어 메모리주소는 바이트 단위로 지정
  • 1B씩 나눠진 공간에는 0번부터 시작하는 주소가있음

메모리의 종류

  • 메모리는 읽거나 쓸 수 있는 램과 읽기만 가능한 롬으로 구분
  • 램은 전력이 끊기면 데이터가 사라지는 휘방성 메모리와 전력이 끊겨도 데이터를 보관할 수 있는 비휘발성 메모리로 나뉨

휘발성 메모리

정의

  • 휘발성 메모리는 전원이 공급되지 않으면 저장된 데이터가 사라지는 메모리 유형임
  • 컴퓨터의 RAM(Random Access Memory)이 이에 해당

주요 특징:

  • 빠른 데이터 접근 속도를 제공
  • 전원이 꺼지면 데이터가 사라짐

왜 쓰는지

  • 프로그램 실행 중에 데이터를 빠르게 읽고 쓰기 위해 사용

언제 쓰는지

  • 컴퓨터나 스마트폰 같은 장치가 작동할 때, 운영 체제나 애플리케이션의 일시적인 데이터 처리를 위해 사용

어떻게 쓰는지

  • CPU가 직접 접근하여 데이터를 처리함
  • 예를 들어, 프로그램을 실행하거나 문서를 편집할 때 임시로 데이터를 저장하고 처리하는 데 사용

사용 예시

  • 컴퓨터에서 프로그램을 실행하거나, 스마트폰에서 앱을 사용할 때 RAM에서 데이터를 처리

DRAM (Dynamic Random Access Memory)
정의

  • DRAM은 매우 짧은 시간 동안만 정보를 저장할 수 있는 휘발성 메모리 유형임
  • 캐패시터와 트랜지스터를 사용하여 비트를 저장

주요 특징

  • 캐패시터를 사용하여 데이터를 저장하므로 주기적으로 새로고침이 필요
  • 비교적 저렴하며 고용량을 제공

왜 쓰는지

  • 대량의 임시 데이터를 저렴한 비용으로 빠르게 처리하기 위해 사용

언제 쓰는지

  • 컴퓨터나 스마트폰 등에서 프로그램을 실행하거나 데이터를 처리할 때 사용

어떻게 쓰는지

  • DRAM은 주로 시스템의 주 메모리로 사용되어 프로세서가 빠르게 접근하고 처리할 수 있는 데이터를 제공

사용 예시

  • 컴퓨터의 RAM으로 사용되어 여러 프로그램과 프로세스를 동시에 실행할 때 필요한 데이터를 저장

SRAM (Static Random Access Memory)
정의

  • SRAM은 데이터를 저장하기 위해 트랜지스터만을 사용하는 휘발성 메모리
  • DRAM에 비해 데이터를 더 빨리 접근할 수 있으며, 새로고침이 필요 없음

주요 특징:

  • 빠른 데이터 접근 속도를 제공
  • DRAM에 비해 비싸며, 용량이 작음
  • 새로고침이 필요 없어 전력 소모가 적음

왜 쓰는지

  • 고속으로 데이터에 접근해야 하는 경우(예: 캐시 메모리)에 사용

언제 쓰는지

  • 프로세서 근처의 속도가 중요한 작업에서 사용

어떻게 쓰는지

  • 주로 CPU 내부의 캐시 메모리로 사용되어 프로세서가 자주 접근하는 데이터를 빠르게 제공

사용 예시

  • CPU의 L1, L2, L3 캐시 메모리로 사용되어 프로세스 실행 속도를 향상

SDRAM (Synchronous Dynamic Random Access Memory)
정의

  • SDRAM은 DRAM의 한 유형으로, 시스템의 클럭 신호와 동기화되어 작동, 이를 통해 데이터 전송 속도를 향상

주요 특징:

  • 시스템의 클럭과 동기화되어 작동하여 데이터 처리 속도를 향상
  • DRAM보다 더 빠른 데이터 접근과 전송 속도를 제공

왜 쓰는지

  • 더 빠른 데이터 처리와 효율적인 성능을 필요로 하는 시스템에서 사용

언제 쓰는지

  • 컴퓨터, 게임 콘솔, 서버 등에서 고성능을 요구할 때 사용

어떻게 쓰는지

  • 메인 메모리로 사용되어 시스템의 클럭 신호와 동기화되며 데이터를 처리

비휘발성 메모리

정의

  • 비휘발성 메모리는 전원이 꺼져도 데이터가 유지되는 메모리 유형
  • HDD(Hard Disk Drive), SSD(Solid State Drive), USB 메모리 등이 이에 해당

주요 특징:

  • 전원이 꺼진 후에도 데이터를 보존
  • 데이터 저장 용도로 주로 사용

왜 쓰는지

  • 장기적인 데이터 저장을 위해 사용

언제 쓰는지

  • 데이터를 영구적으로 보관하고 싶을 때 사용됩니다.
  • 예를 들어, 문서, 사진, 음악 파일 등을 저장할 때 사용

어떻게 쓰는지

  • 데이터를 저장할 때 사용자가 직접 파일을 저장하거나, 시스템이 자동으로 데이터를 저장

사용 예시:

  • HDD나 SSD를 사용하여 컴퓨터에 운영 체제, 프로그램, 개인 파일 등을 저장합니다.
  • USB 메모리를 사용하여 파일을 다른 컴퓨터로 이동하거나 백업합니다.
  • SD 카드를 사용하여 카메라에서 사진이나 동영상을 저장합니다.
  • 이처럼 휘발성 메모리와 비휘발성 메모리는 각각의 독특한 특성과 사용 목적이 있으며, 컴퓨터 및 다양한 전자 장치에서 중요한 역할을 합니다.

정의

  • 읽기 전용 메모리로, 데이터를 영구적으로 저장하는 메모리의 한 종류
  • 이 메모리는 컴퓨터나 다른 전자 기기가 전원을 껐다가 켜도 데이터가 사라지지 않는 비휘발성 메모리임

종류

PROM (Programmable ROM)

  • 사용자가 한 번만 프로그래밍할 수 있는 메모리입니다. 한 번 데이터를 쓰면 변경할 수 없습니다.

EPROM (Erasable Programmable ROM)

  • 자외선을 사용하여 데이터를 지울 수 있는 메모리입니다. 데이터를 여러 번 지우고 다시 프로그래밍할 수 있습니다.

EEPROM (Electrically Erasable Programmable ROM)

  • 전기적 신호를 사용하여 데이터를 지우고 다시 프로그래밍할 수 있는 메모리입니다. EPROM보다 더 편리하게 데이터를 수정할 수 있습니다.

Flash Memory: EEPROM의 한 종류로, 빠른 속도로 데이터를 지우고 쓸 수 있으며 대량의 데이터를 저장할 수 있습니다.

왜 쓰는지

  • ROM은 시스템이 부팅될 때 필요한 기본적인 입출력 시스템(BIOS), 펌웨어, 시스템 설정 등을 저장하는 데 사용됩니다. 이 정보들은 시스템이 정상적으로 작동하기 위해 필수적입니다.

언제 쓰는지

  • 컴퓨터나 전자기기가 처음 켜질 때, 시스템이 올바르게 작동하도록 초기화하는 과정에서 ROM이 사용됩니다.
  • 펌웨어 업데이트가 필요할 때, 특히 EEPROM이나 Flash Memory가 사용됩니다.

어떻게 쓰는지

  • ROM은 제조 과정에서 또는 사용자에 의해 프로그래밍됩니다.
  • PROM은 한 번 프로그래밍되면 변경할 수 없지만, EPROM과 EEPROM은 데이터를 지우고 다시 프로그래밍할 수 있습니다.
  • Flash Memory는 USB 메모리 스틱, SSD 등에서 데이터 저장 매체로 널리 사용됩니다.

사용 예시

  • 컴퓨터의 BIOS: 컴퓨터가 부팅될 때 하드웨어를 초기화하고 운영 체제를 로드하는 데 필요한 코드를 포함합니다.
  • 임베디드 시스템의 펌웨어: 가전 제품, 자동차의 전자 시스템 등에서 사용되는 기본 운영 소프트웨어입니다.
  • USB 메모리 스틱, SSD: Flash Memory를 사용하여 데이터를 저장하고, 빠른 접근 속도와 대용량 저장이 가능합니다.
  • ROM은 시스템의 기본적인 운영과 데이터 저장에 필수적인 역할을 하며, 그 종류와 기술에 따라 다양한 용도로 사용

메모리보호


필요성

  • 현대의 운영체제는 시분할 기법을 사용하여 여러 프로그램을 동시에 실행하므로 사용자 영역이 여러 개의 작업 공간으로 나뉘어짐
    이러한 상황에서 메모리 보호는 매우 중요한 문제임

  • 위 그림으로 보면 메모리를 보호하기 위해 CPU는 현재 진행 중인 작업의 메모리 시작 주소를 경계 레지스터에 저장한 후 작업을 함

  • 현재 진행 중인 작업이 차지하고 있는 메모리의 크기, 즉 마지막 주소까지의 차이를 한계 레지스터에 저장

  • 사용자 작업이 진행되는 동안 이 두 레지스터의 주소 범위를 벗어나는지 하드웨어 측면에서 점검함으로써 메모리를 보호

  • 메모리 영역을 벗어나 발생한 신호(인터럽트)의 경우에는 운영체제가 해당 프로그램을 강제 종료시킴

부팅

부팅의 필요성

  • 응용프래그램의 경우 운영체제가 메모리에 올려서 실행함
  • 운영체제도 CPU에 의해 실행되는 프로그램이기 때문에 당연히 메모리에 올려야함
  • 즉 컴퓨터를 켰을 때 누군가가 운영체제를 메모리에 올려서 실행해야함

부팅과정

  1. 사용자가 전원을 켜면 롬에 저장된 바이오스가 실행됨
    바이오스는 CPU, 메모리, 하드디스크 등 주요 하드웨어가 제대로 작동하는지 확인하고 이상이있으면 오류메세지를 출력함

  2. 하드웨어 점검이 완료되면, 바이오스의 맨 마지막 작업은 하드디스크의 마스터 부트 레코드에 저장된 작은 프로그램을 메모리로 가져와 실행
    (마스터 부트 레코드는 하드디스크의 첫 번째 섹터를 가리키며 운영체제를 실행하기 위한 코드인 부트스트랩이 저장되어있음)

  3. 부트스크랩 코드(로더)는 하드디스크에 저장된 운영체제를 메모리로 가져와 실행하는 역할을 하는 작은 프로그램임, 예를 들어 유닉스용 부트스트랩 코드가 실행되면 유닉스 운영체제가 메모리에 올라오는 방식임


보충

  1. 전원 공급: 이 단계에서는 컴퓨터에 전원이 공급되어 시스템의 모든 부품이 활성화됩니다. 전원 공급은 컴퓨터 사용의 가장 기본적인 시작점입니다.

  2. POST (Power-On Self Test): 전원이 켜지면 시스템은 자체적으로 POST를 수행하여 메모리, 프로세서, 그래픽 카드 등 핵심 하드웨어가 올바르게 작동하는지 검사합니다. 문제가 발견되면 경고음이나 에러 메시지를 통해 사용자에게 알립니다.

  3. 부트 로더 실행: POST가 완료되면, CPU는 ROM(읽기 전용 메모리)에 저장된 부트 로더를 실행합니다. 부트 로더는 운영 체제를 로드하기 위한 첫 번째 단계로, 하드웨어와 소프트웨어 간의 초기 통신을 담당합니다.

  4. 운영 체제 로드: 부트 로더가 운영 체제가 저장된 하드 드라이브나 SSD의 위치를 찾아내어, 운영 체제를 메모리로 로드합니다. 이 과정을 통해 컴퓨터는 사용자가 실제로 작업을 수행할 수 있는 상태로 만들어집니다.

  5. 사용자 인터페이스 제공: 운영 체제가 성공적으로 로드되면, 사용자가 시스템과 상호작용할 수 있도록 그래픽 사용자 인터페이스(GUI)나 명령줄 인터페이스(CLI) 등의 사용자 인터페이스를 제공합니다. 이 단계에서 사용자는 애플리케이션을 실행하고, 파일을 관리하고, 시스템 설정을 조정할 수 있습니다.

이처럼 부팅 과정은 컴퓨터의 전원이 켜지는 순간부터 사용자가 시스템을 사용할 준비가 완료될 때까지의 일련의 필수 단계들로 구성됩니다.

이 과정을 통해 컴퓨터는 안정적이고 효율적인 운영을 위한 준비를 마치게 됩니다.

컴퓨터 성능 향상 기술

컴퓨터 성능 향상 기술의 필요성

  • 컴퓨터 구조의 가장 큰 문제는 CPU와 메모리, 주변장치의 작업 속도가 다르다는것임
  • 메인보드 내 메모리와 주변장치는 시스템 버스로 연결되어 있고, CPU 내 레지스터, 산술논리 연산장지, 제어장치는 CPU 내부 버스로 연결되어 있음
  • 이러한 구조는 CPU 내부 버스의 속도가 시스템 버스의 속도보다 빠르기 때문에 메모리를 비롯한 주변장치의 속도가 CPU속도를 따라가지 못함
  • 이러한 문제를 극복하기 위해 시스템 작업 속도를 올리기 위해 개발된 기술 중 운영체제와 관련된 것들을 알아야함

버퍼

개념

  • 두 장치 사이의 속도 차이를 완화하는 역할
  • 예를들어 귤 5개를 도마로 옮긴다고 하면 하나씩 옮기면 5번 옮겨야 하지만, 바구니를 사용하면 1번만에 옮길수있음 이때 바구니가 버퍼로 비유할수 있음
  • 쉽게 말해 일정량의 데이터를 모아 한꺼번에 전송하는 용도로 버퍼를 사용함

스풀

  • CPU와 입출력장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼
  • 대표적인 예로 프린터에 사용되는 스풀러가 있음

캐시

의미

  • 메모리와 CPU 간의 속도 차이를 완화라기 위해 메모리의 데이터를 미리 가져와 저장해 두는 임시 장소
  • 필요하다고 생각되는 일정량의 데이터를 미리 가져와 저장해 두는 곳이 캐시임
  • CPU 안에 있는 캐시는 CPU 내부 버스의 속도로 작동함
  • 캐시는 빠른 속도로 작동하는 CPU와 느린 속도로 작동하는 메모리 사이에서 두 장치의 속도 차이를 완화해 준다

정의

  • 캐시 메모리는 CPU와 주 메모리 사이의 속도 차이를 극복하기 위해 도입된 고속의 임시 저장소입니다.
  • CPU가 자주 사용하는 데이터와 명령어를 저장하여 빠르게 접근할 수 있게 해주는 역할을 합니다.

주요 특징

  • 속도: 주 메모리보다 훨씬 빠른 접근 속도를 가집니다.
  • 위치: CPU 내부 또는 근접한 곳에 위치하여 데이터 전송 시간을 단축합니다.
  • 비용: 비용이 높고 용량이 작습니다.

왜 쓰는지

  • CPU와 주 메모리 사이의 데이터 전송 속도 격차를 줄여, 시스템의 전체적인 성능을 향상시키기 위해 사용합니다.

언제 쓰는지

  • CPU가 데이터나 명령어를 처리할 때, 이를 빠르게 제공하기 위해 사용됩니다.

어떻게 쓰는지

  • CPU는 데이터나 명령어를 요청할 때 먼저 캐시 메모리를 확인합니다. 만약 필요한 정보가 캐시에 있다면 (캐시 히트), 바로 사용합니다.
  • 없을 경우 (캐시 미스), 주 메모리에서 가져와 캐시에 저장한 후 사용합니다.

사용 예시

  • 프로세서가 특정 프로그램을 실행할 때, 해당 프로그램의 자주 사용되는 데이터나 명령어를 캐시에 저장하여, 프로그램 실행 속도를 향상시킵니다.

캐시에 있는 데이터 변경

즉시 쓰기(Write-Through)

정의

  • 즉시 쓰기는 캐시에 데이터를 쓸 때 메인 메모리에도 동시에 데이터를 쓰는 전략입니다.

주요특징

  • 데이터의 일관성을 유지하기 쉽지만 쓰기 연산의 속도가 느릴 수 있습니다.

왜 쓰는지

  • 데이터의 안정성과 일관성을 중시할 때 사용합니다.

언제 쓰는지

  • 중요한 데이터를 다루는 금융 시스템이나 데이터베이스 서버에서 주로 사용됩니다.

어떻게 쓰는지

  • 캐시에 데이터를 쓸 때마다 메인 메모리에도 바로 쓰는 방식으로 동작합니다.

사용예시

  • 은행 거래 시스템에서 거래 정보를 즉시 메모리에 반영해야 할 때 사용합니다.

지연 쓰기(Write-Back)

정의

  • 지연 쓰기는 캐시에 데이터를 쓸 때 메인 메모리에는 즉시 쓰지 않고, 캐시 라인이 교체되거나 특정 조건에서만 메인 메모리에 쓰는 전략입니다.

주요특징

  • 쓰기 연산이 빠르고 시스템의 전체적인 성능을 향상시킬 수 있지만, 데이터 일관성 유지가 어려울 수 있습니다.

왜 쓰는지

  • 시스템의 성능을 최적화하고자 할 때 사용합니다.

언제 쓰는지

  • 대량의 데이터를 빠르게 처리해야 하는 응용 프로그램이나 게임, 고성능 서버 등에서 사용됩니다.
    어떻게 쓰는지

  • 데이터가 캐시에 쓰여질 때 메인 메모리의 업데이트를 지연시키고, 특정 조건이 충족되었을 때만 메인 메모리에 쓰는 방식으로 동작합니다.

  • 사용예시: 고성능 컴퓨팅 작업이나 대용량 데이터 처리가 필요한 서버에서 사용됩니다.

명령어 부분과 데이터 부분

  • 명령어는 크게 어떤 작업을 할지 나타내는 명령어 부분과 작업 대상인 데이터 부분으로 나뉨
  • 캐시는 명령어와 데이터의 구분 없이 모든 자료를 가져오는 일반 캐시, 명령어와 데이터를 구분하여 가져오는 특수 캐시로 나뉨

L1: 명령어 캐시나 데이터 캐시는 CPU 레지스터에 직접 연결
L2: 일반 캐시는 메모리와 연결됨

저장장치의 계층 구조


의미

  • 속도가 빠르고 값이 비싼 저장장치를 CPU 가까운 쪽에 두고, 값이 싸고 용량이 큰 저장장치를 반대쪽에 배치하여 적당한 가격으로 빠른 속도와 큰 용량을 동시에 얻는 방법

레지스터

정의

  • CPU 내부에 위치한 매우 빠른 저장소입니다.

주요 특징

  • 극도로 빠른 접근 속도, 매우 제한된 용량.

왜 쓰는지

  • CPU가 현재 실행 중인 명령어의 데이터를 빠르게 처리하기 위해.

언제 쓰는지

  • CPU가 명령어를 실행할 때마다.

어떻게 쓰는지

  • CPU는 계산이나 명령어 실행에 필요한 데이터를 레지스터에 임시로 저장합니다.

사용 예시

  • 산술 연산을 수행할 때 사용되는 데이터.

캐시 메모리 (L1, L2, L3)

정의

  • CPU와 주 메모리 사이에 위치한 고속 임시 저장소입니다.

주요 특징

  • 빠른 접근 속도, 비교적 작은 용량, 계층별로 다른 속성을 가짐.

왜 쓰는지

  • CPU와 주 메모리 사이의 속도 차이를 극복하기 위해.

언제 쓰는지

  • CPU가 데이터나 명령어에 접근할 때.

어떻게 쓰는지

  • 자주 사용되거나 최근에 사용된 데이터와 명령어를 저장하여 빠른 접근을 가능하게 합니다.

사용 예시

  • 자주 사용되는 프로그램 코드나 데이터.

주 메모리 (RAM)

정의

  • 컴퓨터의 주된 데이터 저장소로, 임시 데이터 저장을 위해 사용됩니다.

주요 특징

  • 휘발성, 빠른 접근 속도, 비교적 큰 용량.

왜 쓰는지

  • 프로그램 실행과 데이터 처리를 위해.

언제 쓰는지

  • 컴퓨터가 켜져 있고 작업을 수행할 때 항상.

어떻게 쓰는지

  • 실행 중인 프로그램과 현재 처리 중인 데이터를 저장합니다.

사용 예시

  • 웹 브라우징, 문서 작성, 게임 실행 등.

보조 저장 장치 (하드 드라이브, SSD)

정의

  • 데이터를 영구적으로 저장하기 위한 장치입니다.

주요 특징

  • 비휘발성, 큰 저장 용량, 느린 접근 속도 (SSD는 HDD보다 빠름).

왜 쓰는지

  • 장기 저장과 데이터 보존을 위해.

언제 쓰는지

  • 데이터를 영구적으로 저장하고 싶을 때.

어떻게 쓰는지

  • 파일 시스템을 통해 데이터를 구조화하고 저장합니다.

사용 예시

  • 운영 체제, 응용 프로그램 설치, 문서 및 미디어 파일 저장.

인터럽트

의미

  • CPU의 작업과 저장장치의 데이터 이동을 독립적으로 운영함으로써 시스템의 효율을 높임
  • 즉 데이터의 입출력이 이루어지는 동안 CPU가 다른 작업을 할 수 있음
  • 요리사모형으로 따지면 주방 보조라고 생각하면 됨

정의

  • 인터럽트는 프로그램 실행 중에 발생하는 예외 상황이나 특별한 이벤트가 발생했을 때, CPU에게 알려 현재 실행 중인 작업을 잠시 중단하고 해당 이벤트를 처리하도록 하는 메커니즘입니다.

주요 특징

  • CPU의 작업 흐름을 변경할 수 있으며, 비동기적으로 발생합니다.

왜 쓰는지

  • 하드웨어 장치로부터의 신호나 소프트웨어 명령에 신속하게 반응하기 위해 사용됩니다.

언제 쓰는지

  • 입력 장치로부터 데이터가 도착했거나, 타이머가 만료되었을 때, 혹은 예외 상황이 발생했을 때 사용됩니다.

어떻게 쓰는지

  • 인터럽트 요청이 발생하면, CPU는 현재 수행 중인 작업을 중단하고 인터럽트 처리 루틴을 실행합니다.

사용 예시

  • 키보드 입력, 마우스 클릭, 네트워크 패킷 도착 등

인터럽트 방식의 동작 과정

  1. CPU가 입출력 관리자에게 입출력 명령을 보냄
  2. 입출력 관리자는 명령받은 데이터를 메모리에 가져다 놓거나 메모리에 있는 데이터를 저장장치로 옮김
  3. 데이터 전송이 완료되면 입출력 관리자는 CPU에 완료 신호를 보냄

여기서 입출력 관리자가 CPU에 보내는 완료 신호를 인터럽트라고 함

입터럽트 번호

  • 컴퓨터에는 하드디스크뿐만 아니라 마우스,키보드 등 다양한 입출력 장치가 있고, 인터럽트 방식에서는 많은 주변장치 중 어떤 장치의 작업이 끝났는지를 CPU에게 알려주기 위한 번호

직접 메모리 접근

정의

  • DMA는 CPU의 개입 없이 주변장치가 시스템 메모리에 직접 데이터를 읽고 쓸 수 있도록 하는 기능입니다.
  • 이를 통해 데이터 전송 속도가 향상되고 CPU의 부하가 줄어듭니다.

주요 특징

  • CPU의 개입을 최소화하여 고속 데이터 전송을 가능하게 합니다.
  • 주변 장치의 데이터 전송 효율을 높여 줍니다.
  • 특히 대용량 데이터를 처리할 때 시스템의 성능을 크게 향상시킵니다.

왜 쓰는지

  • CPU가 모든 데이터 전송을 관리하는 경우, 대용량 데이터를 처리할 때 많은 시간을 소비하게 됩니다.
  • DMA를 사용함으로써 CPU는 다른 중요한 작업을 계속 수행할 수 있으며, 시스템의 전반적인 효율성이 향상됩니다.

언제 쓰는지

  • 대용량 파일을 디스크에서 메모리로, 또는 메모리에서 디스크로 전송할 때
  • 네트워크 카드와 같은 주변장치가 데이터를 시스템 메모리로 직접 전송해야 할 때
  • 오디오나 비디오 데이터와 같이 빠른 데이터 스트리밍이 필요할 때

어떻게 쓰는지

  • DMA 컨트롤러는 주변 장치와 메모리 사이의 데이터 전송을 조정합니다.
  • 주변 장치는 DMA 요청을 컨트롤러에 보내고, DMA 컨트롤러는 해당 데이터를 메모리 주소로 직접 전송합니다.
  • 전송이 완료되면, DMA 컨트롤러는 CPU에 전송 완료를 알리는 인터럽트를 보냅니다.

사용 예시

  • 하드 디스크 드라이브(HDD)에서 파일을 읽어 메모리로 직접 전송하는 경우
  • 네트워크 카드가 받은 패킷을 시스템 메모리로 직접 전송하는 경우
  • 멀티미디어 애플리케이션에서 오디오나 비디오 데이터를 처리할 때
  • DMA는 데이터 전송 과정에서 CPU의 부담을 줄여 줌으로써, 다중 작업 환경에서의 효율성을 극대화하고, 시스템 리소스를 보다 효율적으로 사용할 수 있게 합니다.

메모리 맵 입출력

필요성

  • 직접 메모리 접근을 사용하면 메모리가 복잡해짐
  • 직접 메모리 접근을 통해 들어온 데이터를 메모리에 아무렇게 둔다면 CPU가 사용하는 데이터와 섞여서 관리하기 어려울 것이므로 이를 막기 위해 메모리를 나누어 사용하는 방법이 도입
  • CPU가 사용하는 메모리 공간과 직접 메모리 접근을 통해 들어오고 나가는 데이터를 위한 공간을 분리하는것
  • 메모리의 일정 공간을 입출력에 할당하는 기법

주요 특징

  • 주소 공간 공유: 메모리와 입출력 장치가 동일한 주소 공간을 공유합니다.
  • 단순한 접근 방법: 프로세서는 일반 메모리 접근 명령을 사용하여 입출력 장치와 데이터를 주고받습니다.
  • 효율적인 데이터 처리: 입출력 장치와의 데이터 전송이 메모리 연산을 통해 이루어져, CPU의 부담이 줄어듭니다.

왜 쓰는지

  • 메모리 맵 입출력은 입출력 장치와의 데이터 전송을 메모리 접근처럼 간단하게 만들어, 프로그램이 직관적으로 장치를 제어할 수 있게 합니다.
  • 이는 입출력 장치와의 통신 속도를 향상시키고, CPU의 부하를 줄이는 데 도움이 됩니다.

언제 쓰는지

  • 입출력 장치로부터 빠른 데이터 전송이 필요할 때
  • 시스템의 효율성을 높이고, CPU의 부하를 줄이고자 할 때
  • 운영 체제나 임베디드 시스템에서 입출력 장치의 제어가 필요할 때

어떻게 쓰는지

  • 메모리 맵 입출력을 사용하기 위해, 시스템은 먼저 입출력 장치를 메모리 주소 공간에 매핑합니다. 이후, 프로그램은 해당 메모리 주소에 데이터를 쓰거나, 해당 주소로부터 데이터를 읽음으로써 입출력 장치와 데이터를 교환합니다.

사용 예시

  • 그래픽 카드 제어: 컴퓨터 시스템에서 그래픽 카드의 프레임 버퍼를 메모리 주소 공간에 매핑하여, CPU나 GPU가 직접 화면에 출력할 이미지 데이터를 전송할 수 있습니다.
  • 네트워크 카드 데이터 전송: 네트워크 카드의 버퍼를 메모리에 매핑하여, 네트워크로부터 수신된 데이터 패킷을 직접 메모리로 전송하거나, 메모리에서 데이터 패킷을 읽어 네트워크로 송신할 수 있습니다.
  • 임베디드 시스템의 센서 데이터 처리: 임베디드 시스템에서 센서와 같은 입출력 장치를 메모리에 매핑하여, 센서로부터 수집된 데이터를 효율적으로 처리하고, 제어 신호를 센서에 전송할 수 있습니다.
  • 메모리 맵 입출력은 이처럼 다양한 시스템에서 입출력 장치의 효율적인 제어와 데이터 처리를 가능하게 함

멀티 프로세싱

사전배경지식

프로세스

  • 컴퓨터에서 실행 중인 프로그램
  • 각각의 프로세스는 독립된 메모리 공간을 할당 받음
  • 명령어들과 데이터를 가짐

CPU

  • 명령어를 실행하는 연산 장치

메인메모리

  • 프로세스가 CPU에서 실행되기 위해 대기하는 곳

IO(input/output)

  • 파일을 읽고 쓰거나 네트워크의 어딘가와 데이터를 주고 받는 것
  • 입출력 장치와 데이터를 주거나 받는 것

멀티태스킹

  • 프로세스는 한번 CPU를 사용할 때 아주 짧은 시간만 CPU에서 실행되도록 하는것
  • 쉽게 말해 여러 프로세스들이 짧은 시간안에 번갈아 가면서 실행이 되는것!
  • 프로세스의 응답시간을 최소화 시키는것이 목적

스레드

  • 하나의 프로세스안에서 여러가지 작업을 실행하기위해 만듬
  • CPU에서 실행되는 단위
  • 같은 프로세스의 스레드들끼리 컨텍스트 스위칭 용이함(하나의 프로세스에서 다른프로세스로 바뀌는것)
  • 스레드들은 자신들이 속한 프로세스의 메모리 공유

멀티스레드

  • 하나의 프로세스가 동시에 여러 작업을 실행하는데 목적
  • 여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 cpu time을 나눠갖는 것

정의

  • 멀티스레드는 하나의 프로세스 내에서 여러 개의 스레드를 생성하여 동시에 여러 작업을 처리하는 기술입니다.

주요특징

  • 경량 프로세스: 스레드는 프로세스보다 생성 및 관리 비용이 적습니다.
  • 자원 공유: 같은 프로세스 내의 스레드들은 메모리 등의 자원을 공유합니다.

왜 쓰는지

  • 자원의 효율적 사용과 응답성 향상을 위해 사용합니다.

언제 쓰는지

  • 사용자 인터페이스, 네트워크 통신, 파일 입출력 등 동시에 여러 작업을 처리해야 할 때 사용합니다.

어떻게 쓰는지

  • 프로세스 내에서 스레드를 생성하고, 각 스레드는 할당된 작업을 수행합니다

사용 예시

  • 웹 서버, 그래픽 사용자 인터페이스(GUI) 응용 프로그램, 게임 등.

멀티 프로세싱

정의

  • 멀티프로세싱은 컴퓨터가 여러 개의 프로세서(CPU)를 사용하여 동시에 여러 작업을 처리하는 기술입니다.

주요특징

  • 동시성: 여러 프로세서가 동시에 다양한 작업을 처리합니다.
  • 병렬 처리: 작업의 실행 시간을 단축시키기 위해 작업을 여러 프로세서에 분배합니다.

왜 쓰는지

  • 처리능력을 향상시키고, 시스템의 처리 용량을 증가시키기 위해 사용합니다.

언제 쓰는지

  • 대규모 연산이 필요하거나, 여러 작업을 동시에 빠르게 처리해야 할 때 사용합니다.

어떻게 쓰는지

  • 운영 체제는 작업을 여러 프로세서에 할당하고, 각 프로세서는 할당된 작업을 독립적으로 수행합니다.

사용 예시

  • 과학 연산, 대규모 데이터베이스 관리, 서버 운영 등.

참조

하드웨어장치
메인보드
폰노이만구조
시스템버스
메모리종류,메모리보호
레벨별 캐시의 구조
직접 메모리 접근 제어기의 구조
멀티스레딩

0개의 댓글