Computer Science/Theory of Computation

[CS] 컴퓨터와 프로그램 기초(Basic of Computer Program)

vinedpillar 2022. 5. 2. 01:47

컴퓨터란? 

  • 입력받은 데이터를 정해진 규칙대로 처리하고, 처리 결과를 저장하고 출력하는 전자 장치
  • 컴퓨터는 입력장치를 통해 데이터를 입력 받음
  • 정해진 규칙(프로그램)에 따라 중앙처리장치에서 연산 수행
  • 처리된 연산 결과물을 기억장치에 저장해고, 출력장치를 통해 출력
  • 컴퓨터는 장치부를 뜻하는 하드웨어와 프로그램을 뜻하는 소프트웨어로 구분

 

 

하드웨어

  • 하드웨어는 컴퓨터를 구성하는 기계적(물리적) 장치들의 집합
  • 중앙처리장치, 기억장치, 입력장치, 출력장치로 분류되며 장치는 시스템 버스로 연결되어 있음
    • 중앙 처리장치(CPU)
      • 프로그램의 실행과 데이터 처리를 담당하는 컴퓨터의 핵심 장치로 프로세서라고도
      • CPU 제어장치, 연산장치, 레지스터로 구성됨
        • 제어장치
          • CPU 모든 동작과 데이터 흐름을 통제하고 관리
          • 운영체제와 소통하며 컴퓨터의 자원을 관리
        • 연산장치
          • 프로그램에 기술되어있는 명령어를 수행
          • 코드를 실질적으로 실행시키는 장치
        • 레지스터
          • CPU 내에 존재하는 작고 빠른 기억장치
          • 연산장치의 동작에 필요한 데이터들을 임시로 보관하며 제공
    • 기억장치
      • 기억장치는 저장 장치라고도 하며, CPU 동작에 필요한 데이터들을 ,단기적으로 보관함
      • 장기적으로 저장하는 장치를 보조기억장치, 단기적으로 저장하는 장치는 주기억장치라고
        • 보조기억장치
          • 컴퓨터에게 필요한 정보를 반영구적으로 저장
          • 큰 용량의 데이터를 저장할 있지만, 데이터를 읽고 쓰는 속도가 느림
          • CPU 연산 속도는 엄청나게 빠른 반면, 보조기억장치는 느리기 때문에 CPU 보조기억장치와 직접적으로 소통하지 않음
          • Ex. SSD, HDD 등의 장치가 포함
        • 주기억장치
          • 컴퓨터가 프로그램을 수행하는 동안 필요한 모든 데이터들을 저장
          • 용량의 데이터를 저장할 없지만, 데이터를 읽고 쓰는 속도가 빠름
          • CPU 연산 속도를 어느 정도 따라 잡을 있을 정도로 빠르기 때문에 CPU 주기억장치와 직접 소통함
            (Ex. RAM, ROM 등의 장치가 포함)
        • 캐시메모리
          • 캐시메모리는 CPU 사용한 데이터와 관련된 데이터 재사용 가능성이 높은 데이터를 주기억장치로부터 미리 불러와 대기시켜놓는 역할을
        • 메모리의 계층구조
          • 기억장치는 용량이 높을 수록 가격과 속도가 낮아지고, 용량이 낮을 수록 가격과 속도가 높아지는 반비례 구조를 가지고 있음(메모리를 종류별로 구분하는 근본적인 이유)
    • 입력장치
      • 사용자로부터 컴퓨터 내부로 데이터를 입력받는 장치
      • 키보드, 마우스, 마이크
    • 출력장치
      • 컴퓨터 내부 데이터를 사용자에게 감각할 있는 형태로 출력해주는 장치
      • 모니터, 스피커, 프린터
    • 시스템 버스
      • 시스템 버스는 CPU 포함한 하드웨어 장치간의 통로로 하드웨어 장치를 물리적으로 연결한 전선을 의미
        • 데이터 버스: 하드웨어간 데이터를 전달하는 통로
        • 주소 버스: 데이터가 어디에 도착해야하는지에 대한 정보를 전달하는 통로
        • 제어 버스: CPU 제어장치가 생성한 제어 신호를 다른 장치로 전달하는 통로
    • 컴퓨터의 동작
      • 프로그램을 켜면 운영체제가 보조기억장치에 저장되어있던 프로그램을 주기억장치인 RAM 로드시킴
        (메모리 적재)
      • 로딩이 완료되면 프로그램이 모니터상에 출력되어 나타나고, 입력장치를 통해 조작을 하거나 데이터를 입력받을 있음
        (실행 중인 프로그램을 프로세스라고 )
      • 동작을 명령하면 CPU는 프로그램의 소스 코드에 작성된 대로 해석하고 계산을 하여 결과값을 주기억장치에 저장하고 모니터를 통해 출력하게 됨

 

 

소프트웨어

  • 소프트웨어는 물리적인 형태가 없는 컴퓨터의 구성 요소로 하드웨어의 제어 방식을 기술한 명령어의 집합
  • 크게 시스템 소프트웨어와 응용 소프트웨어로 구분할 수 있음
    • 시스템 소프트웨어
      • 응용 소프트웨어를 실행하기 위한 일종의 플랫폼
        (ex. Mac, Win Linux 같은 운영체제 Or Node.js, JRE 같은 런타임 환경)
      • 하드웨어와 직접적으로 소통하며 키보드, 마우스, 모니터 등의 하드웨어 장치들이 동작할 있도록 해줌
    •  응용 소프트웨어
      • 시스템 소프트웨어를 제외한 모든 소프트웨어
      • 일반적인 프로그램이며 애플리케이션()이라고도
    •  프로그래밍
      • 프로그램(=소프트웨어)을 만드는 과정으로, 특정 목적을 달성하기 위해 설계된 알고리즘을 프로그래밍 언어를 사용하여 코드로 작성하는 과정
      • 프로그램은 프로그래밍의 결과로 만들어진 산출물로 어떠한 목적을 달성하기 위한 컴퓨터 명령문의 집합체
    •  프로그래밍 언어
      • 사용자의 명령을 컴퓨터가 이해할 있는 언어로 설명하기 위해 필요
      • 컴퓨터는 기계어를 사용하지만, 사람이 이를 이해하기 어렵기 때문에 컴퓨터의 언어와 사람의 언어를 매개해주는 프로그래밍 언어 활용
      • 기계어에 가까울수록 저수준 언어, 사람의 언어에 가까울수록 고수준 언어라고
    • 프로그래밍 용어 
      • 컴파일
        • 프로그래밍 언어로 작성된 소스 코드를 컴퓨터가 이해할 있도록 기계어 코드로 변환해주는 작업
      • 빌드
        • 작성한 소스 코드를 실행 있는 산출물로 변환시키는 과정을 의미
        • 컴파일을 마친 코드는 기계어 코드로 변환되지만 프로그램이 실행되기 위해서는 실행 파일(exe, msi ) 만들어주는 빌드 과정이 필요
      • 통합 개발 환경(IDE)
        [Integrated Development Environment]
        • 코드를 작성할 사용하는 프로그램으로 프로그래밍에 필요한 모든 작업을 하나의 프로그램 안에서 처리할 있도록 만들어진 프로그램
        • IDE 사용하면 단순히 코드를 작성하고 편집하는 뿐만 아니라 디버깅, 빌드 등의 작업을 IDE 안에서 수행할 있음

 

'Computer Science > Theory of Computation' 카테고리의 다른 글

웹 기초  (0) 2022.05.02
의사 코드(슈도 코드)  (0) 2022.04.28