본문 바로가기

크래프톤 정글/TIL

[2주차] 컴퓨터 시스템 1.5 - 1.8

1.5  캐시가 중요하다

캐시 메모리의 필요성)

빠른 정보의 이동을 위해

시스템의 정보 이동에 많은 시간 소요 -> 프로그램 속도 늦추는 원인

예를 들어, 

프로그램이 로딩될때, 기계어 인스트럭션들은 하드웨어에 저장되어 있다가, 메인 메모리로 복사된다.

이러한, 여러 복사과정들이 '프로그램' 속도를 느리게 한다.

 

캐시 메모리 등장 배경)

물리학의 법칙으로, 저장장치의 크기와 속도는 반비례 관계..!

반도체 기술이 발달함에 따라, 프로세서(CPU)- 반도체 간의 속도 격차가 지속적으로 증가

프로세서-메모리 간의 격차를 대응하기 위해서, 작고 빠른 캐시 메모리 고안

 

캐시 메모리 역할)

데이터나 명령어를 빠르게 접근할 수 있는 고속 메모리

자주 사용되는 데이터나 명령어를 저장해서 빠르게 꺼내볼 수 있게,

('캐시 메모리를 이해하는 응용 프로그래머'는 캐시를 활용해 자신의 프로그램 성능을 10배 이상 개선시킬 수 있다...! 나도 그런 개발자 되고싶..당...ㅎ)

 

캐시메모리를 갖춘 CPU는 메모리 참조가 필요할 때, 가까운 곳에 위치한 캐시 메모리에 먼저 접근

(원래, 캐시 메모리가 없다면 시스템 버스와 메모리 버스를 거쳐서 메인 메모리에 직접 찾아가야 함.)

출처: https://it-eldorado.tistory.com/50

 * 프로세서(Processor) = CPU(Central Processing Unit)(중앙 처리 장치)

계산과 데이터 처리를 수행하는 핵심 하드웨어 구성 요소

다양한 명령어를 해석하고, 실행해, 컴퓨터의 모든 작업을 제어하는 역할

 

* 메모리는 데이터를 기억하기 위한 기억장치
1) 주기억장치: 휘발성 저장장치 (예: RAM, 캐시 메모리, 가상 메모리 등)
2) 보조기억장치: 비휘발성 저장장치 (영구적 저장) (예: SSD, HDD 등)

 

1.6  저장장치들은 계층구조를 이룬다

출처: https://thebook.io/080367/0005/
요즘은 이 HDD가 다 SSD로 변했다.

메모리 계층 구조

밑바닥으로 이동할 수록, 더 느리고, 더 크고, 바이트당 가격이 싸짐.

L0: 레지스터
L1 ~ L3: 캐시
L4: 메인 메모리

주요 아이디어: 한 레벨의 저장장치가 다음 하위레벨 저장장치의 캐시 역할을 함.

 

1.7  운영체제는 하드웨어를 관리한다

주요 아이디어: 운영체제(OS)는 사용자가 제대로 하드웨어를 사용할 거라고 믿지 않는다.

 

운영체제란?)

출처: https://velog.io/@e_juhee/CSAPP-1-7-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EC%9D%98-%EC%97%AD%ED%95%A0

소프트웨어와 하드웨어 사이에 위치한 소프트웨어 계층

응용 프로그램이 하드웨어를 제어하려면 언제나 운영체제를 통해서...!

 

운영체제(OS)의 목적)

1) 제멋대로 동작하는 응용프로그램들이 하드웨어를 잘못 사용하는 것을 막기 위해

2) 응용프로그램들이 단순하고 균일한 매커니즘을 사용하여/ 복잡하고 매우 다른 저수준 하드웨어 장치들을 조작할 수 있도록

 

운영체제(OS)의 결과)

추상화를 통해 달성함..!

출처: https://velog.io/@e_juhee/CSAPP-1-7-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EC%9D%98-%EC%97%AD%ED%95%A0

파일: 입출력 장치의 추상화

가상 메모리: 메인 메모리와 디스크 입출력 장치의 추상화

프로세스: 프로세서(= CPU), 메인 메모리, 입출력 장치 모두의 추상화

 

* 추상화란?

그 내부 동작을 고려하지 않으면서 코드를 사용할 수 있도록 해주는 것

 

1.7.1 프로세스

프로세서(= CPU), 메인 메모리, 입출력 장치 모두의 추상화

실행중인 프로그램에 대한 추상화

 

* 프로세스(Process)와 프로세서(Processor = CPU ) 구분

프로세스는 컴퓨터에서 실행 중인 프로그램의 인스턴스 또는 작업 단위

메모리에 할당된 프로그램 코드, 데이터, 스택, 힙 등의 자원을 가지며 실행중인 상태

프로세서는 중앙처리장치(CPU)

명령어를 해석하고 실행하여 계산과 데이터 처리를 수행하는 하드웨어 구성요소

 

운영체제는 한개의 프로그램만 실행되는 것 같은 착각에 빠지게 해준다.

프로세서는 프로그램 내의 다른 인스트럭션들의 방해 없이 순차적으로 실행하는 것처험 보인다.

다수의 프로세스들은 동일한 시스템에서 동시에 실행될 수 있다.

방법) 문맥 전환(context swithching)을 통해 교차실행을 수행

운영체제는 모든 상태정보 변화를 추적

컨텍스트라고 불리는, 

 

1.7.2 쓰레드(Thread)

 

1.7.3 가상메모리

메인 메모리와 디스크 입출력 장치의 추상화

 

1.7.4 파일

입출력 장치의 추상화

 

 

 

 

* RAM(Random Access Memory)  (= 메인 메모리 = 휘발성 메모리)

- 말 그대로 랜덤한 위치에 우리가 잠깐 기억할 정보들을 담는 곳...!

- 보조기억장치(SSD,HDD)보다 접근이 빠름

- 컴퓨터 전원이 꺼지면, 바로 사라지는 정보들 -> 영구적으로 보관하고 싶으면, 보조기억장치에 저장해줘야 한다.

RAM에는 SRAM과 DRAM이 있는데,

주기억장치는 주로 DRAM을 말한다. SRAM은 캐시나 래지스터를 말한다.

 

1.8 시스템은 네트워크를 사용하여 다른 시스템과 통신한다

 

1.9 중요한 주제들

1.9.1 Amdahl의 법칙

1.9.2 동시성과 병렬성

1.9.3 컴퓨터 시스템에서 추상화의 중요성