[CS50] Chapter 1: 컴퓨터와 컴퓨팅 - Topic 1~3

Ha Young Do·2021년 8월 4일
0

Topic 1. 컴퓨터를 구입할 때 무엇을 고려해야 할까요?

하드웨어란?

  • 중앙처리장치
    aka 프로세서, 입력장치에서 받은 명령을 실제로 처리
    1초에 가능한 연산 수 단위: 기가헤르츠(GHz)
  • 기억장치
    입력된 명령이나 데이터가 저장되는 공간
    주기억장치 vs 보조기억장치
    • 주기억장치: RAM, 일시적으로 데이터를 저장하는 임의 접근 기억 장치 (단위: GB)
    • 보조기억장치: 하드드라이브(C:), 영구적으로 데이터를 저장하는 장치
      하드디스크(HDD)는 원판 모양의 플래터를 회전시켜 데이터 작성 및 조회 가능
      SSD는 움직이는 부품 없이 빠른 속도로 처리 가능 ($$$)
      플래시드라이브는 USB 등 이동식 메모리를 말함
  • 입출력장치
    데이터를 입력하고 (마우스, 키보드, 스캐너) 출력하는 (모니터, 프린터) 장치
    모니터의 경우 성능을 볼 때 해상도 (출력 선명도를 픽셀의 개수로 표현) 와 크기 (대각선 끝과 끝을 인치로 표현) 를 따진다
  • 주변기기
    컴퓨터 자체부품이 아니라 컴퓨터와 연결해 사용하는 경우, USB 포트로 연결하는 것이 업계 표준

생각해보기

  1. 어떻게 USB는 지금처럼 보편화 될 수 있었을까요? 애플이나 다른 회사는 이 표준 포트 사용을 피하고 싶어할까요?
  • 휴대성, 범용성으로 보편화 되었으나 애플의 경우 타사와의 차별화 및 시장 점유율을, 이윤 추구를 위해 표준 포트 사용을 꺼려할 이유가 있음
  1. SSD가 아닌 HDD를 사용해야 하는 이유에는 어떤 것들이 있을까요?
  • 용량 및 비율의 관점에서 HDD가 SSD보다 경쟁력이 있음

Topic 2. 컴퓨터는 수 많은 정보를 어떻게 기억할까요?

컴퓨터는 4~5가지 서로 다른 종류의 기억장치를 가지고 있을 수 있다.
각각의 기억장치들은 속도 및 저장공간, 그리고 각자가 수행하는 기능이 서로 다르다.

  • 속도
    (느림) HDD ➡️ RAM ➡️ (L3 ➡️ L2 ➡️ L1) ➡️ CPU (빠름)

  • 저장공간
    (많음) HDD ➡️ RAM ➡️ (L3 ➡️ L2 ➡️ L1) ➡️ CPU (적음)

CPU

컴퓨터가 처리할 모든 정보 (bit 단위) 는 CPU를 거쳐야 한다.
CPU는 저장공간이 한정적이며 (64bit 등이 보편적) 파일 전체를 읽는 것이 아니라 처리가 필요한 부분만 feed in 하는 식으로 처리된다.

RAM

파일 혹은 어플리케이션을 실행시키면 데이터가 저장되어 있는 HDD로부터 RAM에 복사되어 실행이 된다. HDD에서 바로 실행시키지 않는 이유는 RAM의 속도가 더 빠르기 때문이다.

HDD의 용량이 약 500GB정도가 있을 수 있다면, RAM은 약 2GB정도 있을 수 있다.
HDD가 처리 속도가 더 느림에도 불구하고 용량이 더 큰 이유는?
1. 가지고 있는 모든 데이터를 한번에 읽고 있을 필요가 없기 때문에
2. 적은 저장공간을 가지고 있는 CPU가 처리할 수 있는 데이터가 한정적이므로 병목현상이 일어나게 될 것이기 때문에
3. RAM과 비교했을 때 용량 대비 가격이 더 나가기 때문에
4. 인간 사용자가 한번에 수행할 수 있는 기능이 한정적이기 때문에 (불필요함)
5. 위와 같은 이유로 용량이 큰 RAM이 소비자 시장에 나와 있지 않기 때문에

Cache Memory

RAM-CPU 사이에 L1, L2 등의 캐시메모리가 있을 수 있다.
파이프라인에서 CPU에서 멀리 떨어져 있는 기억장치가 느리더라도 CPU에 가까운 기억장치들이 처리 속도가 빠르면 효율성이 높아진다 (CPU에게 끊임없이 처리할 내용을 전달해 줄 수 있기 때문에)

