혼자 공부하는 컴퓨터 구조+운영체제 (1)

Erdos·2024년 7월 2일
0

감상

목록 보기
29/42
post-thumbnail

저자 github

1주차

  • Chapter 01 ~ 03
  • 기본숙제: p. 51의 확인 문제 3번, p. 65의 확인 문제 3번 풀고 인증하기
  • 추가숙제: p. 100의 스택과 큐의 개념을 정리하기

01 컴퓨터 구조 시작하기


1-2 컴퓨터 구조의 큰 그림

1. 메모리: 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품

2. CPU: 컴퓨터의 두뇌. 메모리에 저장된 명령어를 읽어 들이고, 읽어 드린 명령어를 해석하고, 실행함.

  • 내부 구성 요소

    • 산술논리연산장치(ALU, Arithmetic Logic Unit): 컴퓨터 내부에서 수행되는 대부분의 계산 수행. 위키(ko) 위키(en)
    • 레지스터(register): 임시 저장 장치.
    • 제어장치(CU, Control Unit): 제어 신호, control signal이라는 전기 신호를 내보내고 명령어를 해석하는 장치.
      예컨대, CPU가 메모리에 저장된 값을 읽고 싶을 땐 메모리를 향해 메모리 읽기라는 제어 신호를 보낸다.

3. 보조기억장치

  • 하드디스크, SSD, USB 메모리, CD-ROM
  • 전원이 꺼져도 저장된 내용을 잃지 않음

4. 입출력장치

  • 마이크, 스피커, 프린터, 마우스, 키보드 등
  • 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치

    💡 보조기억장치는 관점에 따라 입출력장치의 일종으로 볼 수 있다.

5. 메인 보드와 시스템 버스

  • 여러 컴퓨터 부품을 부착할 수 있는 슬롯과 연결 단자 있음
  • 버스: 메인보드 내부 버스를 통해 메인보드에 연결된 부품들은 서로 정보를 주고받을 수 있음.
  • 시스템버스: CPU, 메모리, 보조기억장치, 입출력 장치를 연결하는 가장 중요한 버스
    • 주소 버스
    • 데이터 버스: 명령어와 데이터
    • 제어 버스

02 데이터


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

✔️ [참고] Word란?

→ 64비트 워드 CPU
이름비트 개수
nibble4
byte8
half word16
word32
double word64

