System Programming - 1. 컴퓨터 시스템

ensalada.de.pollo·2024년 2월 25일
0

SystemProgramming

목록 보기
1/3

컴퓨터 시스템의 계층도

컴퓨터 시스템의 계층도는 위와 같습니다. 이에 대한 자세한 설명은 컴퓨터 구조에서 다루기 때문에 그냥 이런게 있구나 하고 넘어갑니다.

컴퓨터 하드웨어의 구조

컴퓨터 하드웨어의 구성요소는 아래와 같습니다.

  • Buses (버스)

  • I/O devices (입출력 장치)

  • Main Memory (주기억 장치)

  • Cache memory (캐쉬)

  • CPU (Central Processing Unit, 중앙처리장치)

    ※ 여기서 버스라는 것이 무엇이냐?
    구성요소간의 정보교환 통로를 의미합니다
    버스의 종류로는 입출력 버스가 있고 시스템 버스가 있는데 자세한 것은 생략하겠습니다...

프로세서

CPU의 본질은 계산입니다. 다음과 같은 요소로 구성되어 있습니다.

  • ALU (Arithmetic and Logic Unit, 산술논리연산장치)
  • Control Unit (제어장치)
  • Register (레지스터)
    - PC (Program Counter)
    - 상태 레지스터
    - 메모리 주소 레지스터
    - 메모리 데이터 레지스터
    - IP (Instruction Pointer, 명령 레지스터)
    - General-Purpose Register (범용 레지스터)

각각의 자세한 설명 또한 컴퓨터 구조에서 다룹니다.

CPU의 주요기능은 다음과 같습니다.

  • 기억장치로부터 명령/데이터 호출 및 저장
  • 명령의 해석 (Control Unit)
  • 명령의 실행 (ALU)
  • 입출력 연산 (I/O)

Instruction Cycle (명령 주기)
1. fetch (인출): PC에 의거해 명령어를 가져옵니다.
2. decode (해독): 명령어를 해석해 제어 신호를 생성합니다.
3. execution (실행): 가져온 명령어를 실행합니다.
4. store (결과 저장): 실행 결과를 저장합니다.

Operating System

운영체제란?

  • 응용 프로그램이 하드웨어를 효율적으로 사용할 수 있도록 도와주는 프로그램을 의미합니다.

목적

  • 하드웨어의 추상화 (Hardware Abstraction)
  • 시스템 인터페이스 추상화

운영체제의 관리대상

  • Process
  • Memory
  • I/O devices
  • 소프트웨어 자원 (파일 시스템, 라이브러리, 유틸리티)

컴파일 과정

부가설명 ))

Compiler에서는 소스코드를 기계어코드로 바꾸는 작업을 수행합니다.
Assembler의 처리 후 만들어진 "object 파일"은 실행이 불가능합니다.
Linker를 이용해 라이브러리 파일들을 가져와서 연결해야 비로소 실행이 가능한 프로그램이 되는 것입니다.

컴파일 과정을 이해하는 것은 매우 중요하다!

  • 프로그램이 컴퓨터 내부에서 어떻게 처리되는지 이해할 수 있고
  • 대규모 프로그램 개발 과정을 이해할 수 있고
  • 프로그램 성능을 개선할 수 있고
  • 링크시에 발생하는 에러를 이해할 수 있습니다.

변환된 프로그램의 실행

  • linux shell에서 실행파일 이름을 치면 실행이 됩니다.
    1. 쉘은 우리가 입력한 파일 이름을 찾아 그것이 실행파일이면 프로그램을 로드해 실행합니다
    2. hello 프로그램이 실행되면서 결과가 화면에 출력되고
    3. 쉘은 다음 명령을 기다립니다.

컴퓨터의 구조

명령의 인식

프로그램의 로딩

여기서, I/O bridge에서 Memory bus를 통해 메인 메모리로 향하는 것을 DMA(Direct Memory Access)라고 부릅니다.

프로그램의 실행

요약

  1. 컴퓨터 시스템은 하드웨어, 시스템 소프트웨어, 응용 프로그램으로 구성됩니다.
  2. 프로그램은 변화합니다.
  3. 프로그램은 시스템 프로그램의 도움으로 하드웨어에서 실행될 수 있습니다.

0개의 댓글