[운영체제] Day1 프로그램의 실행과정

빵코·2024년 4월 3일

📌 프로그램의 실행과정


<출처:유노코딩>

-> 프로그래밍 언어(프로그램코드)를 이용해서 코드를 짜고 이를 컴파일함

-> 컴파일러는 if 나 while등의 인간친화적인 문법으로 만들어진 프로그래밍언어 코드를 기계 즉 컴퓨터친화적인 어셈블리 프로그램(어셈블리코드)으로 변경해줌

-> 컴파일러에 의해 번역된 어셈블리 코드는 컴퓨터에 의해 실행되기 앞서 다시 바이너리 코드(1과0 만으로 구성된 코드)로 번역되기도 함. 컴퓨터는 오로지 1과 0 바이너리 코드만 이해할 수 있기 때문


<출처:유노코딩>

-> 실행파일이 만들어지고 나면 일반적으로 하드디스크같은 보조메모리에 저장됨.

-> 실행하면 이것이 메인 메모리에 올라가게 되고, CPU에 의해 차례대로 실행되기 시작함.

-> 메인메모리에 올라간 명령어들은 CPU에 의해 순차적으로 실행이 됨. 메인 메모리에서 CPU 로 순차적으로 하나씩 이동한 다음 실행 됨.

  • 이때 진행되는 단계는 3가지 단계 로 구분

    1. Fetch

    메모리상에 존재하는 명령어를 CPU로 가져오는 작업, 이렇게 이동된 명령어를 저장하기 이해 사용되는 것이 register이다(instruction register)가 이 작업을 수행한다.

    2. Decode

    가져다놓은 명령어를 CPU가 해석하는 단계, CU가 이 역할을 담당한다.

    3. Execution

    해석된 명령어의 명령대로 CPU가 작업을 수행하는 단계, ALU가 이 역할을 담당한다.

    => 이는 컴퓨터의 구성요소들이 데이터를 잘 주고받을 수 있어야 실행될 수 있는 단계들이다.

🧷 데이터 이동은 시스템 버스


<출처:유노코딩>

  • 데이터 버스: 데이터 이동을 위헤 필요한 버스
  • 컨트롤 버스: CPU가 원하는 바를 메모리에 전달하기 위한 버스, 메모리에 명령어 전달
  • 어드레스 버스: 주소값을 이동하기 위해 필요한 버스, 주소값을 참조하기 위해 사용
profile
빵먹으면서 코딩하는 개발자를 꿈꾸는 코린이

0개의 댓글