[F-Lab 66해빗 페이백 챌린지 ]

[F-Lab 모각코 페이백 40일차] (CS) CHAPTER 3 컴퓨터 구조

everydeveloper 2023. 8. 2. 04:25

부팅부터 프로그램 실행까지

 

  • 컴퓨터 시스템의 구성
    • 컴퓨터 시스템의 구성 요소
    • 중앙처리장치
    • 주기억장치
    • 보조기억장치
    • 입출력장치
  • TIL
    • 컴퓨터 구조

 

 

컴퓨터 시스템의 동작

  • 컴퓨터 시스템의 동작 과정
    • 컴퓨터 시스템은 부팅 과정을 거쳐, 운영 체제를 실행하고 이후에 프로그램 실행이 가능하다.
    • 부팅은 컴퓨터를 켤 때 실행되는 초기화 과정이다. 바이오스와 부팅 프로그램, 운영 체제 등이 차례로 실행되어 컴퓨터 시스템을 준비하고, 사용자가 프로그램을 실행할 수 있는 상태가 된다.
  • 부팅
    • 부팅은 컴퓨터를 켤 때 실행되는 초기화 과정이다. 부팅은 바이오스와 부팅 프로그램, 운영 체제 등이 차례로 실행되어 컴퓨터 시스템을 준비하고, 사용자가 프로그램을 실행할 수 있는 상태가 된다.
    • 바이오스 실행
      • 컴퓨터 시스템을 켜면, 바이오스(Basic Input/Output System)가 실행된다. 바이오스는 컴퓨터 하드웨어를 인식하고 초기화하며, 부팅 가능한 디스크 드라이브를 찾아 부팅을 시도한다.
      • 바이오스는 부팅 가능한 디스크 드라이브를 찾은 후, 해당 드라이브에 저장된 부팅 프로그램을 실행한다.
    • 부팅 프로그램 실행
      • 바이오스는 부팅 가능한 디스크 드라이브를 찾은 후, 해당 드라이브에 저장된 부팅 프로그램을 실행한다. 부팅 프로그램은 운영 체제를 실행하는 역할을 담당한다.
    • 운영체제 실행
      • 부팅 프로그램은 운영 체제를 실행한다. 운영 체제는 컴퓨터 하드웨어와 프로그램을 관리하고, 사용자가 컴퓨터를 쉽게 사용할 수 있도록 인터페이스를 제공한다.

프로그램 실행

  • 운영 체제가 실행되면 사용자는 컴퓨터에서 프로그램을 실행할 수 있다. 사용자는 프로그램을 선택하고 실행하면, 운영 체제는 해당 프로그램을 메모리에 로드하고 실행한다.

프로그램 명령어

  • 명령어의 기본 형식과 종류
    • 명령어는 연산 코드와 피연산자로 구성된다. 연산 코드는 중앙처리장치가 실행해야 할 동작을 나타내며, 피연산자는 동작에 필요한 값 또는 저장 공간(레지스터 또는 주기억장치의 주소)을 나타낸다.
    • 명령어는 데이터 전송 명령어, 연산 명령어, 시프트 명령어, 분기 명령어 등으로 구분된다.
  • 데이터 전송 명령어
    • 데이터 전송 명령어는 일반적인 경우 MOV 명령어를 사용한다. MOV 명령어는 피연산자에서 값을 읽어서 다른 피연산자로 전송한다. 스택인 경우 PUSH, POP 명령어를 사용한다.
  • 연산 명령어
    • 연산 명령어는 산술 연산 명령어, 논리 연산 명령어, 시프트 명령어, 분기 명령어 등으로 구분된다. 연산 명령어는 연산에 필요한 데이터를 읽어서, 연산 후 결과를 다른 위치에 저장한다.
    • 산술 연산 명령어
      • 산술 연산 명령어는 ADD, SUB, MUL, DIV 명령어를 사용한다. ADD 명령어는 덧셈 연산을 수행하며, SUB 명령어는 뺄셈 연산을 수행한다. MUL 명령어는 곱셈 연산을 수행하며, DIV 명령어는 나눗셈 연산을 수행한다.
    • 논리 연산 명령어
      • 논리 연산 명령어는 AND, OR, NOT, XOR 명령어를 사용한다. AND 명령어는 논리곱 연산을 수행하며, OR 명령어는 논리합 연산을 수행한다. NOT 명령어는 논리 부정 연산을 수행하며, XOR 명령어는 배타적 논리합 연산을 수행한다.
    • 시프트 명령어
      • 시프트 명령어는 논리 시프트와 순환 시프트로 구분된다. 논리 시프트는 SHR, SHL 명령어를 사용하며, 순환 시프트는 CIR, CIL 명령어를 사용한다. 논리 시프트는 피연산자의 비트를 왼쪽 또는 오른쪽으로 이동시키며, 빈 공간은 0으로 채운다. 순환 시프트는 비트를 이동시키면서, 끝에 있는 비트는 반대쪽 끝으로 이동한다.
    • 분기 명령어
      • 분기 명령어는 JUMP나 CALL 같은 분기 명령어를 사용하여 다른 위치의 명령어로 분기할 수 있다. JUMP 명령어는 무조건 분기하는 명령어이며, CALL 명령어는 하위 루틴을 호출하는 명령어이다. JUMP 명령어는 다음에 실행할 명령어의 주소를 지정하고, CALL 명령어는 현재 주소를 스택에 저장하고, 다음에 실행할 명령어의 주소를 지정한다.