본문 바로가기
데일리IT🌱

[ 컴퓨터 구조 기초 ] 컴퓨터 시스템

by 동백사과 2022. 3. 23.

컴퓨터 시스템 3계층

- 컴퓨터 시스템 : 하드웨어와 소프트웨어, 펌웨어의 결합으로 이루어짐

하드웨어

  • 가정용 PC의 각종 본체 부품 ( 하드디스크, CPU, 그래픽 카드 등등 ) 과 모니터, 키보드 등이 모두 하드웨어에 속한다.
  • 컴퓨터의 기능을 수행하기 위해 전기적 신호로 구성된 정보, 데이터를 이동하거나 처리하는 물질적 실체를 의미 / 하드웨어의 품질은 컴퓨터의 정보 처리 능력을 결정한다.
  • ( CPU의 클락이 몇 Hz냐, 코어가 몇개냐, RAM이 몇 GB냐 등등 )

소프트웨어

  • 사용자를 위해 다양한 응용 프로그램 간의 하드웨어 사용을 제어하고 조장하는 기능을 수행

응용 프로그램

  • 사용자의 여러 요구사항을 해결하기 위해 제공되는 프로그램
  • ( EX . 스프레드시트, 워드 프로세스 )

 


하드웨어 중 메모리!

메모리

  • 메모리란 프로그램과 프로그램 수행에 필요한 데이터 및 코드를 저장하는 장치
  • 메모리는 크게 내부 기억장치인 주기억 장치와 외부 기억장치인 보조 기억장치로 분류됨
    • DRAM (RAM, DDRF ) 등의 메모리, CPU 안에 있는 레지스터와 캐쉬 등이 내부 기억 장치인 주기억장치에 해당
    • SSD, HDD 등이 외부 기억장치인 보조 기억장치로 구분

 

가상 메모리와 캐시

1. 가상 메모리 ( Virtual Memory )

  • 컴퓨터에는 기본적으로 RAM 과 가상메모리의 두가지 유형의 메모리가 존재
  • 가상메모리는 RAM 공간이 부족할 때 사용하는 파일로 SSD나 HDD를 RAM 처럼 사용하는 기술을 말한다.
  • 가상메모리를 사용한다는 것은 페이징 파일과 정보를 이동하여 충분한 RAM을 확보하여 높은 메모리를 요구하는 프로그램이 올바르게 실행되도록 하는 것
  • 가상 주소를 사용
    • 선할당으로 인한 부담을 줄임
    • 느린 속도를 개선함 
✨가상 메모리 등장 배경 ✨
- 초창기 컴퓨터에서는 사용 가능한 RAM 의 용량이 가장 큰 실행 애플리케이션의 주소 공간보다 커야 했음 → 메모리 부족 발생
- 애플리케이션 일부만 기억장치에 올려 실행하도록 지정할 수 있게 하는 오버레이 기법을 사용하고자 함. → 여전히 메모리 부족 발생
- 애플리케이션을 실행하는 데 얼마나 많은 메모리가 필요한지 집중하지 않고 대신 애플리케이션을 실행하는 데 최소한 얼마만큼의 메모리가 필요한가에 대해 논의
 
= 메모리 접근이 순차적이고 지역화 되어있기에 가능
= 애플리케이션의 일부만 메모리에 올라간다면 메모리에 올라가지 않는 나머지는 보조기억장치인 디스크!
= 가상 메모리의 핵심이 보조기억장치!

✨가상 메모리 동작 방식 ✨

  • 애플리케이션이 실행될 때, 실행에 필요한 일부분만 메모리에 올라가고 나머지는 디스크에 남게 됨.
    • 빠르고 작은 기억장치 ( RAM )을 크고 느린 기억 장치 (디스크)와 병합하여 하나의 크고 빠른 기억장치 처럼 동작하게 하는 것!
    • 가상 메모리 구현을 위해서는 메모리 관리 하드웨어인 MMU ( Memory Management Unit )이 필요!

🎆 MMU ( Memory Management Unit )

  • 가상 주소를 물리 주소로 변환하고 메모리를 보호하는 기능을 수행함.
  • CPU 가 각 메모리에 접근하기 이전에 메모리 주소 번역 작업이 수행됨
  • 메모리를 일일이 가상주소에서 물리적 주소로 번역하면 작업 부하가 너무 많아짐으로 MMU는 RAM을 여러 부분 ( 페이지) 로 나누어 하나의 독립된 항목으로 처리함

🎇MMU 동작에 필요한 2가지! ( TLB, TTB )

  1. TTB ( Translation Table Base Address )
    • 페이지 테이블이 존재하는 위치를 알려줌
    • MMU의 레지스터 중 하나에 저장되어 있음
  2. TLB ( Page Table )
    • Virtual Address 와 Physical Address를 연결해 주는 Table
    [ 정리 ]
    1. CPU는 메모리의 어딘가를 접근하기 위해서 Virtual Adress를 발생 시킴
    2. MMU는 Virtual Address를 받아서 Memory TTB에서부터 시작해 존재하는 Page Table을 접근
    3. 찾아간 Page Table 안에서 물리 주소를 찾아내어 주소 신호를 발생
    4. Memory는 해당 물리주소 안에 Data를 출력해 cpu에게 전달

 

