💻 시스템 프로그래밍이란?

  • 시스템
    • 하드웨어 + 운영체제
  • 시스템 프로그래밍
    • 컴퓨터 시스템을 활용하는 소프트웨어 개발
    • Windows 운영체제 자체의 기능을 십분 활용하는 프로그래밍

💻 컴퓨터 시스템의 주요 구성요소

  • CPU, 캐쉬
  • 운영체제
    • 메인 메모리
    • 하드디스크
      • 파일 IO

💻 컴퓨터 하드웨어 구성

  • CPU(Central Processing Unit)
    • 중앙처리장치
    • 컴퓨터의 연산이 이뤄지는 곳
      • ALU
      • 컨트롤 유닛
      • 레지스터
      • 버스 인터페이스
  • 메인 메모리
  • 입출력 버스(I/O Bus)
    • 데이터 송수신

** ex) 2 + 3 덧셈 연산 프로그램의 처리 과정
1) 실행 파일이 하드 디스크에 들어감
2) 메인 메모리에 명령어 전달
3) 연산을 위해서는 CPU에 들어가야 함. 따라서 입출력 버스를 통해 CPU에 전달
4) 데이터는 CPU에 도착해서 가장 처음으로 버스 인터페이스에 전달됨
-버스 인터페이스: 데이터를 CPU 내부로 읽어들이는 역할. 따라서 네트워크 송수신 규약을 알고 있어야 한다.
5) 레지스터에 데이터 저장
-레지스터: CPU 내부의 작은 메모리. ALU와 컨트롤 유닛이 이미 계산 중일 수 있으므로 데이터를 레지스터에 담아두고 컨트롤 유닛이 필요할 때 레지스터에서 데이터를 꺼내간다.
6) 컨트롤 유닛에 연산자 + 을 전달
-컨트롤 유닛: CPU가 해야할 일을 결정해주는 중심 역할로, 덧셈이라는 명령어를 받아서 ALU에게 연산 신호를 보냄
7) ALU에 피연산자 2, 3을 전달
8) ALU는 계산 결과를 레지스터에 저장

💻 클럭 신호(Clock Pulse)

컴퓨터의 모든 장치에는 클럭 신호가 들어간다. 클럭 발생기는 모든 장치에게 일정 간격으로 신호를 주고, 하드웨어는 이 신호를 기반으로 동작 타이밍을 결정한다.
요소들마다 클럭 신호가 다를 수 있다. 높은 클럭 신호에 맞춰서 클럭 신호를 자주 낼수록 연산은 빨라지지만 시스템에 부하를 준다.

  • CPU와 컴퓨터 시스템 전체의 동작 타이밍을 결정
  • 요소들의 동기화를 위해 필요
    • 중앙에서 보내는 클럭신호는 요소 중 요구하는 가장 낮은 클럭 신호를 기반으로 제공된다.

💻 프로그램 실행 과정

1) 전처리기에 의한 치환 작업
2) 컴파일러에 의한 번역
-CPU의 명령어로 번역
3) 어셈블러에 의한 바이너리 코드 생성
-CPU의 명령어를 바이너리 코드로 번역
4) 링커에 의한 연결과 결합
-라이브러리와의 결합

💻 Stored Program Concept

명령어 관점에서의 시스템 프로그래밍을 설명하기 위해서 필요한 개념.
오늘날 컴퓨터의 구조는 이를 기반으로 구성되어 있다.

  • 1단계. Fetch
    • 명령어는 버스 인터페이스를 통해 메모리에서 CPU 내부로 이동
  • 2단계. Decode
    • CPU 내에서 컨트롤 유닛을 통해 명령어 해석
  • 3단계. Execution
    • ALU를 중심으로 해석한 연산 결과를 실행

💻 데이터 이동 기반 버스 시스템

양방향 \Rarr 데이터는 CPU에서 메모리로, 또는 메모리에서 CPU로 전달될 수 있다.

  • 데이터 버스(Data Bus)
    • 데이터 이동 통로
  • 어드레스 버스(Address Bus)
    • 주소 이동 통로
    • 메모리에게 데이터를 요구할 때 "몇 번지"에 있는 데이터를 달라고 해야 하기에 필요
  • 컨트롤 버스(Control Bus)
    • 컨트롤 신호 이동 통로
    • 버스 시스템은 양방향이기 때문에 어느 쪽이 먼저 데이터를 보낼지, 즉 일의 순서를 정하기 위해 필요

0개의 댓글