[따배씨++]Chapter0. 컴퓨터의 작동 원리, 통합개발환경
카테고리: Cpp
태그: Programming
인프런에 있는 홍정모님의 홍정모의 따라하며 배우는 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가 발전된 형태. 물리적인 움직임 없음 ➡️ 임의 접근 (빠름)
🚆 컴퓨터 부팅 절차
- 전원 공급
- 부트 프로그램 실행 (ROM BIOS: read only memory - basic input output system)
- 하드웨어 검사
- 하드웨어 잘 있나, 혹시 추가한 장치 있나, 등등..
- 운영체제 로드
- 운영체제 실행
운영체제 역할
Operating System (OS)
- “하드웨어 제어” 같이 귀찮고 모든 프로그램에게 필요한 일들을 대신해줌
- CPU, 메모리 자원 관리
- ex) 실행되는 프로그램이 여러 개일 경우 어떤 순서로 어느 시간 동안 사용할지
- 입출력 관리, 네트워킹, 보안, 등등..
- OS 데이터는 지워지면 안 되기 때문에 보조기억장치에 저장 ➡️ 컴퓨터 키면 주기억장치로 가져오고 실행
🚆 현대적 컴퓨터의 기본 구조
폰 노이만 구조
- Stored-Program Computed 내장형 프로그램 방식 컴퓨터
- 이전에는 프로그램이 컴퓨터 밖에 존재 (ex. 이미테이션 게임)
- 연산과 기억 분리
- CPU와 Memory는 System bus를 통해 데이터 주고 받음
- 보통 input, output은 OS가 해줌
🚆 컴퓨터 메모리의 기본 구조
- 데이터의 주소만 안다면 바로 접근 가능 ➡️ 훨씬 빠름
- C/C++의 pointer기능. 다른 언어들은 알아서 지정하고 감춰줌
CPU, Memory 간 통신
- address bus, data bus, control bus가 따로 존재 (데이터의 단위가 다름)
- ‘어느 주소(address)’ 에 ‘어떤 데이터(data)’ 를 ‘저장해라/가져와라(set/enable)’
🚆 CPU의 기본 구조
- 실제 기계어 명령어를 분석하여 실행
- CPU 명령어 생각보다 몇 개 없음
- 레지스터 = 작업공간 (work-station)
CPU 작동 방식
실제 CPU 구조
- 실제 CPU 칩에는 실행 부분뿐만 아니라 캐시 등의 부가 장치가 통합된 경우가 많음
- 최근에는 멀티 코어 시스템을 통해 연산을 병렬적으로 동시에 처리 (개별 코어의 성능은 한계에 왔다고 함)
- CPU 잘 써먹으려면 멀티 코어를 활용할 수 있도록 코딩을 해야 함
🚆 정보의 단위
- 비트 Bit (binary digit)
- 0 or 1
- 바이트 byte
- 1byte = 8 bit
- 메모리 주소의 기본 단위
- 워드 word
- CPU가 데이터를 다루는 기본 단위 (레지스터의 크기)
- 32 bit, 64 bit, …
🚆 IDE - Integrated Development Environment (통합 개발 환경)
- 코딩, 디버그, 컴파일, 배포 등 프로그램 개발에 필요한 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공
- 너무너무 x100 편해서 살짝 경계해야 함
- 컴파일러와 링커를 묶어서 컴파일러라 부르는 경우도 많음 ( c파일 하나당 obj파일 하나씩 만듬 )
Debug 모드 & Release 모드
- 디버그 모드 : 디버그를 도와주는 파일들이 같이 저장되어 있어 용량이 매우 크고 느림
- 릴리즈 모드 : 실행파일만 저장
- 배포할때는 릴리즈 모드로
- x86 → 32 bit / x64 → 64 bit
- 메모리 사이즈 크기가 다름
- 훨씬 더 많은 데이터를 다룰 수 있음
댓글 남기기