본문 바로가기
Everyday Study

2024.06.26 (수)

by xogns93 2024. 6. 26.

1Hz 1초에 하나의 파형

1kHz 1초에 1,000개의 파형

 

클럭(CLOCK) - 컴퓨터에서 연산을 조정하는 타이밍 신호, 단위는 Hz이며 1헤르츠는 1초에 한번 신호가 반복되는 것을 의미

 

 

RAM의 종류와 특징 , DDR이란? SDR이란?

1. SRAM (Static RAM)

  • 특징: 데이터를 유지하기 위해 정기적인 리프레시(refresh)가 필요하지 않습니다.
  • 구조: 플립플롭(flip-flop) 구조로 이루어져 있어 전력 소모가 적고 데이터 접근 속도가 빠릅니다.
  • 장점: 빠른 속도, 높은 안정성.
  • 단점: 고비용, 낮은 밀도(즉, 더 큰 공간을 차지).
  • 용도: CPU 캐시 메모리, 레지스터.

2. DRAM (Dynamic RAM)

  • 특징: 데이터를 유지하기 위해 주기적인 리프레시(refresh)가 필요합니다.
  • 구조: 커패시터와 트랜지스터로 이루어져 있어 더 높은 밀도의 메모리를 제공할 수 있습니다.
  • 장점: 비용이 저렴, 높은 밀도.
  • 단점: 전력 소모가 크고, 속도가 상대적으로 느림.
  • 용도: 메인 메모리(RAM 모듈)로 가장 일반적으로 사용됨.

DRAM의 세부 유형

a. SDRAM (Synchronous DRAM)

  • 특징: 시스템 클럭에 동기화되어 동작합니다.
  • 장점: 속도가 빠름.
  • 용도: 일반 PC의 메모리.

b. DDR SDRAM (Double Data Rate SDRAM)

  • 특징: 클럭 주기당 두 번의 데이터 전송(상승 및 하강 엣지)을 수행합니다.
  • 장점: 더 높은 데이터 전송률.
  • 버전: DDR, DDR2, DDR3, DDR4, DDR5 등이 있으며, 각 버전마다 데이터 전송 속도와 전력 효율성이 개선됨.
  • 용도: 최신 컴퓨터와 서버의 메모리.

3. SRAM vs DRAM 비교

  • 속도: SRAM이 더 빠름.
  • 가격: DRAM이 저렴.
  • 전력 소모: SRAM이 더 적음.
  • 밀도: DRAM이 더 높음(더 많은 데이터를 같은 공간에 저장 가능).


CPU 와 메인메모리 -> Double Data Rate (DDR) Synchronous DRAM이란? 각 클럭 주기의 양쪽 끝에서 데이터 전송을 지원함으로써 메모리 칩의 데이터 스루풋을 2배로 증가시키는 메모리

클럭 신호를 가지고 타이밍을 맞춘다 (하이레벨에서 맞춤) -> 로우레벨에선 아무것도 안하니까 클럭을 2개 쏨으로 인해서 로우레벨이 없는거처럼 느껴지게 하는 것

 

랜덤 액세스 메모리 (RAM) = 어딜 읽고 쓰든 속도 똑같다.

 

버퍼(buffer)는 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역, 속도차가 큰 두 대상이 입출력을 수행할 때 효율성을 위해 사용하는 임시 저장공간

 

캐시 2개로 나눠져있다 - 인스트럭션 캐시(기계어), 데이터캐시 [코드영역, 데이터영역]

CPU가 2개로 운용하기 때문에

 

 




 

CPU 명령어 실행사이클  Fetch -> Decoding -> Execution

 

1. Fetch (가져오기)

이 단계에서는 CPU가 메모리에서 실행할 명령어를 가져옵니다. 

2. Decode (해독)

가져온 명령어를 해독하여 어떤 작업을 수행할지 결정합니다.

명령어가 뭔지 판단(사칙논리연산인지 주변장치간의 데이터통신인지 등)

3. Execute (실행)

해독된 명령어를 실제로 실행합니다.

 

명령어 파이프라이닝

명령어 파이프라이닝이란, 간단하게 CPU가 시간을 알뜰하게 사용해 명령어를 처리하는 방법을 말합니다.

