1. 컴퓨터 구조와 프로그래밍 모델 정리
추천 받은 책 “뇌를 자극하는 윈도우즈 시스템 프로그래밍-윤성우”를 읽고 공부한 내용을 정리하여 올리고자 마음 먹었다.그 첫번째 단원인 컴퓨터 구조와 프로그래밍 모델 정리다.
현대 컴퓨터 구조 주요요소
- ALU(Arithmetic Logic Unit:산술 논리 장치) : 산술연산과 논리연산
- 컨트롤 유닛 : 해석
- 레지스터 (IR : Fetch시 저장 , PC : 위치 기억)
- I/O 버스 (후술)
폰 노이만 아키텍쳐 (Stored Program Concept)
- 의의 : 오늘날 컴퓨터 구조의 시초이자 일치하는 구조
- 최초 적용 : EDSAC(에드삭 / 1949/05/06), 고안 7년 후 탄생, 오른쪽 4번째 7인 2의 지수 최솟값 일화
- 형태 : 프로그램이 컴퓨터 내부에 저장되는 구조
프로그램 실행과정
- 전처리기 : 치환작업, (#include 등)#으로 시작하는 지시자의 지시에 따라 소스코드를 적절히 변경
- 컴파일러 : 사람이 사용할 수 있는 언어를 컴퓨터가 이해할수 있는, CPU에게 일을 시키기 위한 명령어 즉 기계어로, 어셈블리어로 번역
- 어셈블러 : 어셈블리 코드를 CPU가 이해할 수 있는 바이너리 코드로 바꾸어주는 프로그램
- 링커 : 프로그램 내에서 참조하는 함수나 라이브러리들을 하나로 묶는 (혹은 연결시켜주는) 작업
-> 실제로 실행 가능한, 컴퓨터가 실행해야 하는 바이너리 코드로 된 실행 파일이 생성됨 - 실행파일 : 메모리 공간에 올라가고 난 다음 CPU에 의해서 실행됨.(순차적으로)
단계
Fetch
: 메모리상 존재 명령어를 CPU로 가져옴Decode
: 명령어 해석Execution
: CPU가 해석된 명령어를 실행
데이터 이동이 기반이 되는 BUS 시스템, 또는 콘트롤러, 또는 어댑터
- 역할 : 여러 장치들이 데이터를 주고 받기 위한 통로 -> I/O 버스 : 장치마다 있음
- 데이터 버스 : 피연산자나 명령어 전달
- 어드레스 버스 : 주소값 전달로 해당 데이터 가져오기 기능
- 컨트롤 버스 : CPU가 원하는 바를 메모리에 전달하는 일종의 Sign 전달
현대 컴퓨터 구조 + 폰 노이만 컴퓨터 구조
- 비고 : 연산은 ALU가 하나, 명령어를 분석해서 해야할 일을 결정하는 요소는 컨트롤 유닛이다.
클럭 신호 (펄스)
- 연산장치가 빠르면 버퍼를 덮어써버려서 일부가 출력되지 않는 문제 발생
- 출력장치가 빠르면 한 번 가져간 것을 또다시 가져가는 문제 발생
-> 동기화 필요
속도가 느린 장치에 맞춘다.
- 비고 : CPU 1.6MHZ는 1초 160만번 클럭 발생,
1초 160만번 연산 -> 높을수록 초당 처리가능 명령 증가 -> 성능 향상