Computer Science

[CS 기초 지식] 1 컴퓨터 구조

jjunyangk 2025. 3. 20. 16:59

급하게 지원한 회사에서 CS 시험을 본다고 연락이 왔다..

학부 때 자료구조나 컴퓨터 네트워크 같은 다양한 전공 강의를 들었기 때문에 기본적인 전공 지식은 있지만, 주로 데이터 분석과 딥러닝 모델 구축을 해와서 운영체제나 응용 프로그램 같은 서비스 개발 관련 내용은 가물가물한 부분이 좀 있다.

그래서 유튜브를 보며 이 게시물에 정리를 해보려고 한다.! 

https://youtu.be/Jldtn3XRGic?si=t5pY-eJa9RL-z7m9 - '개발자로 취업하려면 꼭 알아야 할 기술 면접 CS 지식 총 정리 특강' prod by 조코딩

유명한 조코딩 유튜버님의 강의를 듣고 어떤 CS  지식들이 있는지 개요를 먼저 확인하겠다.

CS 공부 Tip! )

  • 키워드 뜻 풀이 나열로 컴퓨터 과학을 학습하면 안된다. 
    • 이유 : 응용문제에 답변하기 어려움, 꼬리 질문에 답변하기 어려움
    • 지식이 근본적으로 무슨 뜻인지 제대로 이해하고 코드로 어떻게 풀어갈 수 있는지도 이해해야함
    • 프로그램 작동 근거 이해 하세요? 👉 여기에 답변을 할 수 있어야 함
  • 기술 면접 카테고리
    • 공통) 컴퓨터 구조, 운영체제, 자료구조, 네트워크, 데이터 베이스 👉 대부분의 직무에서 물어봄
    • 개발) 프로그래밍 언어, 프레임워크/ 라이브러리, 개발도구, 이력서 및 전문성 👉 직무에 따라 달라질 수 있음
    • 그래서 공통 지식은 꼭 필수로 알고 있어야 한다!

 

컴퓨터 과학 지도 그리기 

1. 컴퓨터 구조

출처) 조코딩 유튜브 '개발자로 취업하려면 꼭 알아야 할 기술 면접 CS 지식 총 정리 특강'

컴퓨터가 이해하는 정보

  • 명령어 : 컴퓨터의 두뇌라고 볼 수 있는 핵심적인 부품인 CPU가 실행하는 가장 기본적인 정보 
    • python에 관심이 있다면 python interpreter가 어떻게 소스코드를 명령어로 변환해서 실행하는지 알아야함
    • 명령어 cycle = 명령어 실행양상 👉 매우 중요한 interrupt 를 배울 수 있다.
      • interrupt는 컴퓨터가 실행 중인 작업을 잠시 멈추고 더 중요한 작업을 먼저 처리해야 할 때 발생하는 신호
      • 컴퓨터는 보통 CPU가 명령어를 하나씩 실행하면서 프로그램을 수행하는데 어떤 긴급한 이벤트가 발생하면 현재 작업을 멈추고 그 이벤트를 먼저 처리한 후 다시 원래 작업으로 돌아오는 방식 (interrupt 방식)
        • 여러 가지 작업을 동시에 수행할 수 있는 이유 중 하나가 인터럽트 때문
      • 하드웨어(키보드, 마우스, 하드디스크와 같은 외부장치에서 발생) 와 소프트웨어(프로그램 실행 중에 직접 발생시킴) 의 interrupt 방식이 있음 
        • 키보드를 누르면 CPU가 입력을 처리해야 함 (키보드 인터럽트) (HW)
        • 마우스를 움직이면 CPU가 좌표를 업데이트해야 함 (마우스 인터럽트) (HW) 
        • 예외(Exception): 0으로 나누는 연산을 하면 CPU가 오류를 감지하고 인터럽트를 발생시킴 (SW)
        • 시스템 호출(System Call): 프로그램이 파일을 열거나 네트워크를 사용할 때 운영체제(OS)가 개입하기 위해 인터럽트를 발생시킴 (SW)
      • 인터럽트의 과정
        • 현재 실행 중인 명령어 중지 : CPU은 작업을 중단하고 상태를 저장함
        • 인터럽트 핸들러 실행 : 인터럽트를 처리할 수 있는 코드 실행
          • ex) 키보드 인터럽트 : Python 에서 KeyboradInterrupt : Ctrl + C 입력을 감지해 프로그램 중단
        • 인터럽트가 처리되면, CPU는 저장했던 상태로 돌아가서 중단된 작업을 이어서 실행함
  • 데이터 : 명령어가 실행되기 위해 필요한 정보 
  • 컴퓨터는 0,1만 이해할 수 있음 👉 어떻게 0,1로 표현할까? 
    • encoding을 학습해야함!

 

