쉽게배우는 운영체제 : 컴퓨터의 구조와 성능 향상

jeong_hyeon·2022년 6월 19일
0

책정리

목록 보기
5/6
post-thumbnail

하드웨어의 구성

컴퓨터는 중앙처리장치 (CPU), 메인 메모리, 입력장치, 출력장치, 저장장치로 구성된다.
필수장치 : 중앙처리장치(CPU), 메인메모리(RAM)
주변장치 : 입력장치, 출력 장치, 저장장치

# CPU

명령어를 해석하여 실행하는 장치

# 메모리

작업에 필요한 프로그램과 데이터를 저장하는 장소

# 입출력 장치

외부의 데이터를 컴퓨터에 입력하는 장치

#저장장치

속도가 느리지만 가격이 저렴

#메인보드

  • 컴퓨터의 다양한 부품은 버스로 연결
  • CPU와 메모리 등 다양한 부품을 연결하는 커다란 판

폰노이만 구조

폰노이만 구조는 CPU, 메모리, 입출력장치, 저장 장치가 버스로 연결되어있는 구조

# 폰노이만구조의 특징

모든 프로그램은 메모리에 올라와야만 실행이 가능하다.

하드웨어 사양 관련

  • 클록
    - CPU속도와 관련된 단위
    • CPU작업을 위한 박자(틱, 펄스)를 생성
  • 헤르츠
    - 박자(클록, 틱)의 발생 속도를 나타내는 단위
    • 1초에 클록틱이 몇 번 발생하는지를 나타낸다.
  • 시스템버스와 CPU내부 버스
    - FSB(전면 버스) : 메모리와 주변장치를 연결하는 버스
    • BSB(후면 버스) : CPU내부 장치를 연결하는 버스

CPU의 기본 구성

  1. 산술논리 연상 장치
    • 데이터의 덧셈, 뺄셈등 산술 연상
    • AND, OR 같은 논리연산
  2. 제어장치
    • CPU에서 작업을 지시하는 부분
  3. 레지스터
    • CPU 내에 데이터를 임시로 보관하는 곳

레지스터의 종류

  1. 데이터 레지스터(DR)
    • 메모리에서 가져온 데이터를 임시로 보관 할때 사용
    • 일반 레지스터 or 범용 레지스터라고 부른다.
  2. 주소 레지스터 (AR)
    • 데이터 또는 명령어가 저장된 메모리의 주소가 저장된다.
  3. 프로그램 카운터(PC)
    • 다음에 실행할 명령어의 주소를 기억
  4. 명령어 레지스터(IR)
    • 현재 실행중인 명령어를 저장
  5. 메모리 주소 레지스터(MAR)
    • 메모리를 가져오거나 보낼때 주소를 지정하기 위해서 사용
  6. 메모리 버퍼 레지스터(MBR)
    • 메모리에서 가져온 데이터나 메모리로 옮겨갈 데이터를 임시로 저장
    • MAR과 항상 같이 사용된다.

버스의 종류

  1. 버스는 CPU와 메모리, 주변장치간에 데이터를 주고 받을때 사용한다.
  2. 제어 버스
    • 다음에 어떤 작업을 할지 지시하는 제어신호가 오고간다.
    • 제어장치와 연결된 버스
    • 작업 완료신호나 오류 발생 신호를 주고 받아야 하기 때문에 신호가 양방향으로 오고간다.
  3. 주소 버스
    • 메모리의 데이터를 읽거나 쓸때 어느 위치에서 작업할 것인지 알려준다.
    • 메모리 주소만 전달하기 때문에 단방향이다.
  4. 데이터 버스
    • 메모리 버퍼 레지스터와 연결되어있다.
    • 데이터가 데이터 버스에 실려 이동된다.
    • 데이터 이동이 양방향이다.
  5. 버스의 대역폭 : 한번에 전달할수 있는 데이터의 최대 크기를 의미한다.

메모리의 종류와 부팅

메모리는 읽거나 쓸 수 있는 램(RAM)과 읽기만 가능한 롬(ROM)으로 구분된다.
램(RAM)은 휘발성 메모리와 비휘발성 메모리로 나뉜다.

휘발성 메모리

DRAM(동적 램) : 일정 시간 지나면 데이터가 사라진다(일정 시간마다 다시 재생시켜줘야 한다)
SRAM(정적 램) : 정력이 공급되는 동안에만 데이터를 보관할 수 있다.
*SDRAM : DRAM이 발전된 형태 -> 펄스마다 데이터를 저장하는 동기 DRAM

비휘발성 메모리

