[따배씨++]Chapter0. 컴퓨터의 작동 원리, 통합개발환경

Date:     Updated:

카테고리:

태그:

인프런에 있는 홍정모님의 홍정모의 따라하며 배우는 C언어 강의를 듣고 정리한 내용입니다.
중간에 등장하는 ppt 내용들은 모두 강의자료를 캡처한 것입니다.


🚆 컴퓨터의 구성 요소

CPU - Central Processing Unit (중앙 처리 장치)

  • 실제 기계어 명령어를 분석하여 실행하는 연산 담당
  • 주기억장치 하고만 일함.
  • 보조기억장치에는 직접 접근 X


Primary Storage (주기억장치)

  • Random-Access Memory (RAM)
    • 전원을 끄면 데이터 사라짐
    • but 속도가 빠름
  • Read-Only Memory (ROM)
    • 고정된 데이터 기억만 함 (쓰기 X)
    • 컴퓨터를 구동하기 위한 기본적인 정보 들어있음


GPU - Graphics Processing Unit (그래픽 처리 장치)

  • 그래픽스 카드 안에 있는 “cpu” (메모리도 있음)
  • 특정 연산 반복에 유리
  • 게임을 위해 만들어졌으나 현재 ML에서 유용하게 씀


Secondary Storage (보조기억장치)

전원 꺼도 데이터 유지!

  • HDD (Hard Disk Drive) : cd를 뱅글뱅글 돌려가면서(driving) 물리적으로 읽음 ➡️ 순차 접근 (느림)
  • SSD (Solid State Drive) : USB가 발전된 형태. 물리적인 움직임 없음 ➡️ 임의 접근 (빠름)


🚆 컴퓨터 부팅 절차


cpp0_1

  • 전원 공급
  • 부트 프로그램 실행 (ROM BIOS: read only memory - basic input output system)
  • 하드웨어 검사
    • 하드웨어 잘 있나, 혹시 추가한 장치 있나, 등등..
  • 운영체제 로드
  • 운영체제 실행


운영체제 역할

Operating System (OS)

cpp0_2

  • “하드웨어 제어” 같이 귀찮고 모든 프로그램에게 필요한 일들을 대신해줌
  • CPU, 메모리 자원 관리
    • ex) 실행되는 프로그램이 여러 개일 경우 어떤 순서로 어느 시간 동안 사용할지
  • 입출력 관리, 네트워킹, 보안, 등등..
  • OS 데이터는 지워지면 안 되기 때문에 보조기억장치에 저장 ➡️ 컴퓨터 키면 주기억장치로 가져오고 실행


🚆 현대적 컴퓨터의 기본 구조

폰 노이만 구조

cpp0_3

  • Stored-Program Computed 내장형 프로그램 방식 컴퓨터
  • 이전에는 프로그램이 컴퓨터 밖에 존재 (ex. 이미테이션 게임)
  • 연산과 기억 분리


cpp0_4

  • CPU와 Memory는 System bus를 통해 데이터 주고 받음
  • 보통 input, output은 OS가 해줌


🚆 컴퓨터 메모리의 기본 구조

cpp0_5

  • 데이터의 주소만 안다면 바로 접근 가능 ➡️ 훨씬 빠름
  • C/C++의 pointer기능. 다른 언어들은 알아서 지정하고 감춰줌


CPU, Memory 간 통신

cpp0_6

  • address bus, data bus, control bus가 따로 존재 (데이터의 단위가 다름)
  • ‘어느 주소(address)’‘어떤 데이터(data)’‘저장해라/가져와라(set/enable)’


🚆 CPU의 기본 구조


cpp0_7

  • 실제 기계어 명령어를 분석하여 실행
  • CPU 명령어 생각보다 몇 개 없음
  • 레지스터 = 작업공간 (work-station)


CPU 작동 방식

image


실제 CPU 구조

cpp0_10

  • 실제 CPU 칩에는 실행 부분뿐만 아니라 캐시 등의 부가 장치가 통합된 경우가 많음
  • 최근에는 멀티 코어 시스템을 통해 연산을 병렬적으로 동시에 처리 (개별 코어의 성능은 한계에 왔다고 함)
  • CPU 잘 써먹으려면 멀티 코어를 활용할 수 있도록 코딩을 해야 함


🚆 정보의 단위

  • 비트 Bit (binary digit)
    • 0 or 1
  • 바이트 byte
    • 1byte = 8 bit
    • 메모리 주소의 기본 단위
  • 워드 word
    • CPU가 데이터를 다루는 기본 단위 (레지스터의 크기)
    • 32 bit, 64 bit, …


🚆 IDE - Integrated Development Environment (통합 개발 환경)


cpp0_9

  • 코딩, 디버그, 컴파일, 배포 등 프로그램 개발에 필요한 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공
  • 너무너무 x100 편해서 살짝 경계해야 함
  • 컴파일러와 링커를 묶어서 컴파일러라 부르는 경우도 많음 ( c파일 하나당 obj파일 하나씩 만듬 )


Debug 모드 & Release 모드

cpp0_12

  • 디버그 모드 : 디버그를 도와주는 파일들이 같이 저장되어 있어 용량이 매우 크고 느림
  • 릴리즈 모드 : 실행파일만 저장
    • 배포할때는 릴리즈 모드로
  • x86 → 32 bit / x64 → 64 bit
    • 메모리 사이즈 크기가 다름
    • 훨씬 더 많은 데이터를 다룰 수 있음



맨 위로 이동하기

Cpp 카테고리 내 다른 글 보러가기

댓글 남기기