한 번에 하나의 명령어만 실행하는 것이 아니라 하나의 명령어가 실행되는 도중에 다른 명령어의 실행을 시작함으로써 동시에 명령어 여러 개를 실행하는 방식

  1. 명령어 인출 (Instruction Fetch)
  2. 명령어 해석 (Instruction Decode)
  3. 명령어 실행 (Excute Instruction)
  4. 결과 저장 (Write Back)

CPU는 위 사진처럼 같은 단계가 겹치지만 않는다면 각 단계를 동시에 실행할 수 있습니다.

최초 실행은 3클럭이 걸리지만 이후로는 1클럭마다 실행

 


 

비트맵 그래픽 - 서로 다른 점(픽셀)들의 조합으로 그려지는 이미지 표현 방식, 비트맵 이미지는 정교하고 화려한 표현이 가능하여, 주로 사진 이미지에 주로 사용, 비트맵 이미지는 크기를 늘리거나 줄이면 원본 이미지에 손상이 가는 것이 특징

 

벡터 그래픽 - 점과 점을 연결해 수학적 원리로 그림을 그려 표현하는 방식, 벡터 이미지는 그 특성 상 이미지의 크기를 늘리고 줄여도 손상되지 않는 장점이 있지만, 사진과 같은 복잡한 그림을 표현하려면 컴퓨터에 엄청난 부담을 주곤 했기에 웹에서는 잘 사용되지 않음

 


스택(stack) 영역

  • 프로그램이 자동으로 사용하는 임시 메모리 영역
  • 함수 호출 시 생성되는 지역 변수와 매개 변수가 저장되는 영역으로, 함수 호출이 완료되면 저장된 메모리도 해제된다.
  • 스택 영역은 푸시(push) 동작으로 데이터를 저장하고, 팝(pop) 동작으로 데이터를 인출한다. → 후입선출(LIFO) 구조

힙(heap) 영역

  • 동적으로 할당된 변수가 할당되는 영역(Dynamic Memory Allocation)
  • 프로그래머가 직접 공간을 할당, 해제하는 메모리 공간
  • 영역 중 유일하게 런타임 시 크기가 결정된다.
  • 선입선출(FIFO) 구조로, 가장 먼저 들어온 데이터가 가장 먼저 인출된다.
    • 힙 영역이 메모리의 낮은 주소에서 높은 주소의 방향으로 할당
      되기 때문이다.

데이터(data) 영역

  • 전역 변수와 정적(static) 변수가 할당되는 영역
  • 숫자나 문자열 값인 리터럴도 저장된다.
  • 프로그램의 시작과 동시에 할당되며, 프로그램이 종료되면 메모리에서 소멸한다.
  • 잠깐 썼다 없앨 데이터가 아닌 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간

코드(code) 영역

  • 실행할 프로그램의 코드(=우리가 작성한 소스코드)가 저장되는 영역
  • 텍스트(text) 영역이라고도 한다.
  • CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 된다.
  • 프로그램이 시작하고 종료될 때까지 메모리에 계속 남아있는다.

 

 

 

후입선출(LIFO : Last In First Out)은 나중에 넣은 객체가 먼저 빠져나가는 자료구조  - 스택

선입선출(FIFO: Firest In First Out)은 먼저 넣은 객체가 먼저 빠져나가는 자료구 -

 


 

인코딩 - 문자를 0과 1로 변환

디코딩 - 0과 1로 이루어진 문자코드를 사람이 이해할 수 있는 문자로 변환

 

아스키(ASCII) 코드 = 알파벳, 아라비아숫자, 특수문자

아스키 문자 집합에 속한 문자들은 각각 7비트로 표현(2의 7승, 128개의 문자 표현가능) (실제로는 8비트를 사용하지만 1비트는 패리티비트, 오류검출을 위해 사용되는 비트라서 실질적으로 문자표현을 위해 사용되는 비트는 7비트)

 

EUC-KR = 아스키 코드로는 한글문자를 표현할 수 없으므로 한글 인코딩 방식 (완성형, 조합형 2가지 방식 존재)

