컴퓨터 공학 | 퀴즈 (1)

Faithful Dev·2025년 1월 25일

컴퓨터 공학

목록 보기
14/81

컴퓨터 구조 및 소프트웨어 기초

컴퓨터의 기억장치

주기억장치

주기억장치(Main Memory)는 CPU가 직접 접근하여 데이터를 처리할 수 있는 메모리를 말한다. 주로 SRAM(Static RAM)DRAM(Dynamic RAM)이 여기에 속한다.

  • 레지스터: CPU 내부에 있는 고속 메모리로 주기억장치의 일부로 간주된다.
  • SRAM: 빠른 속도의 메모리로 주기억장치로 사용된다.
  • DRAM: 대용량의 주기억장치로 많이 사용된다.

SSD: 보조기억장치(Secondary Storage)에 속한다. 데이터를 영구적으로 저장하는 저장 장치이며, 주기억장치가 아니다.

보조기억장치

보조기억장치(Secondary Storage)는 데이터를 영구적으로 저장하거나 백업하기 위한 장치를 말한다. 다음과 같은 장치들이 보조기억장치에 속한다:

  • 하드 디스크: 데이터를 저장하는 대표적인 보조기억장치.
  • USB memory: 이동식 저장장치로 보조기억장치에 해당.
  • Bluray: 데이터를 저장하는 광학 디스크로 보조기억장치에 속함.

ROM(Read-Only Memory)은 주기억장치에 속하며, 데이터를 영구적으로 저장하지만 주로 컴퓨터의 부팅에 필요한 펌웨어와 같은 데이터를 저장하는 용도로 사용된다. 이는 보조기억장치가 아니다.


수의 표현과 연산

10진수 ↔︎ 16진수

  1. 16으로 나눈다.
    • 주어진 10진수를 16으로 나누어 몫나머지를 구한다.
  2. 몫이 0이 될 때까지 반복한다.
    • 몫이 0이 될 때까지 계속 16으로 나누며 나머지를 기록한다.
  3. 나머지를 아래에서 위로 읽는다.
    • 가장 마지막에 나온 나머지가 16진수의 가장 높은 자리수에 해당한다.
  4. 나머지를 16진수 값으로 변환한다.
    • 10 이상인 나머지는 16진수 문자로 변환한다:
      • 10 → A, 11 → B, 12 → C, 13 → D, 14 → E, 15 → F
10진수 80
  1. 80 / 16 = 5, 나머지 0
    • 몫 = 5, 나머지 = 0
  2. 5 / 16 = 0, 나머지 5
    • 몫 = 0, 나머지 = 5
  3. 나머지를 아래에서 위로 읽는다: 50
  4. 결과: 16진수 = 0x50

2진수 ↔︎ 16진수

  1. 2진수를 오른쪽에서부터 4자리씩 나눈다.
    • 16진수는 2진수 4자리를 1자리로 표현한다.
    • 4자리로 나누어 떨어지지 않으면, 왼쪽에 0을 추가한다(패딩).
  2. 각 4자리를 16진수로 변환한다.
    • 4자리 2진수 값을 10진수로 변환한 후, 그 값을 16진수로 변환한다.
  3. 각 변환한 값을 순서대로 나열한다.
2진수 11010111
  1. 오른쪽부터 4자리씩 나눈다: 1101 0111
  2. 각각 16진수로 변환:
    • 1101 → 13 → D
    • 0111 → 7 → 7
  3. 결과: 0xD7
16진수 0xA9
  1. 각 자리 16진수를 4자리 2진수로 변환:
    • A → 10 → 1010
    • 9 → 9 → 1001
  2. 결과: 2진수 = 10101001.

2의 보수

