본문 바로가기
컴퓨터 기초/운영체제 이론

2.프로그램 실행과정

by 인생여희 2021. 1. 18.

프로그램 실행과정

 

 

참고

cpu개발자는 cpu를 디자인 하면서 cpu명령어를 디자인 한다.

cpu명령어에 따라서 cpu 구조가 변경되기도 한다.

 

 

cpu 명령어 예)

0011 은 덧셈으로 인식하도록 디자인

0010은 마이너스로 인식하도록 디자인 ..

 

위의 예 처럼 만약 0011이 cpu로 들어가면 컨트롤 유닛에 의해서 덧셈으로 처리된다.

 

하지만

 

0011에게는 프로그래머가 직접 사용하기 어렵다.

 

그래서 0011 명령어에 ADD 같은 문자를 붙였다.

 

그리고 그 후에 ADD 같은 명령어도 사람이 직접 사용하기 어려워서, 

 

java, c 같은 고수준 언어가 만들어진다.

 

 

 

 

 

1.전처리기에 의한 치환작업

#으로 시작하는 지시자. ex) #include

 

전처리기 -> 컴파일러 -> 어셈플러 -> 링커

 

 

2.컴파일러에 의한 번역

프로그램언어 (java, c) => 어셈블리언어 

즉, cpu의 명령어로 해석된다.

 

 

3.어셈블러에 의한 바이너리 코드 생성

cpu의 명령어를 바이너리 코드로 번역한다.

예) ADD => 0011

 

4.링커에 의한 연결과 결합

라이브러리와의 결합, 

바이너리 + 라이브러리 = 실행파일

 

 

 

Stored Program Concept - 폰 노이만 아키넥쳐

 

뜻 : 프로그램은 메모리에 저장이 되어야 한다는 컨셉 (과거에는 프로그램이 메모리에 저장이 안되었음)

 

큰 개념

 

Fetch:  메모리에 저장되어 있는 명령어를 버스 I/O를 통해서 cpu로 가져간다.

 

Decode (컨트롤 유닛): cpu로 가져간 명령어를 해석한다.

 

Execution(ALU) : 연산한다.(실행)

 

 

 

 

Stored Program Concept 기반의 구조 그림

 

 

 

데이터 이동의 기반 버스 시스템(양방향 관계이다)

 

 

1.데이터 버스  : 데이터 이동

 

2.어드레스 버스 : 주소 이동(데이터가 있는 주소를 이동시킨다.)

 

3.컨트롤 버스 : 컨트롤 신호 이동(cpu가 먼저 데이터를 보낼거냐, 메모리가 먼저 데이터를 보낼거냐 순서 정하기 등..)

 

참고 

뇌를 자극하는 윈도우즈 시스템 프로그래밍 정리 - 한빛출판네트워크