완성형 인코딩 - 완성된 하나의 글자에 고유한 코드 부여

조합형 인코딩 - 초성, 중성, 종성을 위한 비트열을 할당 후 조합해 하나의 글자 코드를 만드는 인코딩 방식

 


 

변수의 라이프사이클(Variable Lifecycle)은 변수가 생성되고 사용되다가 소멸되는 과정을 의미합니다.

 

1. 변수의 선언 (Declaration)

변수를 사용할 것을 컴파일러에게 알리는 단계입니다. 변수의 이름과 데이터 타입을 지정합니다. 예를 들어, C 언어에서는 int x;와 같이 변수를 선언합니다.

2. 변수의 초기화 (Initialization)

변수에 처음으로 값을 할당하는 단계입니다. 선언과 동시에 초기화를 할 수도 있고, 나중에 초기화할 수도 있습니다. 예를 들어, int x = 10;과 같이 초기화할 수 있습니다.

3. 변수의 사용 (Usage)

변수가 할당된 메모리 공간에서 값을 읽거나 수정하는 단계입니다. 변수를 사용하여 연산을 수행하거나 함수의 인자로 전달할 수 있습니다.

4. 변수의 범위 (Scope)

변수가 유효한 코드 블록을 의미합니다. 변수는 자신이 선언된 범위 내에서만 접근할 수 있습니다. 범위는 주로 네 가지로 나뉩니다:

  • 지역 변수 (Local Variable): 함수나 블록 내에서 선언되고, 해당 함수나 블록 내에서만 유효합니다.
  • 전역 변수 (Global Variable): 프로그램 전체에서 유효하며, 함수 외부에서 선언됩니다.
  • 정적 변수 (Static Variable): 선언된 블록 내에서만 유효하지만, 프로그램이 종료될 때까지 메모리에 남아 있습니다.
  • 인스턴스 변수 (Instance Variable): 객체 지향 프로그래밍에서 클래스의 인스턴스에 속하는 변수입니다.

5. 변수의 소멸 (Destruction)

변수가 더 이상 필요 없을 때, 변수에 할당된 메모리 공간이 해제되는 단계입니다. 지역 변수는 함수나 블록이 종료되면 소멸되고, 전역 변수는 프로그램이 실행할 때 생 종료될 때 소멸됩니다.

 


 

 

 

컨텍스트 스위칭(Context Switching)은 컴퓨터 운영 체제에서 하나의 프로세스나 스레드의 작업 상태를 저장하고, 다른 프로세스나 스레드의 작업을 시작하기 위해 그 상태를 복원하는 과정을 말합니다. 쉽게 말해, 컴퓨터가 여러 작업을 동시에 처리하는 것처럼 보이도록 만드는 방법입니다.

 

  • 컴퓨터에서 여러 프로그램을 동시에 실행할 때, 예를 들어 웹 브라우저와 워드 프로세서를 동시에 사용하는 경우를 생각해보세요. 사용자가 워드 프로세서에서 글을 쓰다가 웹 브라우저로 전환하면, 운영 체제는 워드 프로세서의 현재 상태(위치, 편집 내용 등)를 저장하고, 웹 브라우저의 상태를 복원하여 작업을 이어가게 합니다.
  • 이 과정이 매우 빠르게 반복되기 때문에 사용자는 두 프로그램이 동시에 실행되는 것처럼 느끼지만, 사실은 운영 체제가 매우 빠르게 프로그램 간의 컨텍스트를 전환하고 있는 것입니다.

왜 중요한가요?

  • 효율적인 자원 사용: 여러 프로세스가 CPU를 공유하도록 하여 CPU 자원을 효율적으로 사용할 수 있게 합니다.
  • 응답성 향상: 사용자에게 여러 프로그램이 동시에 실행되는 것처럼 느끼게 하여 더 나은 사용자 경험을 제공합니다.
  • 다중 작업 지원: 여러 프로그램이 동시에 실행될 수 있도록 함으로써 다중 작업 환경을 지원합니다.

컨텍스트 스위칭은 컴퓨터가 다중 작업을 처리하는 데 중요한 역할을 하며, 현대 컴퓨터 시스템의 핵심적인 기능 중 하나입니다.