기억장치의 성능을 볼 때 무엇을 따져야 할까?

  • HDD: 용량이 클수록 저장할 수 있는 파일 및 어플리케이션이 많아진다
  • RAM: 용량이 클수록 한번에 실행할 수 있는 기능이 많아진다
    (필수적이지는 않으나 적을수록 사용자 경험에 차질을 준다 - 답답할 수 있음)
    (실제로 여러 기능이 "동시에" 실행이 되는 것이 아니라, 컴퓨터에 비해 인간 사용자의 인식 속도가 매우 느리기 때문에 "동시에" 실행되는 것처럼 느껴질 수 있다.)
  • 가상메모리 (virtual memory): RAM이 과부하되었을 때 사용자에게 알리지 않고 열려 있는 파일 및 어플리케이션 중 당장 쓰지 않는 (background에 있는) 것들을 HDD의 가상메모리로 옮긴다. 이 경우 가상메모리에 있는 파일 및 어플리케이션으로 transition할 때에 lag가 발생할 수 있다 (e.g. alt+tab 눌러서 창 바꿀 때 느려지는 경우)
  • 캐시메모리 (L1, L2, L3 cache memory): 주로 CPU에 귀속되어 있어 조립식 컴퓨터를 사용하지 않는 이상 딱 집어 더 나은 성능을 고를 수는 없다.
  • CPU: 스펙상 성능이 비슷한 CPU라도 특정 기능에 최적화된 CPU가 있을 수 있다 (게이밍, 포토샵 등)

결론: 비슷한 CPU 성능을 가진 컴퓨터들도 low-level 디테일에 따라 성능이 다르게 "느껴질" 수 있다.

생각해보기

  1. 여러분이 사용하는 컴퓨터의 기억장치는 얼마나 되나요?
  • 256GB 하드드라이브, 2.7GHz Dual-Core CPU, 8GB 1867MHz RAM
  1. 왜 RAM이 하드디스크보다 비싸다고 생각하나요?
  • 속도가 더 빠르기 때문에
  1. 왜 이렇게 다른 단계의 기억장치가 있을까요?
  • 각자 메모리가 수행하는 기능을 달리하여 효율성을 높이기 때문에

Topic 3. 컴퓨터는 자료를 어떻게 처리할까요?

bit

컴퓨터는 기본적으로 2진법을 베이스로 정보를 처리한다. (0/1, yes/no, true/false, etc.)
이러한 2가지 정보를 담을 수 있는 정보의 가장 작은 단위를 bit라고 부른다. (short for binary digit)

byte

  • 8개의 bit가 모여 byte가 된다
  • bit 하나가 2가지의 정보를 담을 수 있기 때문에 256개의 서로 다른 byte가 존재할 수 있다.
  • 알파벳 1개를 표현할 수 있는 단위이기 때문에 여전히 그다지 유용하지는 않다.

kilobyte

  • 대략적으로 1000 bytes
  • 정확히는 1024 bytes (왜 1024인가? 2의 10제곱이기 때문에)
  • 1GB짜리 USB를 구매했는데 용량이 900MB밖에 없는 경우? 인간이 이해하기 쉬운 '1000'의 단위로 마케팅을 하나 컴퓨터가 용량을 해석할 때에는 2진법을 토대로 하기 때문에 차이가 발생한다.
  • 보편적으로 글로만 되어 있는 문서 파일이 몇십 MB인 경우가 많다.

megabyte

  • one million bytes
  • 문서 파일이 이미지, 차트 등으로 인해 용량이 큰 경우 MB 단위일 수 있다
  • MP3 등의 음악 파일이 encode 될 때 주로 한 곡당 3-10MB 정도 된다. (대략 분당 1MB 정도)

gigabyte

  • one billion bytes
  • 주로 USB의 형태로 한 플래시메모리(움직이는 부품이 없고, 전자기 신호만을 이용해 작동하는 메모리)의 경우 32, 64, 128GB 등이 있다.
  • HDD의 경우 128, 256, 512GB 등이 있다.

terabyte

  • one trillion bytes
  • 이렇게 많은 용량이 필요한 이유가 무엇일까?
  • 많은 데이터를 관리해야 하는 웹 앱의 서버
  • 다량의 이미지, 영상이 쌓이면 TB단위의 저장공간이 필요할 수 있다.
profile
Codestates Software Engineering Full IM 28th

0개의 댓글