2의 보수(2's complement)는 컴퓨터에서 음수를 표현하는 방법으로 사용된다. 특정 비트 길이의 이진수에서 2의 보수를 구하는 방법은 다음과 같다.
1. 이진수의 모든 비트를 반전한다.
즉, 01로, 10으로 바꾼다.
2. 반전된 숫자에 1을 더한다.
- 이 과정은 2의 보수를 완성한다.

2진수 0101
  1. 반전(1의 보수):
    • 01011010
  2. 1을 더하기:
    • 1010 + 1 = 1011
  3. 결과:
    • 2의 보수 = 1011

논리 연산과 부울 대수

부울 대수의 기본 법칙

  1. 항등법칙
    • A+0=AA + 0 = A
    • A1=AA \cdot 1 = A
  2. 멱등법칙
    • A+A=AA + A = A
    • AA=AA \cdot A = A
  3. 분배법칙
    • A(B+C)=AB+ACA \cdot (B + C) = A \cdot B + A \cdot C
    • A+(BC)=(A+B)(A+C)A + (B \cdot C) = (A + B) \cdot (A + C)
  4. 보완법칙
    • A+A=1A + \overline A = 1
    • AA=0A \cdot \overline A = 0
  5. 드모르간 법칙 (De Morgan's Theorem)
    • AB=A+B\overline{A \cdot B} = \overline A + \overline B
    • A+B=AB\overline{A + B} = \overline A \cdot \overline B

순차 논리 회로와 레지스터

플립플롭(Flip-Flop)

플립플롭은 디지털 회로에서 1비트의 데이터를 저장하는 기본적인 메모리 소자이다. 클럭 신호에 동기화되어 상태를 변경하며, 동작 방식에 따라 여러 종류가 있다.
1. SR 플립플롭 (Set-Reset Flip-Flop)
- 두 입력(S와 R)을 사용하여 상태를 설정(Set)하거나 리셋(Reset)하는 플립플롭이다.
- 진리표에서 S와 R이 동시에 1이 되면 결과가 정의되지 않는 문제가 있다.
2.
D 플립플롭 (Data or Delay Flip-Flop)
- 데이터를 입력받아 클럭 신호에 따라 저장한다.
- 하나의 입력(D)을 사용하며, 간단한 데이터 저장에 많이 사용된다.
3.
JK 플립플롭
- SR 플립플롭의 문제점(S=R=1에서 결과가 정의되지 않음)을 해결한 개선된 플립플롭이다.
- 입력 J와 K로 상태를 제어한다.
4.
T 플립플롭 (Toggle Flip-Flop)**
- 입력이 1이면 상태가 반전(toggle)되고, 0이면 상태를 유지한다.
- JK 플립플롭을 변형하여 만들 수 있다.

레지스터 마이크로 연산(Micro-Operation)

  • 레지스터에서 수행되는 기본적이고 단순한 연산이다.
  • 데이터를 이동, 조작, 또는 변환하는 동작을 의미하며, 컴퓨터의 기본 동작을 구현하는 데 사용된다.
  1. Shift (이동 연산)
    • 레지스터의 비트를 왼쪽 또는 오른쪽으로 이동시키는 연산.
    • 예: 논리적 이동(왼쪽, 오른쪽), 산술적 이동.
  2. Clear (클리어 연산)
    • 레지스터의 모든 값을 0으로 설정하는 연산.
  3. Rotate (회전 연산)
    • 레지스터의 비트를 순환시키는 연산.
    • 예: 오른쪽으로 회전, 왼쪽으로 회전.

ROR (Rotate Right) 연산

ROR(Rotate Right)는 비트 값을 오른쪽으로 순환시키는 연산이다. 오른쪽 끝 비트는 왼쪽 끝으로 이동하며, 순환 효과를 만든다.

예제
  • 입력값: 01100110
  • 오른쪽으로 1번 Rotate Right:
    • 01100110 → 00110011
    • 설명: 오른쪽 끝 비트 0이 왼쪽 끝으로 이동.

LSR(Logical Shift Right) 연산

LSR(Logical Shift Right)은 비트 값을 오른쪽으로 이동시키는 연산이다. 오른쪽 끝 비트는 삭제, 왼쪽 끝에는 항상 0이 삽입된다.

예제
  • 입력값: 01100110
  • 오른쪽으로 1번 Logical Shift Right:
    • 01100110 → 00110011
    • 설명: 모든 비트가 오른쪽으로 이동하며, 왼쪽 끝에 0이 삽입된다.

CPU 설계와 연산 장치

CPU 설계

  1. 레지스터 연결 방식
    • 직접 연결 방식:
      • 모든 레지스터를 서로 직접 연결하면, nn개의 레지스터에 대해 n2n^2개의 연결선이 필요하다.
      • 복잡성이 장치 수의 제곱에 비례하여 증가하기 때문에 비효율적이다.
    • Common Bus 연결 방식:
      • 공통된 데이터 전송 경로인 버스(Bus)를 사용하여 여러 레지스터를 연결한다.
      • 각 레지스터는 특정 시점에만 버스를 통해 데이터를 주고받는다.
      • 데이터를 선택적으로 전송하기 위해 멀티플렉서(MUX)트라이스테이트 버퍼를 사용한다.
  2. Common Bus 설계
    • 멀티플렉서(MUX):
      • 여러 입력 신호 중 하나를 선택하여 버스에 전송한다.
      • Common Bus 설계에서 데이터를 선택적으로 읽는 데 사용된다.
    • 트라이스테이트 버퍼:
      • 버스를 통해 데이터를 읽거나 쓰는 과정에서 충돌을 방지하기 위해 사용된다.
      • 트라이스테이트 버퍼를 통해 하나의 레지스터만 버스에 접근하도록 제어한다.
    • 디코더(Decoder):
      • 디코더는 주로 제어 신호를 활성화하여 특정 레지스터를 선택하는 데 사용된다.
      • 그러나 버스 연결을 직접 구현하는 도구는 아니다.
  3. 스택 구조
    • 내부 스택 구조:
      • CPU 내부에서 함수 호출과 리턴 주소를 저장하거나, 데이터의 순차적 처리를 위해 사용된다.
      • LIFO(Last In, First Out) 방식으로 작동한다.
      • 예: 서브루틴 처리(함수 호출/복귀)나 중간 연산 결과 저장.

ALU(Arithmetic Logic Unit)

ALU는 CPU의 한 부분으로, 산술 연산(덧셈, 뺄셈 등)과 논리 연산(AND, OR, XOR 등)을 수행하는 장치이다. ALU는 데이터 처리의 핵심적인 역할을 한다.

  1. ADD (덧셈)
    • 산술 연산의 기본적인 작업으로, 두 값을 더한다.
    • 예: A+BA + B
  2. XOR (배타적 논리합)
    • 두 값이 서로 다를 때 결과가 1(True)인 논리 연산.
    • 예: ABA \oplus B
  3. INC (증가)
    • 산술 연산으로, 값을 1만큼 증가시킨다.
    • 예: A+1A + 1

입출력 시스템과 인터럽트

컴퓨터의 입출력 레지스터와 제어 플래그 구조

  1. INPR(INput Register): 입력 데이터를 저장하는 레지스터로, Serial Communication Interface를 통해 데이터를 수신한다.
  2. OUTR(OUTput Register): 출력 데이터를 저장하는 레지스터로, 데이터를 출력 장치로 전송한다.
  3. FGI (Input Flag): INPR의 데이터 수신 여부를 나타내는 플래그. 1일 때 AC로 데이터 전송.
  4. AC(Accumulator): 데이터를 연산하거나 저장하는 중앙 레지스터.
  5. 입출력은 직렬 인터페이스를 통해 이루어지며, 플래그를 통해 제어 신호를 처리한다.

IEN(Interrupt Enable) 기반 인터럽트 입출력 방식

  1. IEN(Interrupt Enable Flip-Flop)인터럽트 기반 입출력 방식을 제어한다.
  2. 플래그를 계속 체크하는 Polling 방식의 비효율성을 해결하기 위해 제안되었다.
  3. 외부 장치가 준비되면 인터럽트를 발생시켜 CPU가 요청을 처리하게 한다.
  4. CPU는 작업 중단 → 인터럽트 처리 → 원래 작업 복귀 순으로 작동한다.
  5. 이 방식은 CPU와 입출력 장치 간 속도 차이를 효과적으로 조정한다.

소프트웨어 개발 패러다임

소프트웨어 개발 패러다임의 특징과 발전

  1. 구조적 기법: 함수 중심의 프로그래밍 방식, 순차적 접근을 사용한다.
  2. 객체지향 기법: 캡슐화, 상속, 다형성 등을 통해 재사용성과 유지보수성을 높이는 기법이다.
  3. 컴포넌트 기법: 독립된 모듈(컴포넌트)이 표준화된 인터페이스를 통해 통신하며 재사용성을 극대화한다.
  4. 분산 객체 프레임워크: CORBA, RMI 같은 프레임워크로 이기종 시스템 간 상호 운용을 지원한다.
  5. 현대 소프트웨어 개발은 이 기법들을 적절히 혼합하여 사용한다.

데이터 오류 검출

홀수 패리티와 아스키 코드의 오류 검출

  1. 아스키 코드는 문자 데이터를 7비트로 표현하며, 추가로 1비트는 패리티 비트로 사용된다.
  2. 홀수 패리티는 전체 비트의 1의 개수를 홀수로 맞추는 방식이다.
  3. 패리티 비트는 오류 검출을 위한 추가 비트로, 데이터 전송의 신뢰성을 높인다.
  4. R(1010010)에 패리티 비트 1을 추가하면 1의 개수가 3개(홀수)가 된다.
  5. 패리티 방식은 단일 비트 오류를 검출할 수 있지만, 수정은 불가능하다.
profile
Turning Vision into Reality.

0개의 댓글