컴퓨터개론 (국비1일차)

 

 대학에서 배우는 과목 중 중요한 과목은

컴퓨터 개론, 자료구조, 알고리즘이라고 한다. (3대장?)

그러나 국비학원에선 짧은 시간 내에서 프로그래밍과 함께 배우기 어려우므로 따로 보충을 해야 한다고 한다.
(그래서 나 같은 경우는 udemy나 부스트코스를 통해 보충을 하려고 한다.)

여하튼 오늘 배우는 개론의 목차는 이렇다.

  • 컴퓨터 시스템의 특징
  • 컴퓨터 시스템의 구성
  • 기억장치
  • 소프트웨어
  • 자료의 표현과 연산

 

 

먼저 크기를 나타내는 단위부터 알아보자.

10^3 K kilo(킬로) 10^-3 m milli(밀리)
10^6 M mega(메가) 10^-6 u micro(마이크로)
10^9 G giga(기가) 10^-9 n nano(나노)
10^12 T tera(테라) 10^-12 P pico(피코)
10^15 P peta(페타) 10^-15 f femto(펨토)

 

  • 컴퓨터 시스템의 특징
    • 전자계산기(EPDS)의 개요
      • 단순한 수치계산뿐만 아니라 수치계산, 자동제어, 자료처리, 사무 관리, 경영, 과학 등 많은 양의 자료를 처리하고 신속한 정보를 제공하는 장치
      • EPDS : Electronic Data Processing System (전자 자료 처리 조직체)
      • 특징 : 신속성, 정확성, 대용량성, 호환성, 자동성, 범용성
      • 창조성은 없으며 한 번에 하나씩 명령을 처리함(위에서 아래로 차례대로)
  • 컴퓨터 시스템의 구성
    • 컴퓨터 시스템의 구성요소
      • 3대 구성요소
        • 입력장치 - 중앙처리장치 - 출력장치
      • 5대 구성요소
        • 입력장치 - 중앙처리장치(주기억장치, 제어장치, 연산장치) - 출력장치
      • 중앙처리장치(CPU)
        • 주기억 장치 : 현재 실행 중인 프로그램과 데이터를 기억하는 장치 - 램(RAM), 롬(ROM)
        • 연산 장치 : 산술 및 논리 연산을 수행하는 장치 (누산기, 가산기, 보수기, 상태 레지스터, 어드레스 레지스터, 데이터 레지스터, 기억레지스터로 구성)
        • 제어 장치 : 각 장치에 필요한 동작을 지시, 제어 작업을 담당하는 장치로, 프로그램 카운터 명령어 레지스터, MAR, MBR, 인터럽트, 명령어해독기, 부호기로 구성 
  • 기억장치
    • 기억장치의 역할
      • 프로그램과 데이터를 보관하고 있다가 필요할 때 꺼내어 사용할 수 있도록 한다.
      • write : 주기억장치(main memory or main storage)에 데이터를 기억시키는 것
      • read : 주기억장치에 기억된 내용을 꺼내는 것
      • 주기억 장치 : 실행될 프로그램과 데이터를 기억한다.
      • 보조기억장치(auxiliary storage): 오랫동안 보관해야 할 프로그램과 데이터를 저장하는 역할 
      • 프로그램은 반드시 주기억장치에 기억되어야만 실행
  • 소프트웨어
    • Software 은 시스템 소프트웨어와 응용 소프트웨어로 나눠져 있다.
    • 시스템 소프트웨어는 제어 프로그램과 처리 프로그램으로 나뉘어 있다.
    • 제어 프로그램은 감시, 작업관리, 데이터 관리 프로그램으로 나뉘고
    • 처리 프로그램은 언어번역, 서비스, 문제처리 프로그램으로 나뉘어 있다.
    • 운영체제(OS : Operating System)
      • 컴퓨터 시스템에 관련된 모든 자원을 관리, 제어하여 효율성을 최대로 높여주는 프로그램의 집합체
      • 운영체제의 목적 : 이용가능도 향상, 응답시간 단축, 신뢰도 향상, 처리능력 향상
    • 프로그래밍 언어 
      • 기계어(기계중심언어) : 0과 1의 조합으로만 이루어진 언어
      • 어셈블리어(기계중심언어) : 기계어를 기호와 1대 1로 대응시켜 기호화한 언어
        • 컴파일러 언어
      • FORTRAN : 과학 기술 계산용으로 개발된 언어
      • COBOL : 사무처리용으로 개발된 언어
      • ALGOL : 블록구조 프로그램의 효시로 PASCAL과 C언어의 모체임
      • PL/1 : 포트란, 코볼, 알골 등의 장점을 합한 언어
      • C : 유닉스 운영체제 하에서 사용되는 시스템 프로그램 작성에 적합한 언어
      • JAVA : 웹 및 응용프로그램 작성에 많이 사용되는 언어
      • RPG : 각종보고서를 쉽게 작성하는 언어                                     
        •  인터프리터 언어
      • BASIC : 배우기 쉽고 간편한 대화형 언어, 교육용 언어
      • JAVASCRIPT : 웹페이지(html, css)의 동작 및 액션을 제어하는 데 사용하는 언어
      • LISP : 프로그램이 자료처럼 사용되는 인공지능이나 전자회로에서 사용되는 언어
      • PROLOG : 제5세대 언어로 각광받는 인공지능용 언어
      • 언어번역 프로그램
        • 어셈블러 : 어셈블리어를 기계어로 번역
        • 컴파일러 : 고급언어를 기계어로 번역(C, C++, C#, Java)
        • 인터프리터 : 베이직 언어와 같이 한 줄씩 기계어로 번역
          목적프로그램을 생산하지 않고 번역즉시 실행됨(BASIC, Python, Ruby, Perl, PHP, Javascript)
      • 프로그램의 생성과정의 용어
        • 원시 프로그램(Source Program) : 사용자가 프로그래밍 언어를 이용해 작성한 프로그램
        • 목적 프로그램(Object Program) : 원시 프로그램을 언어 번역 프로그램을 이용해 기계어로 번역한 프로그램
        • 실행 프로그램(Active Program) : 로드(Load)되어 실행 가능한 상태에 있는 프로그램
        • 링커 프로그램(Linker Program) : 실행 가능한 프로그램을 만들기 위해 목적프로그램을 서로 연결시키는 프로그램
        • 디버깅(Debugging) : 사용자 프로그램이나 시스템 프로그램 등의 소프트웨어 및 하드웨어에서 존재하는 오류를 검출하여 수정하는 것
        • 로더(Loader) : 디스크나 테이프에 저장된 목적 프로그램을 읽어서 주기억 장치에 올린 다음 실행시키는 프로그램
        • 할당 : 프로그램의 실행을 위해서 메모리 내에 기억공간을 확보하는 작업

 

  • 자료의 표현과 연산
    • 수의 체계
      • 10진수, 2진수, 8진수, 16진수 (컴퓨터가 숫자를 세는 방법이 이렇게 4가지)
      • 10진수를 각각 다른 진수로 바꾸는 방법이나 다른 진수를 10진수로 바꾸는 방법은 고등학교 수학 시간에 했을 것이라 생각하고 생략
      • 2진수를 8진수로 바꾸는 방법은 간단하다.
        101101110011(2)을 3개씩 묶는다. 101/101/110/011 이렇게 묶은 수를 각각 8진수로 바꿔주면
        101>5, 110>6, 011>3이 된다. 즉 5563(8)으로 간단히 바꿀 수 있다.
        반대로 바꾸는 것 역시 5, 5, 6, 3을 각 각 2진법으로 바꿔주면 된다.
      • 2진수를 16진수로 바꾸는 방법은 위와 거의 동일하다.
        다만 8진수로 바꿀 땐 3자리씩 묶었다면 이젠 4자리씩 묶어서 계산해주면 된다.
      • 8진수를 16진수로 바꾸는 방법은 따로 방법이 없다. 따라서 10진수로 바꾼 다음에 다시 계산하거나 2진수로 바꾼 다음에 다시 계산하는 방법밖에 없다. 보통 개발자들은 2진수를 이용해 변환해 준다.
    • 정보의 표현 단위
      • Bit : 정보의 최소 단위, 2진수 0 또는 1에 대응되는 한 단위
      • Byte : 한 문자를 표현하기 위한 기본 단위(8bit), 자료의 최소 단위
      • Word : CPU가 한 번에 처리하는 정보의 단위 (지금은 32bit > 즉 4Byte가 기준, 앞으로 더 늘어날 수도 있음)
      • Field(Item) : 하나의 단위로 취급되는 문자 및 단어들의 집합
      • Record : 하나 이상의 항목들로 구성된 정보 표현의 기본 단위
      • File : 여러 레코드들의 모임 단위, 프로그램을 구성하는 기본단위
      • Database : 논리적으로 연관된 레코드나 파일의 모임
    • 정보의 크기단위
      • 2^10 → 1024 Byte → 1KB 
      • 2^20 → 1024*1024 Byte → 1024KB
      • 2^30 → 1024*1024*1024 Byte → 1024MB
      • 2^40 → 1024*1024*1024*1024 → 1024GB
      • 2^50 → 1024*1024*1024*1024*1024 → 1024TB
    • Date Code
      • BCD코드 : 6비트(2개의 Zone bit와 4개의 digit bit)
        • 2^6(64) 문자 표현, 2진화 10진 코드
      • EBCDIC 코드 : 8비트(4개의 존 비트와 4개의 digit)
        • 2^8(256) 문자 표현, 확장 2진화 10진 코드
      • ASCII 코드 : 7비트(3개의 존 비트와 4개의 digit)
        • 2^7(128) 문자 표현, 1bit(패리티비트) 추가하면 8비트로 사용, 데이터통신용으로 이용
      • 유니코드 : 2바이트(16비트) - ASCII 코드 포함
        • 2^16(65,536) 문자 표현, 전 세계 모든 문자표시

  • 새로 안 사실

- CPU와 하드디스크(보조 기억 장치)는 연결 x (그래서 보조 기억 장치에 저장하라는 코드가 따로 있다.)

- RAM은 휘발성 메모리, 전원 끌 때까지 데이터를 저장하는 것이 아닌, 그 프로그램을 끌 때까지 저장한다.

- 64bit, 32bit는 CPU와 RAM을 연결하는 전선의 개수?를 나타내는 것이며, 당연히 많으면 많을수록 한 번에 보낼 수 있는 데이터양이 많다.

- 프로그램 책에 나와있는 메모리는 전부 RAM을 말하며, 보조 기억 장치는 따로 정확한 명칭으로 쓰여있다.

- 누산기는 계산 결과의 중간중간 값을 저장하는 장치이다. 예를 들어 6+5+2 라면 먼저 6+5를 계산하여 11이라는 결과가 나올 텐데 누산기는 여기서 11을 저장하고 그 후 +2를 하는 것이다.

- 보수기는 컴퓨터 연산 장치 중 뺄셈이 없어서 필요한 장치이다. 보수 즉, 초등학교 때 배운 보색의 개념처럼 수에도 반대가 되는 개념이 있는데 이를 이용해 덧셈하여 뺄셈을 계산하는 것이다. (신기해)

- 컴퓨터는 0과 1을 이해하는 것이 아니다. 사실 전기가 들어오고 안 오고 즉 5v, 0v를 인식하는 것이었으나, 이것이 on, off로 작성되는 과정을 거쳐 더 간소화되어 1과 0으로 표시되는 것이다.

- c언어는 computer language 해서 c언어인 줄 알았는데, 알고 보니 그 앞에 a언어, b언어가 있었고 b언어를 모체로 해서 만들어서 c언어로 명명했다고 한다.

- c언어는 플랫폼에 종속적이며, java는 플랫폼에 독립적이다.