프로그램 실행과정
프로그램 컴파일 과정
-
전처리기에 의한 치환
: # 으로 시작하는 지시자를 처리한다 (#include, #define) -
컴파일러에 의한 번역
: CPU 의 명령어로 번역한다. -
어셈블러에 의한 바이너리 코드 생성
: CPU 의 명령어를 바이너리 코드로 번역한다.
CPU 아키텍쳐마다 다르다 (x86,ARM,MIPS .. )
example : ADD -> 0011, MIN -> 0010, MUL -> 0100 -
링커에 의한 연결과 결합
: 라이브러리와 결합
Stored Program Concept
폰 노이만 : 컴퓨터 구조가 프로그램의 메모리에 저장되어야하는 컨셉으로 디자인되어야한다.
(폰노이만 아키텍쳐라고도 불린다)
- Fetch (cpu 내부로 명령어 이동)
- Decode (컨트롤 유닛 -> 명령어 해석)
- Execution (연산을 실행, 보통 ALU)
"프로그램의 명령어들이 메모리에 저장되어 위 3과지 과정을 거쳐 실행되어야 한다" 까지가 SPC 의 개념이다.
저번시간에 포스팅했던 컴퓨터 아키텍쳐와 연관된 사진이다.
Memory 에 프로그램이 Load 된 후, 명령어가 I/O 버스를 통해 CPU 의 BUS interface 에 도착해 (Fetch)
Register 로 이동해, Control unit 에 의해 Decode 되고, ALU 에 의해 Execution 된다.
버스
버스는 키보드, 메모리, CPU 와 같은 컴포넌트들과 통신을 하게 해주는 시스템이다.
CPU-메모리 사이의 BUS = System bus
메모리-다른 컴포넌트 = I/O bus
System bus
- 데이터 버스
- 어드레스 버스
- 컨트롤 버스
시스템 버스는 위 3가지 타입의 정보를 주고받을 수 있다. (양방향 통신)
버스마다 프로토콜(통신규약) 이 다르지만
데이터 버스 로 데이터를 주고받기위해,
어드레스 버스 로 메모리상 데이터의 주소를 주고받는다.
그리고 컨트롤 버스 로 데이터버스 와 어드레스 버스 를 제어해, 일의 순서, 즉 데이터의 흐름을 관리한다.
#윤성우 윈도우 시스템 프로그래밍을 BASE로 제작되었습니다.