본문 바로가기
Etc/Computer Science

컴퓨터와 프로그래밍의 이해

by 달의 조각 2022. 6. 24.

컴퓨터의 이해

 

🖥️ 컴퓨터

입력받은 데이터 정해진 규칙대로 처리해서 결과를 저장하고 출력하는 전자 장치

시초: 앨런 튜링이 세계 2차대전 시기 독일군의 암호를 해독하기 위해 발명한 튜링 머신
입력 장치 → SW or 애플리케이션 → 중앙처리장치(연산) → 기억 장치 → 출력 장치

 

⚒️ 컴퓨터의 구성 요소

소프트웨어: 하드웨어의 동작 방식을 규정한 명령어 집합

· 시스템 소프트웨어: 응용 소프트웨어를 실행(운영체제, 런타임 환경)하기 위한 플랫폼 역할로,
                                  하드웨어와 직접적으로 소통한다(장치 드라이버)

· 응용 소프트웨어: 시스템 소프트웨어를 제외한 모든 소프트웨어 = 애플리케이션, 앱

 

하드웨어

1. 중앙처리장치(CPU): 프로그램의 실행과 데이터 처리를 담당하는 핵심 장치 = (마이크로)프로세서
     · 제어장치: CPU 모든 동작과 데이터 흐름 관리, 운영체제와 소통, 자원 관리
     · 연산장치: 코드를 실질적으로 실행
     · 레지스터: CPU 내의 작고 빠른 기억장치, 연산장치에 필요한 데이터 임시 보관

더보기

<동작 과정>

  1. 주기억장치: 입력 장치에서 입력받은 데이터 or 보조기억장치에 저장된 프로그램 읽음
  2. CPU: 프로그램 실행을 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽고 처리,
             결과를 다시 주기억장치에 저장
  3. 주기억장치: 처리 결과 → 보조기억장치에 저장 or 출력 장치로 보냄
  4. 제어장치: 1~3 과정에서 명령어가 순서대로 실행되도록 각 장치를 제어

 

2. 기억장치(저장장치): CPU에서 필요한 데이터를 장기적(보조기억장치), 단기적으로 보관(주기억장치)
    · 보조기억장치: 큰 용량의 데이터 저장 가능, 속도가 느려서 CPU와 직접적으로 소통하지 않는다
                              SSD, HDD
    · 주기억장치: 프로그램을 수행하는 동안 필요한 모든 데이터 저장, 큰 용량 X 속도 ↑
                           RAM

💡 캐시 메모리: 속도가 빠른 장치와 느린 장치 사이의 병목 현상을 줄이기 위한 메모리

주기억장치는 빠르지만 CPU 연산 속도만큼 빠르지는 않다.
CPU가 사용한 데이터 중 재사용성이 높은 데이터를 미리 불러 와서 대기시켜 놓는다.

데이터: 현금, 캐시 메모리: 지갑, 주기억장치: ATM

💡 기억장치의 계층 구조

용량: 보조기억장치 > 주기억장치 > 캐시기억장치 > CPU 내 레지스터
속도, 가격: 보조기억장치 < 주기억장치 < 캐시기억장치 < CPU 내 레지스터

3. 입력 장치

4. 출력 장치

5. 시스템 버스: CPU를 포함한 하드웨어 장치 간 물리적 통로 - 전선
    · 데이터 버스: 중앙처리장치 - 기타장치 → '양방향' 버스
    · 주소 버스: 어디에 도착해야 하는가? 정보를 전달하는 통로 → '단방향' 버스
    · 제어 버스: CPU의 제어 장치가 생성한 신호를 전달하는 통로 → '양방향' 버스

 

🧮 컴퓨터의 동작

READ → PROCESS → WRITE

계산기

운영체제 → 보조기억장치의 계산기 프로그램 → 주기억장치 RAM : 로딩(메모리에 적재)
계산 완료 시 결과 → 주기억장치 → 출력 장치 👀

끊임없이 RAM과 소통, 운영체제가 64bit라면, CPU는 RAM으로부터 데이터를 한 번에 64비트씩 읽어 온다.

 


 

프로그래밍의 이해

 

📩 컴파일

소스 코드 → 기계어 코드

 

📦 빌드

빌드 ⊃ 컴파일
작성한 소스 코드를 실행할 수 있는 산출물로 변환
프로그램이 실행되려면 .exe 또는 .msi 확장자를 가진 실행 파일로 만드는 빌드 과정이 필요하다

 

📭 통합개발환경(IDE)

코드를 작성할 때 사용하는 프로그램

'Etc > Computer Science' 카테고리의 다른 글

Git  (0) 2022.07.01
Linux - 패키지, 사용 권한, 환경변수  (0) 2022.06.30
Linux - CLI 기본 명령어  (0) 2022.06.30
Windows 개발 환경 세팅  (0) 2022.06.24
웹 클라이언트와 웹 서버  (0) 2022.06.24

댓글