🎆요구 페이징 ( Demand Paging )

  • 요구 페이징은 CPU가 요청할 때 프로세스의 데이터를 메모리에 올리는 것을 의미함. 즉 처음 부터 모든 데이터를 메모리에 적재하지는 않음

 

🎆페이지 폴트 ( PAGE FAULTS )

  • 어떤 페이지에 접근하려고 했을 때 해당 페이지가 실제 물리 메모리에 부재할 때 뜨는 인터럽트
  • 어떤 프로그램이 자신의 주소 공간 ( 가상 메모리 공간 )에는 존재하지만 시스템의 RAM에는 존재하지 않는 데이터/코드에 접근 시도할 경우 발생
  • 페이지 폴트가 발생하면 운영체제가 이를 해결한 뒤 다시 동일한 명령을 수행하는 식으로 동작함
  • 페이지 폴트 발생 시 운영체제는 그 데이터를 메모리로 가져와서 페이지 폴트가 전혀 발생하지 않은 것처럼 동작하게 함.
  • 페이지 폴트가 많이 발생할 수록 운영체제 성능이 많이 저하 되기에 이를 최소화 하기 위한 방법으로 ‘페이지 교체 정책’이 있음

 

🎆페이지 교체 정책

  • 메모리가 꼭 차있을 때 기존 페이지 중 하나를 물리 메모리에서 저장 매체로 내리고, 새로운 페이지를 방금 비워진 해당 물리 메모리 공간에 올림.
  • 어떤 기존 페이지를 내리면 좋을 지 결정하는 알고리즘이 바로 페이지 교체 알고리즘
  • 페이지 교체 알고리즘 종류
    • OPT ( Optional ) : 앞으로 가장 오랫동안 사용되지 않을 페이지 교체 / 이상적이나 실현 불가
    • FIFO ( First in First Out )
    • LRU ( Least Recently Used ) : 가장 오랫동안 사용되지 않은 페이지 교체
    • LFU ( Least Frequntly Used ) : 참조 횟수가 가장 적은 페이지 교체
    • MFU ( Most Frequently Used ) : 참조 횟수가 가장 많은 페이지 교체
    • NUR ( Not Used Recently ) : 최근에 사용하지 않은 페이지 교체 ( 클럭 알고리즘 - 참조 비트 & 변형 비트 사용 )

 

2. 캐시

  • 주기억 장치와 CPU 사이 위치
  • 캐시는 가상메모리와 달리 프로세서 자체에서 구현되는 저장 장치
  • 속도가 빠른 cpu와 느린 장치 (메모리) 사이에서 속도 차이에 따른 병목 현상을 줄이기 위한 범용 메모리
  • 최근에 사용된 데이터나 자주 사용되는 데이터를 임시로 저장
  • 캐시의 크기는 보통 수십 KByte ~ 수백 KByte

 

🎆캐시의 지역성

  • 캐시가 효율적으로 동작하려면 캐시의 적중률 ( hit - rate )를 극대화 시켜야한다.
  • 캐시에 저장할 데이터가 지역성을 가져야한다.
  • 지역성이란 데이터 접근이 시간적, 혹은 공간적으로 가깝게 일어나는 것을 의미한다.
  • 지역성의 전제 조건으로 프로그램은 모든 코드나 데이터를 균등하게 접근하지 않는다는 특성을 기본으로 한다.
  • 즉 지역성은 어느 한 순간에 기억장치 내 특정부분을 집중적으로 참조하는 특성

[ 지역성의 종류 ]

  1. 시간적 지역성 : 특정 데이터가 한번 접근 되었을 경우, 가까운 미래에 한번 더 데이터에 접근할 가능성이 높은 것
  2. 공간적 지역성 : 특정 데이터와 가까운 주소가 순서대로 접근 되는 경우

 

가상메모리와 캐시의 주요 차이점

  • 가상 메모리는 사용자를 위해 가상 메모리의 용량을 확장하지만 캐시 메모리는 cpu에 대한 데이터 엑세스를 더 빠르게 만든다
  • 가상 메모리는 메인 메모리보다 큰 프로그램의 실행을 가능하게 한다. 반면 캐시 메모리는 최근 사용된 원본 데이터의 복사본을 저장
  • 가상 메모리 관리는 운영 체제에 의해 수행되는 반면 캐시 메모리 관리는 하드웨어에 의해 수행
  • 가상 메모리 기술은 매핑 구조(가상 주소 → 물리주소 )가 필요하지만 캐시 메모리는 매핑 구조를 필요로 하지 않음

 

 

댓글