Skip to main content

Command Palette

Search for a command to run...

[혼공컴운] 1주차_기초부터 차곡차곡(Ch 01 ~ 03)

Updated
4 min read
[혼공컴운] 1주차_기초부터 차곡차곡(Ch 01 ~ 03)

01-1) 컴퓨터 구조를 알아야 하는 이유

  • 문제 상황을 빠르게 진단할 수 있고, 문제 해결의 실마리를 다양하게 찾을 수 있다.

  • 자신이 개발한 프로그램을 위한 최적의 컴퓨터 환경을 스스로 판단할 수 있다.(성능, 용량, 비용)

01-2) 컴퓨터 구조의 큰 그림

컴퓨터 구조

  • 컴퓨터가 이해하는 정보(0과 1로 표현된 정보)

    • 데이터 : 컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상 같은 정적인 정보

    • 명령어 : 데이터를 움직이고 컴퓨터를 작동시키는 정보

  • 컴퓨터의 네 가지 핵심 부품

    • CPU (중앙처리장치) : 메모리에 저장된 명령어를 읽어 들이고, 해석하고 실행하는 부품

      • ALU(산술논리연산장치) : 계산기

      • 레지스터 : CPU 내부의 작은 임시 저장 장치

      • 제어장치 : 제어신호라는 전기 신호를 내보내고 명령어 해석하는 장치(메모리 읽기, 쓰기 등)

    • 메모리(주기억장치) : 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품

      • 프로그램이 실행되기 위해서는 반드시 메모리에 저장되어 있어야 한다.

      • 메모리에 저장된 값에 빠르고 효율적으로 접근하기 위하여 주소를 사용한다.

      • 휘발성

    • 보조기억장치 : 메모리를 보조할 저장 장치

      • SSD, USB, DVD, CD-ROM

      • 비휘발성

    • 입출력장치 : 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치

      • 마이크, 스피커, 프린터, 마우스

네 가지 핵심 부품은 모두 메인보드(마더보드)라는 판에 연결되어 있고 연결된 부품들은 버스라는 통로로 서로 정보를 주고 받을 수 있다.

  • 시스템 버스

    • 주소 버스 : 주소를 주고받는다.

    • 데이터 버스 : 명령어와 데이터를 주고 받는다.

    • 제어 버스 : 제어 신호를 주고 받는다.

02-1) 0과 1로 숫자를 표현하는 방법

  • 비트(bit) : 0과 1을 나타내는 가장 작은 정보 단위

  • n비트는 2ⁿ가지 정보를 표현.

1바이트(1byte)8비트(8bit)
1킬로바이트(1kB)1,000바이트(1,000byte)
1메가바이트(1MB)1,000킬로바이트(1,000kB)
1기가바이트(1GB)1,000메가바이트(1,000MB)
1테라바이트(1TB)1,000기가바이트(1,000GB)
  • 워드(word) : CPU가 한 번에 처리할 수 있는 데이터 크기

  • 이진법 : 0과 1만으로 모든 숫자 표현, 1을 넘어가는 시점에서 올림, 이진수

    • 이진수 8 표기 : 1000₍₂₎ , 0b1000
  • 십진법 : 0 ~ 9 숫자만으로 모든 숫자 표현, 9를 넘어가는 시점에 자리 올림, 십진수

  • 십육진법 : 0~9, A~F의 정보로 표현, 15를 넘어가는 시점에 자리 올림

    • 십육진수 15 표기 : 15₍₁₆₎ , 0x15

이진수의 음수 표현

  • 2의 보수: 어떤 수를 그보다 큰 2ⁿ에서 뺀 값

    • 모든 0과 1을 뒤집고, 거기에 1을 더한 값
  • 컴퓨터 내부에서 어떤 값을 다룰 때 부가 정보가 필요한 경우 플래그를 사용하는데 양수와 음수를 구분할 때도 플래그를 사용한다.

02-2) 0과 1로 문자를 표현하는 방법

  • 문자 집합 : 컴퓨터가 인식하고 표현할 수 있는 문자의 모음

  • 문자 인코딩 : 문자 집합을 0과 1로 변환하는 과정

  • 문자 디코딩 : 0과 1로 이루어진 문자코드를 사람이 이해할 수 있는 문자로 변환하는 과정


  • 아스키 코드 : 아스키 문자에 대응된 고유한 수 , 7비트, 총 128개의 문자

    • 8비트 중 1비트는 오류 검출을 위해 사용되는 비트
  • 확장 아스키 : 아스키 코드에 1비트 추가, 256개의 문자

  • EUC-KR : 완성형 인코딩 방식, 한글 단어(2바이트)

    • 완성형 (한글 완성형 인코딩) : 완성된 하나의 글자에 고유한 코드 부여

    • 조합형(한글 조합형 인코딩) : 초성, 중성, 종성에 해당하는 코드를 합해서 하나의 글자 코드

  • 유니코드 : 현대 문자를 표현할 때 가장 많이 사용되는 표준 문자 집합

    • 글자에 부여된 값 자체를 인코딩된 값으로 삼지 않고 다양한 방법으로 인코딩

    • UTF-8, UTF-16, UTF-32 등의 인코딩 방식

03-1) 소스 코드와 명령어

모든 소스 코드는 컴퓨터 내부에서 명령어로 변환된다.

  • 고급 언어 : 사람이 이해하고 작성하기 쉽게 만들어진 언어

  • 저급 언어 : 컴퓨터가 직접 이해하고 실행할 수 있는 언어

    • 기계어 : 0과 1의 명령어 비트

    • 어셈블리어 : 0과 1로 표현된 기계어를 읽기 편한 형태로 변역한 언어


  • 컴파일 언어 : 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어

    • 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되고 결과로 목적 코드가 생성.
  • 인터프리터 언어 : 인터프리터에 의해 소스 코드가 한 줄씩 실행되는 고급언어

    • 컴파일 언어보다 느림.
  • 목적 파일 : 목적 코드로 이루어진 파일

  • 실행 파일 : 실행 코드로 이루어진 파일