컴퓨터의 핵심 부품

  •  CPU : 메모리로부터 명령어를 읽어들이고 실행하는 부품, 두뇌
    • 오늘날의 CPU가 명령어를 어떻게 빠르게 처리할 수 있게 되었는지 학습하는 것이 중요함
    • 파이프라이닝, 멀티코어 CPU, 멀티스레드 CPU 개념을 학습할 수 있음
      • 파이프라이닝 (Pypelining) : CPU에서 여러 개의 명령어를 겹쳐서 처리하여 실행 속도를 높이는 기술
        • 예전 CPU는 한 명령어를 모두 처리한 후 다음 명령어를 실행함 
        • 파이프라이닝을 사용하면 각 단계별로 나누어 동시에 여러 명령어를 처리할 수 있음
        • CPU 명령어 실행 과정 : IF(명령어 가져오기), ID(명령어 해석), EX(실행), MEM(메모리 접근), WB(결과 저장)
      • 멀티코어 CPU (Multi-Core CPU) : CPU 내부에 여러 개의 코어(독립적인 연산 장치)를 포함하여 동시에 여러 작업을 수행하는 기술
        • 다중 코어가 각각의 작업을 분배하영 처리함
        • 멀티태스킹 성능 향상 (여러 개의 프로그램을 동시에 실행할 때 유리)
      • 멀티스레드 CPU (Multi-Threading CPU) : 하나의 CPU 코어가 여러 개의 스레드를 동시에 처리할 수 있도록 하는 기술 
        • 스레드 : 프로그램 내부의 작업 흐름 / 하나의 프로그램은 하나의 스레드를 갖는다.
        • 한 코어에서 두 개의 스레드를 처리하여 CPU 자원을 더 효율적으로 활용할 수 있음
        • 대표적인 기술: Hyper-Threading (인텔), SMT (Simultaneous Multi-Threading) (AMD)
    • 메모리와 캐시 메모리
      • 메모리 : 실행중인 프로그램이 저장되는 부품 / 메인메모리, 주기억장치라고 불리기도 함
        • 하드웨어 : RAM (컴퓨터의 전체성능에 큰 영향을 미침)
        • RAM : 프로그램 실행 중 CPU가 직접 데이터를 읽고 쓸 수 있는 공간
        • RAM의 종류와 성능을 알아두는게 좋음
        • RAM의 역할
          • 실행 중인 프로그램과 관련된 데이터 및 명령어를 저장
          • CPU가 하드디스크 대신 빠르게 데이터에 접근할 수 있도록 지원
          • 사용자가 여러 프로그램을 동시에 실행하는 멀티태스킹 가능
        • RAM 종류
          • DRAM (Dynamic RAM) : 일반적으로 사용되는 RAM, 주기적으로 데이터 새로고침(Refresh) 필요
          • SRAM (Static RAM) : DRAM보다 빠르지만 가격이 비싸고 용량이 적음 (주로 캐시 메모리로 사용)
          • DDR (Double Data Rate) SDRAM : DDR4, DDR5 등 세대별 발전 (클럭 속도와 전력 효율 개선)
        • RAM 성능을 결정하는 요소
          • 클럭 속도 (MHz) → 높을수록 빠름 (예: DDR4 3200MHz, DDR5 6000MHz)
          • 용량 (GB) → 크면 멀티태스킹과 대용량 작업 수행 가능
          • 대역폭 (Bandwidth) → 데이터를 전송할 수 있는 속도
        • RAM 과 SSD의 차이
          • RAM: 실행 중인 프로그램을 저장 (빠르지만 전원 끄면 데이터 사라짐)
          • SSD/HDD: 장기적으로 데이터를 저장 (느리지만 전원이 꺼져도 데이터 유지됨)
      • 캐시 메모리 :
        • CPU와 RAM 사이에서 데이터를 빠르게 전달하는 초고속 메모리 
        • CPU가 자주 사용하는 데이터를 저장하여 처리 속도를 향상
        • 어떻게 메모리를 보조하는지 
        • 어떤 역할을 맡고있는지
    • 보조기억장치
      • USB, 하드디스크, SSD 와같은 대용량 저장장치
      • 보관할 프로그램을 저장함 
      • 메모리는 전원이 꺼지면 모든 걸 잃음 , 얘는 저장된 내용이 그대로 있음 (비휘발성)
      • 어떻게 데이터를 안전하게 보관할 수 있는지 학습
      • 다양한 보조장치를 사용해서 안정적으로 처리할 수 있는지 (레이드 기술)
    • 입출력장치
      • 컴퓨터 외부와 연결되어서 내부와 정보를 주고받을 수 있는 기술
      • GPU, 네트워크 카드, 마이크, 스피커, 키보드 (입출력 장치) 
      • 어떻게 컴퓨터 내부와 정보를 주고 받는지
      • 프로그램 기준에서 입출력 어떻게 하는지
        • 장치 드라이버가 무엇인지
        • 폴링은 무엇이며 입출력과 어떤 상관이 있는지