2의 보수(two's complement)

  • 사전적인 의미: 어떤 수를 그보다 큰 2n2^n에서 뺀 값
  • 모든 이진수의 0과 1을 뒤집는다 → 거기에 1을 더한다.
  • flag: 이진수만 봐서는 이게 음수인지 양수인지 구분하기가 어렵다. 그걸 컴퓨터가 이해하기 위한 부가 정보

16진수

모두를 위한 컴퓨터 과학(CS50 2019) [5.메모리] 참고

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

🤔 pandas로 데이터 프레임을 읽거나 저장할 때, 가끔 만나는 인코딩 에러를 이해할 수 있어서 좋았다.

1. 아스키 코드

  • ASCII(American Standard Code for Information Interchange)
  • 초창기 문자 집합, 영어알파벳/아라비아 숫자/일부 특수 문자
  • 7bit → 272^7, 128개의 문자
  • 하나의 아스키 문자를 나타내기 위해 8비트를 사용합니다. 여기서 1비트는 party bit. 오류 검출을 위해 상ㅇ되는 비트(실제 문자 표현에는 사용되지 않음)

2. EUC-KR(한글 인코딩)

  • 완성형 인코딩: 초성, 중성, 종성의 조합으로 이루어진 완성된 하나의 글자에 고유한 코드를 부여하는 방식
  • 한글 한 글자를 표현하려면 16bit가 필요
  • 네 자리 십육진수로 나타낼 수 있다.
  • 쀍, 쀓, 믜는 표현할 수 없다. → 모든 한글을 표현할 수 없다는 것 때문에 문제가 발생함. → 이 문제를 해결하려고 CP949(Code Page 949). 하지만, 한글을 모두 표현하지 못함.

3. 유니코드와 UTF-8

  • 모든 언어를 아우르는 문자 집합과 통일된 표준 인코딩 방식
  • 현재 제일 많이 사용함
  • UTF = Unicode Trasformation Format
  • UTF-8: 통상 1바이트부터 4바이트까지의 인코딩 결과

03 명령어


3-1 소스 코드와 명령어

  • 참고: 모두를 위한 컴퓨터 과학(CS50 2019) [3.배열]

    💡 저급 언어로 개발할 일이 없지 않나요?
    하드웨어와 밀접하게 맞닿아 있는 프로그램을 개발하는 임베디드 개발자, 게임 개발자, 정보보안 분야는 어셈블리어를 많이 이용한다.

3-2 명령어의 구조

  • 이 부분은 이해가 잘 되지 않아서 지금은 보류!

연산 코드와 오퍼랜드

  • 명령어: 연산코드와 오퍼랜드로 구성
연산 코드(operation code)오퍼랜드(operand)
연산 코드 필드
명령어가 수행할 연산
연산자
오퍼랜드 필드
연산에 사용할 데이터가 저장된 위치
피연산자

오퍼랜드(주소 필드)

  • 연산에 사용할 데이터
  • 연산에 사용할 데이터가 저장된 위치
  • 숫자, 문자(연산에 사용할 데이터), 메모리, 레지스터 주소
연산 코드(operation code)오퍼랜드오퍼랜드설명
moveax0오퍼랜드가 2개, 2-주소 명령어
poprbq오퍼랜드 1개, 1-주소 명령어
ret오퍼랜드 하나도 없음, 0-주소 명령어

연산코드

유형(CPU마다 종류와 생김새가 다름)

  • 데이터 전송

    • MOVE
    • STORE
    • LOAD
    • PUSH
    • POP
  • 산술/논리 연산

    • ADD/SUBTRACT/MULTIPLY/DIVIDE
    • INCREMENT/DECREMENT
    • AND/OR/NOT
    • COMPARE
  • 제어 흐름 변경

    • JUMP
    • CONDITIONAL JUMP
    • CALL
    • RETURN
  • 입출력 제어

    • READ(INPUT)
    • WRITE(OUTPUT)
    • START IO
    • TEST IO

주소 지정 방식

🤔 텍스트로 정리했지만, 그림으로 이해하기. 이름 자체로 이해해도 좋을 듯하다.
이 외의 주소 지정 방식은 4장에서 학습!

  • 유효주소: 연산의 대상이 되는 데이터가 저장된 위치
  1. 즉시 주소 지정 방식(immadiate addressing mode): 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시하는 방식. 표현할 수 있는 데이터의 크기가 작아지지만 이하 주소 지정 방식들보다 빠르다.
  2. 직접 주소 지정 방식(direct addressing mode): 오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식
  3. 간접 주소 지정 방식(indirect addressing mode): 유효 주소의 주소를 오퍼랜드 필드에 명시하는 방식. 두 번의 메모리 접근이 필요하므로 일반적으로 느림.
  4. 레지스터 주소 지정 방식(register addressing mode): 연산에 사용할 데이터를 저장한 레지스터를 오퍼랜드 필드에 직접 명시하는 방식. CPU 외부에 있는 메모리보다 내부에 있는 레지스터에 접근하는 게 더 빠르다. 다만, 직접 주소 지정방식처럼 표현할 수 있는 크기의 제한이 생긴다.
  5. 레지스터 간접 주소 지정 방식(register indirect addressing mode): 연산에 사용할 데이터를 메모리에 저장하고 그 유효 주소를 저장한 레지스터를 오퍼랜드에 명시하는 방식. 간접 주소 지정 방식보다 빠르다.

숙제


1. 기본 숙제

확인문제 (p51)
  1. 프로그램이 실행되려면 반드시 (메모리)에 저장되어 있어야 합니다.
확인문제 (p65)
  1. 1101(2) 의 음수를 2의 보수로 표현하면, 0011(2)

2. 추가 숙제

p. 100의 스택과 큐의 개념을 정리하기


[미리보기]운영체제의 메모리 관리

물리적인 메모리 크기보다 큰 프로그램을 어떻게 실행할 수 있을까?

  • 후에 운영체제에서 만나게 될 내용들이다. 지금은 느낌만.
  • 페이징 기법: 컴퓨터가 메인 메모리에서 사용하기 위해 2차 기억 장치로부터 데이터를 저장하고 검색하는 메모리 관리 기법
  • 스와핑(swapping)

🦖 게임을 좋아했고, 제대로 실행되지 않는 컴퓨터를 낑낑대면서 본체를 열어대던 어린 시절(?)이 떠올랐다. 그때, 참 많이 뜯고 망가뜨렸었는데 ㅋㅋㅋ 그때의 결핍 덕분에 이렇게 공부하고 있나? 🤔

profile
수학을 사랑하는 애독자📚 Stop dreaming. Start living. - 'The Secret Life of Walter Mitty'

0개의 댓글