목적 코드가 실행 파일이 되기 위해서는 링킹이라는 작업을 거쳐야 한다.

03-2) 명령어의 구조

  • 명령어

    • 연산 코드 (작동, 연산) : 명령어가 수행할 연산

      • 데이터 전송

      • 산술 / 논리 연산

      • 제어 흐름 변경

      • 입출력 제어

    • 오퍼랜드 ( 데이터, 위치) = 주소 필드 : 연산에 사용할 데이터, 연산에 사용될 데이터가 저장될 위치

      • 연산에 사용할 데이터를 직접 명시하기보다 데이터가 저장된 위치, 메모리 주소나 레지스터 이름

주소 지정 방식 : 연산에 사용할 데이터를 찾는 방법

  • 명령어의 길이 때문에 연산에 사용할 데이터가 저장된 위치(유효 주소)를 사용

  • 즉시 주소 지정 방식: 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시

  • 직접 주소 지정 방식 : 오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식

  • 간접 주소 지정 방식 : 유효주소의 주소를 오퍼랜드필드에 명시

  • 레지스터 주소 지정 방식 : 연산에 사용할 데이터를 저장한 레지스터를 오퍼랜드 필드에 직접 명시

  • 레지스터 간접 주소 지정 방식 : 연산에 사용할 데이터를 메모리에 저장하고 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시

기본 숙제

  • p. 51의 확인 문제 3번

    • 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 합니다.
  • P. 65의 확인 문제 3번

    • 1101₍₂₎을 음수로 표현한 값은 0011₍₂₎ 입니다.

More from this blog

[혼공후기] 재밌으면서도 알찼던 6주! 14기 활동 회고

매번 혼공 학습단을 신청해 봐야겠다고 했지만 기간 놓쳐버리기…또는 너무 바쁜 나머지 완주 못할 것 같아서 포기하다가 때마침 공부가 필요한 시기에 시간이 나서 신청하게 되었다. 공부할 새 책도 배송이 오고 완주할 생각에 기대감 상승. (+중간에 간식 먹을 생각) 참고할 수 있는 강의 영상이 있기 때문에 영상강의 보면서 책 필기 및 정리 이해한 내용을 바탕으로 블로그 정리 이런 방식으로 공부를 했다. 사실 하루에 조금씩 공부했으면 적당한 ...

Aug 23, 20252 min read

[혼공컴운] 6주차_책 한 권을 끝내다니(Ch 14~ 15)

14-1) 연속 메모리 할당 연속 메모리 할당 : 프로세스에 연속적인 메모리 공간을 할당하는 방식 스와핑 : 메모리상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식 스왑 영역 : 프로세스들이 쫓겨나는 보조기억장치의 일부 영역 스왑 아웃 : 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것 스왑 인 : 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨오는 것 → 스와핑을 이용하면 프로세스들이 요구하는 메모...

Aug 16, 20259 min read
[혼공컴운] 6주차_책 한 권을 끝내다니(Ch 14~ 15)

[혼공컴운] 5주차_끝이 보인다(Ch 12 ~ 13)

12-1) 동기화란 동시다발적으로 실행되는 많은 프로세스는 서로 데이터를 주고받으며 협력하며 실행된다. ⇒ 협력하여 실행되는 프로세스들은 실행 순서와 자원의 일관성을 보장해야 하기에 반드시 동기화가 필수 프로세스 동기화 : 프로세스들 사이의 수행 시기를 맞추는 것 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기 상호 배제 : 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기 공유가 불가능한 자원의 동시 사용을 피하...

Aug 9, 20255 min read
[혼공컴운] 5주차_끝이 보인다(Ch 12 ~ 13)

[혼공컴운] 4주차_운영체제 시작(Ch 09 ~ 11)

09-1) 운영체제를 알아야 하는 이유 운영체제 : 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램 (시스템) 자원 : 프로그램 실행에 마땅히 필요한 요소 컴퓨터가 부팅될 때 메모리 내 커널 영역에 적재 사용자 영역 : 사용자가 이용하는 응용 프로그램이 적재되는 영역 ⇒ 메모리 공간에 주소가 겹치지 않게 프로그램 적재해 준 건? 운영체제 실행할 프로그램 메모리에 적재 실행되지 않...

Jul 26, 20257 min read
[혼공컴운] 4주차_운영체제 시작(Ch 09 ~ 11)

[혼공컴운] 3주차_컴퓨터 구조 끝(Ch 06 ~ 08)

06-1) RAM의 특징과 종류 RAM 휘발성 저장 장치 실행할 대상 저장 보조기억장치 비휘발성 저장 장치 보관할 대상 저장 CPU는 보조기억장치에 직접 접근하지 못하고 RAM으로 복사하여 저장한 뒤 실행. RAM 용량이 적으면 보조기억장치에서 실행할 프로그램을 가져오는 일이 잦아 실행 시간이 길어지기 때문에 RAM용량이 충분히 크면 많은 데이터를 가져와 미리 RAM에 저장하여 프로그램들을 동시에 빠르게 실행하는데 유리하다...

Jul 19, 20258 min read
[혼공컴운] 3주차_컴퓨터 구조 끝(Ch 06 ~ 08)
W

WOW's dev archive

42 posts

언젠가 나에게 힘이 될 차곡차곡 쌓은 기록🥰