시스템 프로그램 : 컴퓨터 시스템을 동작시키는 프로그램 즉, 컴퓨터를 동작(파일복사, 파일 이동 등등)을 시키기 위해 필요한 프로그램.
ex) window, linux와 같은 시스템 프로그램
-> 시스템 프로그램이란 하드웨어를 사용할 수 있도록 도와주는 프로그램
windows 시스템 프로그램이란 windows 운영체제 기반의 컴퓨터에게 일을 시키기 위한 프로그램
컴퓨터 시스템의 주요 구성요소
하드웨어의 구성
CPU(Central Processing Unit)
중앙 처리 장치가 CPU이다. CPU는 프로그램 실행에 있어서 핵심적인 역할을 담당한다. 컴퓨터의 '머리'부분이다.
메인 메모리(Main Memory)
램(RAM)으로 구성되는 메인 메모리는 컴파일이 완료된 프로그램 코드가 올라가서 실행되는 영역이다. 메인 메모리는 프로그램 실행을 위해 존재한다.
입출력 버스(Input/ Output Bus)
입출력 버스는 컴퓨터 구성요소 사이의 데이터 송수신을 위해 사용되는 경로이다. 주고받는 데이터의 종류와 역할에 따라 어드레스 버스(Address Bus), 데이터 버스(Data Bus), 컨트롤 버스(Control Bus) 이렇게 세가지로 구분된다.
하드디스크, 메인메모리, CPU 등등이 모두 버스에 연결되어 있다. 버스 시스템을 기반으로 하드디스크에 있는 데이터를 메인메모리로, 메인메모리에 있는 데이터를 하드디스크로 전송하는 것이 가능하고, 메인 메모리와 CPU 사이에서의 데이터 입출력도 가능하다.
CPU에 대한 이해
ALU(Arithmetic Logic Unit)
CPU 내부에서 실제 연산(덧셈 뺄셈 등등)을 담다한다. ALU가 처리하는 기본적인 연산은 크게 두가지이다. 하나는 덧셈이나 뺄셈과 같은 산술연산이고, 나머지 하나는 AND와 OR와 같은 논리연산이다. 아주 복잡한 프로그램도 CPU 입장에서는 대부분 이 두가지 형태의 연산으로 이루어 진다.
컨트롤 유닛(Control Unit)
소스코드를 컴파일 하면 실행파일이 생성된다. 이 실행 파일에는 CPU에게 일을 시키기위한 명령어들이 저장되어 있다.
어떤 경로를 거치던 간에 이 명령어가 CPU내부로 들어가야 CPU에게 일을 시킬 수 있다.
CPU내부로 들어간 명령어가 무엇을 하라는 것인지 ALU는 이해할 수 없다. (ALU는 산술연산과 논리연산만 가능하기 때문이다.) ALU를 대신해서 이러한 명령어를 해석해주는 구성요소가 컨트롤 유닛이다.
컨트롤 유닛은 CPU가 처리해야할 명령어들을 해석한다. CPU내부로 들어온 명령어를 해석하고 덧셈을 하라는 명령어가 나온다면 ALU에게 덧셈을 하도록 신호를 보낸다. 컨트롤 유닛은 명령어를 해석하고 해석된 결과에 따라 적절한 신호를 CPU의 다른 블록에 보내는 일을 한다.
CPU내부에 존재하는 레지스터들(Register Set)
컨트롤 유닛이나 ALU가 필요로 하는 명령어 및 데이터들을 저장하기 위한 메모리 공간이다. 임시 데이터 저장 장소에서 상황이 된다면 컨트롤 유닛과 ALU가 직접 데이터를 가져간다.
이러한 레지스터들은 CPU 내부에 여러개가 존재하는데 CPU의 종류에 따라 그 개수와 형태가 다양하다. 레지스터들은 각각의 용도가 정해져 있는것이 일반적이며 이들은 CPU가 연산을 하기위해 반드시 필요하다.
버스 인터페이스(Bus Interface)
명령어와 데이터들이 CPU안으로 잘 흘러들어가는것이 가능한 이유는 버스 인터페이스가 있기 때문이다.
CPU, 하드디스크, RAM, 사운드 카드, 그래픽 카드 등은 서로 데이터를 주고 받으면서 동작한다. 서로 데이터를 주고받기 위한 매개체가 I/O버스(BUS)이다.
CPU에서 버스에 접근이 가능한데 이것은 CPU내에 I/O버스의 통신 방식을 이해하고 있는 무엇인가가 있어야만 한다. 이러한 역할을 하는것이 '버스 인터페이스'이다.
버스 인터페이스는 버스가 어떻게 데이터를 전송하는지, 그에 대한 프로토콜 혹은 통신방식을 알고 있다. CPU는 버스 인터페이스를 통해 내부에 저장되어 있는 데이터(레지스터에 저장되어 있는 데이터)를 I/O버스에 내보내기도하고 I/O버스를 통해 들어오는 데이터들을 수신하기도 한다.
클럭 신호
클럭신호는 타이밍(Timing)을 제공하기 위해서 필요하다.
CPU클럭 속도가 16Mhz라면 컴퓨터에 있는 클럭발생기(오실레이터)는 1초당 1,600,000번의 클럭을 발생시키게 된다. 그리고 CPU는 매 클럭이 발생할 때마다 그 클럭에 맞춰서 일을한다. 즉 클럭 속도가 1.6Mhz인 CPU는 1초에 1백6십만번 연산을 하게 된다. 클럭 발생기에 의해 발생되는 클럭 신호(Clock Pulse)는 CPU를 구성하는 요소에 제공되며, 이 신호에 맞춰서 CPU가 일을 한다.
CPU가 클럭 신호에 맞춰 일하는 이유는 컴퓨터 시스템은 동기화를 필요로 하기 때문이다.
'Programming > Windows System Programming' 카테고리의 다른 글
64비트 기반 프로그래밍 (0) | 2019.11.20 |
---|---|
MBCS WBCS(유니코드) 동시지원 (0) | 2019.08.11 |
아스키 코드, 유니코드 (0) | 2019.08.11 |
버스(Bus) 시스템 (0) | 2019.08.07 |
프로그램의 실행과정 및 하드웨어 구성의 재접근 (0) | 2019.08.07 |