본문 바로가기

전공/운영체제

[운영체제] 2장 컴퓨터의 구조와 성능 향상

728x90
책 "쉽게 배우는 운영체제"을 참고하여 쓴 글입니다

컴퓨터의 기본 구성

하드웨어의 구성

중앙처리장치(CPU), 메인메모리, 입력장치, 출력장치, 저장장치

 

폰노이만 구조

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

⇒ 모든 프로그램은 메모리에 올라와야 실행할 수 있다

 

요리사 모형

요리사(CPU), 도마(메모리), 냉장고(저장장치)

요리 방법 결정 ↔ 프로세스 관리

도마 정리 ↔ 메모리 관리

보관 창고 정리 ↔ 저장장치 관리

 

 

 

CPU와 메모리

CPU의 구성과 동작

CPU: 명령어를 해석하여 실행하는 장치 → 산술논리 연산장치, 제어장치, 레지스터로 구성

  • 산술논리 연산장치(ALU): 산술연산, 논리연산 수행
  • 제어장치: CPU에서 작업을 지시하는 부분
  • 레지스터: 데이터를 임시로 보관하는 곳

레지스터의 종류

버스 종류

 

메모리 종류

  1. 휘발성 메모리: DRAM(동적 램, 일정시간 지나면 사라짐), SRAM(정적 램, 전력 공급되는 동안 보관 가능) / 메인메모리에 사용
  2. 비휘발성 메모리: 플래시 메모리, FRAM, PRAM, SSD / 플래시 메모리 → 디지털카메라, MP3,USB

 

컴퓨터 성능 향상 기술

문제점: CPU와 메모리, 주변장치의 작업 속도가 다르다

버퍼

속도 차이가 있는 두 장치 사이에서 차이 완화

스풀러: 일종의 버퍼이지만 프로그램들이 버퍼를 공유한다

캐시

메모리와 CPU(메모리의 속도< CPU속도)간의 속도 차이 완화를 위해 메모리의 데이터를 미리 가져와 저장해두는 임시 장소 (미리 가져오는 작업을 prefetch라고 한다.)

CPU안에 존재하며 CPU 내부 버스의 속도로 작동

-캐시에 데이터 가져오기

캐시 히트: 원하는 데이터를 찾았을때, 일반적으로 캐시 적중률은 90%

-캐시에 있는 데이터 변경되어 반영

  1. 즉시 쓰기: 즉시 메모리에 반영, 빈번한 데이터 전송으로 인해 느려짐
  2. 지연 쓰기: 변경된 내용 모아서 주기적으로 반영

-L1캐시, L2캐시

  1. L1캐시: 명령어 캐시, 데이터 캐시 → CPU레지스터에 직접 연결
  2. L2캐시: 일반 캐시(명령어와 데이터의 구분 없이 모든 자료를 가져옴) → 메모리와 연결

저장장치의 계층 구조

속도가 빠르고 값 비싼 저장장치를 CPU가까이 두고, 값 싸고 용량 큰 저장장치를 반대쪽에 배치

인터럽트

폴링방식: cpu가 직접 입출력장치에서 데이터를 가져오거나 내보내는 방식

인터럽트 방식: CPU의 작업과 저장장치의 데이터 이동을 독립적으로 운영

동작과정

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

직접 메모리 접근: 입출력 관리자가 CPU의 허락 없이 메모리에 접근할 수 있는 권한

메모리 매핑 입출력: 메모리의 일정 공간을 입출력에 할당하는 기법

사이클 훔치기: CPU와 직접 메모리 접근이 동시에 메모리에 접근하려 할때 CPU가 메모리 사용 권한을 양보하는 상황. CPU 작업 속도보다 입출력장치의 속도가 느리기 때문에 양보함

병렬 처리

CPU의 성능을 향상하기 위한 방법

병렬 처리의 개념

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

병렬 처리 시 고려사항

  1. 상호 의존성이 없어야 병렬 처리 가능
  2. 각 단계의 시간을 거의 일정하게 맞춰야 병렬 처리가 원만
  3. 전체 작업 시간을 몇 단계로 나눌지

병렬 처리 기법

CPU에서 명령어가 실행되는 과정(4단계)

  1. 명령어 패치(IF): 다음에 실행할 명령어를 명령어 레지스터에 저장
  2. 명령어 해석(ID): 명령어를 해석
  3. 실행(EX): 해석한 결과를 토대로 명령어를 실행
  4. 쓰기(WB): 실행된 결과를 메모리에 저장
🙌🏻 스레드: CPU의 작업 단위

병렬 처리 기법(5가지)

  1. 파이프라인 기법: 명령을 겹쳐서 실행하는 방법으로 하나의 코어에 여러 개의 스레드를 사용하는 것.
    • 문제점
      1. 데이터 위험: 데이터 의존성 때문에 발생하는 문제 → 명령어 단계 지연으로 해결
      2. 제어 위험: PC 값을 갑자기 변화시켜 발생하는 위험 → 분기 예측, 분기 지연 방법으로 해결
      3. 구조 위험: 서로 다른 명령어가 같은 자원에 접근하려 할 때 발생하는 문제
  2. 슈퍼스칼라 기법: 파이프라인을 처리할 수 있는 코어를 여러 개 구성하여 복수의 명령어가 동시에 실행되도록 하는 방식 → 오늘날 CPU가 대부분 사용하는 기법
    • 파이프 라인과의 차이점: 코어를 2개 구성하여 각 단계에서 동시에 실행되는 명령어가 2개
  3. 슈퍼파이프라인 기법: 파이프라인의 각 단계를 세분하여 한 클럭안에 여러 명령어 처리 == 파이프라인 기법을 여러 개의 코어에서 동시에 수행
  4. 슈퍼파이프라인 슈퍼스칼라 기법: 앞의 병렬 처리 기법을 모두 합쳐놓은 기법
  5. VLIW 기법: CPU가 병렬 처리를 지원하지 않을 경우 소프트웨어적으로 병렬 처리를 하는 방법
728x90