시스템 프로그래밍의 이해와 접근

1. 시스템 프로그래밍

-  시스템 프로그래밍: 컴퓨터 시스템을 동작시키는 프로그램, 컴퓨터를 동작시키기 위해 필요한 프로그램(운영체제, 컴파일러 등)

- 컴퓨터 시스템: 하드웨어, 하드웨어가 실제 일을 하게끔 도와주는 운영체제도 포함

- 윈도우즈 시스템 프로그래밍: 윈도우즈 운영체제 기반의 컴퓨터에게 일을 시키기 위한 프로그램을 구현 하는 것


2. 컴퓨터 시스템의 주요 구성 요소


컴퓨터 하드웨어의 구성

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

- 프로그램 실행에 있어서 핵심적인 역할을 담당


1) ALU(Arithmetic Logic Unit)

- 연산을 담당하는 주체, 산술연산, 논리연산


2) 컨트롤 유닛(Control Unit)

- CPU가 처리해야 할 명령어들을 해석, 해석된 결과에 따라 적절한 신호를 CPU의 다른 블록에 보내는 일을 함


3) CPU 내부에 존재하는 레지스터들(Register Set)

- 임시적으로 데이터를 저장하기 위한 조그마한 메모리 공간

- CPU내부에 존재하는 2진 데이터 저장을 위한 저장장치

- CPU내부에 여러개가 존재 CPU의 종류에 따라서 그 개수와 형태가 다양

- 레지스터들은 각각의 용도가 정해져 있는것이 일반적, CPU가 연산을 하기 위해서 반드시 필요함

- IR(Instruction Register): 이동된 명령어를 저장하기 위한 레지스터

- PC(Program Counter): 다음에 가져와야 할 명령어가 어디에 존재하는지 그 메모리의 주소를 기억하기 위한 용도로 사용


4) 버스 인터페이스(Bus Interface)

- 버스가 어떻게 데이터를 전송하는지에 대한 프로토콜 또는 통신 방식을 알고 있는 것

- CPU는 버스 인터페이스를 통해 CPU 내부에 저장되어 있는 데이터를 I/O버스에 실어 보내기도 하고, I/O버스를 통해서 전송되어 오는 데이터를 수신하기도 함


5) 클럭 신호(Clock Pulse)

- CPU는 클럭이 발생될 때마다 그 클럭에 맞춰 일을 함

- CPU의 클럭 속도가 높으면 초당 처리하는 명령어의 개수가 많아지므로 컴퓨터의 전체적인 성능이 좋아짐

- 클럭 발생기에 의해 발생되는 클럭 신호는 CPU를 구성하는 요소 요소에 제공되며 이신호에 맞춰서 CPU가 일을 한다.

- 클럭 신호에 맞춰서 일을 해야하는 이유는 동기화를 위해서 임


2. 메인 메모리(Main Memory)

- 램(RAM), 컴파일이 완료된 프로그램 코드가 올라가서 실행되는 영역, 프로그램 실행을 위해 존재하는 메모리


3. 입출력 버스(Input/Output Bus)

- 컴퓨터를 구성하는 구성 요소 사이에서 데이터를 주고 받기 위해 사용되는 경로

- 데이터의 종류와 역할에 따라 구분

1) 어드레스 버스(Address Bus): 주소 이동

2) 데이터 버스(Data Bus): 데이터 이동, 명령어나 피연산자

3) 컨트롤 버스(Control Bus): 컨트롤 신호 이동, CPU가 원하는 바를 메모리에 전달할 때 사용, CPU와 메모리가 서로 특별한 사인을 주고 받는 용도로 사용


프로그램 실행 과정, 하드웨어 구성 재접근

1. 실행 파일 생성 단계

2. 폰 노이만 아키텍쳐

- 폰 노이만 아키텍쳐: 프로그램이라는 것이 존재, 프로그램은 컴퓨터 내부에 저장되어서 순차적으로 실행 되어야 한다.

- 가장 큰 특징은 실행되어야 할 프로그램이 컴퓨터 내부에 저장된다는 것, Stored Program Concept

- 프로그램의 기본 실행은 Fetch, Decode, Execution 단계를 거친다.

1) 단계 1. Fetch: 메모리상에 존재하는 명령어를 CPU로 가져오는 작업

2) 단계 2. Decode: 가져다 놓은 명령어를 CPU가 해석하는 단계, 컨트롤 유닛

3) 단계 3. Execution: 해석된 명령어의 명령대로 CPU가 실행하는 단계, 보통은 ALU가 연산을 담당

'컴&프로그래밍 > System Programming' 카테고리의 다른 글

2. 아스키 코드 vs 유니코드  (3) 2015.01.09