비휘발성 메모리에는 플래시 메모리, FRAM, PRAM 등이 있다.
이 중 플래시 메모리는 전력이 없어도 데이터를 보관하는 저장장치로 많이 사용된다. 
메모리 보호
메모리 보호를 위해 CPU는 현재 진행 중인 작업의 메모리 시작 주소를 경계 레지스터에 저장 후 작업한다. 또한 현재 진행 중인 작업이 차지하고 있는 메모리의 크기, 즉 마지막 주소까지의 차이를 한계 레지스터에 저장한다.

부팅

컴퓨터를 켰을 때 운영체제를 메모리에 올리는 과정을 부팅이라고 한다.

컴퓨터 향상 기술

CPU와 메모리 간 속도 차이를 개선하고 시스템의 작업 속도를 올리기 위해 개발된 기술

버퍼

버퍼는 일정량의 데이터를 모아 옮김으로써 두 장치 사이에서 속도의 차이를 완화하는 역할을 한다.
일정량의 데이터를 모아 옮김으로써 속도의 차이를 완화하는 장치다.

스풀

스풀은 CPU와 입출력 장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼다.
예)프린터 : 프린터에 사용되는 스풀러는 인쇄할 내용을 순차적으로 출력하는 소프트웨어다.

캐시

캐시는 메모리와 CPU 간의 속도 차이를 완화하기 위해 메모리의 데이터를 미리 가져와 저장해두는 임시 장소이다.
캐시는 CPU 안에 있으며 CPU 내부 버스의 속도로 작동한다.

즉시 쓰기와 지연 쓰기

즉시 쓰기 : 캐시에 있는 데이터가 변경되면 즉시 메모리 반영
지연 쓰기 : 변경된 내용을 모아서 주기적으로 반영 (카피백)

저장장치의 계층구조

저장장치의 계층 구조는 속도가 빠른 저장장치를 CPU 가까운 곳에 배치하여 성능을 향상시키는 구조이다.

보통 위 그림과 같이 "레지스터 > 캐시 > 메모리 > 저장장치(하드 디스크)" 순서이다.

인터럽트

CPU가 모든 입출력에 관여하면 작업 효율이 엄청 떨어진다. 이러한 효율이 떨어지는 것을 방지하기 위해 인터럽트 방식을 사용한다.

인터럽트란

CPU가 프로그램 실행 중 예외상황 발생 시, 직접 관여하지 않고 입출력 관리자에게 명령하여 처리한다. 그러면 입출력 관리자는 CPU에게 명령받은 일을 처리 후 완료 신호를 보내는데 이 완료 신호를 인터럽트라 한다.

인터럽트 동작 과정

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

직접 메모리 접근

CPU는 메모리나 주변장치에 대한 모든 권한을 가지고 있다.
하지만 인터럽트 방식을 사용하려면 입출력 관리자가 메모리 접근을 해야 하는 문제점이 생긴다.
따라서 CPU는 입출력 관리자에게 직접 메모리 접근(DMA) 권한을 준다.

사이클 훔치기

입출력 관리자와 CPU 둘이 동시에 메모리에 접근할 시, CPU는 입출력 관리자에게 메모리 사용 권한을 양보한다. 이를 사이클 훔치기라 한다.

병렬 처리

병렬 처리란 동시에 여러 개의 명령을 처리하여 작업의 능률을 올리는 방식이다.

병렬 처리 고려 사항

상호 의존성이 없어야 한다.
각 단계의 시간을 거의 일정하게 맞춰야 병렬 처리가 원만하게 이루어진다.
전체 작업 시간을 몇 단계로 나눌지 고려해야 한다.

병렬 처리 기법

  1. 파이프라인 기법
    하나의 코어에 여러 개의 스레드를 사용하는 방법
  • 파이프 라인의 위험
    - 데이터의 위험 : 데이터의 의존성으로 인해 발생한다.
    • 제어의 위험 : PC 값을 갑자기 변화시켜 발생한다
    • 구조의 위험 : 서로 다른 명령어가 같은 자원에 접근할 때 발생한다.
  1. 슈퍼스칼라 기법
    파이프라인을 처리할 수 있는 코어를 여러 개 구성하여 복수의 명령어가 동시에 실행되도록 하는 방식
  2. 슈퍼 파이프라인기법
    파이프라인 기법 강화 (한 쿨럭 내에 여러 명령어 실행 가능)
  3. 슈퍼파이프라인 슈퍼스칼라 기법
    슈퍼파이프라인 기법을 여러 개의 코어에서 동시에 하는 방식
  4. VLIW 기법
    소프트웨어적으로 병렬 처리하는 방법

0개의 댓글