system programming

1장 컴퓨터 구조에 대한정리

darkblackjack 2019. 10. 13. 21:55

  시스템이란 하드웨어 + 운영체제다.

 

시스템 프로그램이라는 말은 컴퓨터 시스템을 동작시키는 프로그램을 일반적으로 의미한다.

 

컴퓨터가 동작(파일 복사나 파일이동 등과 같은 기본적인 동작)시키기 위해서 필요한 프로그램이다. 대표적인 시스템

프로그램은 우리가 알고있는 UNIX나 WINDOWS같은 운영체제들이 있다. 운영체제는 시스템 프로그램의 범주에 속하고, 이러한 운영체제 개발자들을 가리켜 시스템 프로그래머라고 한다. 시스템 프로그래머는 어셈블리 언어나 c 언어를 이용하여 하드웨어를 직접 컨트롤하는 개발자들을 가리켜 시스템 프로그래머라고도 하지만 windows나 UNIX 같은 운영체제에서 제공하는 라이브러리(운영체제에서 기능을 활용할 수 있는 시스템 함수들의 집합)을 사용하여 프로그램을 개발하는 사람들도 시스템 프로그래머라고 부른다. 운영체제에서 제공하는 시스템 함수들을 정확히 이해하려면 컴퓨터 구조에 대한 기본적인 지식도 필요로 하기 떄문에 운영체제와 컴퓨터 시스템을 제대로 알고 있어야 한다.

 

보통 CPU->Cache 까지는 컴퓨터 구조라는 과목으로 배우고 메인 메모리에서(Main memory)에서 하드디스크까지를 운영체제라는 과목으로 배우는데 운영체제는 추후에 따로 개념을 정리해서 다시 올릴 생각이다.

 

캐쉬(cache)메모리에 대한 사양을 접하기 어려운 경우가 있는데, 이는 캐쉬가 보편적으로 CPU 내부에 존재하기 떄문인데 이러한 경우에는 CPU 사양을 보면 캐쉬에 대한 내용이 분명히 존재한다.

 

컴퓨터 구조와 운영체제를 이해하게 되면 시스템 프로그래밍만 가능한게 아니고 프로그래밍을 더 효율적으로 구현하는 것이 가능해진다. 예를 들면 컴퓨터의 실행 속도를 높이거나,메모리를 효율적으로 사용하는 프로그램을 구현하는 것등이 있다.

 

컴퓨터 하드웨어의 구성

 

CPU(Central Processing Unit)

흔히 이야기하는 "중앙처리장치"가 바로 CPU이다. CPU는 기본적으로 연산을 담당하고 있고, 컴퓨터 프로그램의 실행에있어서 핵심적인 역할을 담당하기도 한다. CPU는 컴퓨터의 두뇌라고 생각하면 이해하기 쉽다.

 

메인 메모리(main memory)

램(RAM)이라는 저장장치로 구성되는 메인 메모리는 컴파일이 완료된 프로그램 코드가 올라가서 실행되는 영역이다. 예를 들어 인터넷에서 게임을 내려 받으면 다운 받은 게임은 당연히 하드디스크에 저장되게 되고,이 게임이 저장된 디렉터리에 들어가서 게임의 아이콘 버튼을 클릭하면 해당 프로그램은 메인 메모리에 올라가서 실행이 되게된다. 메인 메모리는 프로그램의 실행을 위해서 존재하는 메모리라고 생각해도 된다.

 

입-출력 버스(Input/Output Bus)

입-출력 버스는 컴퓨터를 구성하는 구성요소 사이에서 데이터를 주고 받기 위해 사용되는 경로이다.입출력 버스는 보통고속도로와 비슷한데, 주고 받는 데이터의 종류와 역할에 따라서 어드레스 버스(Address Bus),데이터 버스(Data Bus) 그리고 컨트롤 버스(Control Bus) 이렇게 세 가지로 구분이 되어 있다. 그림에서 보이는 것처럼 하드디스크와 메인 메모리,

CPU 기타 다른 장치들도 모두 버스에 연결이 되어져 있다. 그렇기 떄문에 이러한 버스 시스템을 기반으로 하드디스크에

있는 데이터를 메인 메모리로, 메인 메모리에 있는 데이터를 하드 디스크로 전송하는 것이 가능하고, 메인 메모리와 CPU

간에 데이터 입-출력도 가능하게 되는 것이다. 이러한 역할을 제공하는 것이 버스 시스템이다.

 

CPU를 이루는 구성요소에 대해서 알아보자.

 

ALU(Arithmetic Logic Unit)

프로그램이 실행되는 곳은 보통 CPU라고 알고있다. 그것도 맞는 대답이지만 CPU 내부에는 실제 연산을 담당하는 ALU라는 블록이 있고, ALU를 제외한 나머지 블록들은 연산을 하는데 도움을 주는블록들이다.

ALU가 처리하는 기본적인 연산은 크게 두 가지로 나뉘는데, 하나는 덧셈이나 뺄셈과 같은 산술 연산이고, 나머지 하나는

AND와 OR과 같은 논리 연산이다. 우리가 작성하는 대부분의 프로그램도 CPU 입장에서는 대부분 두 가지 형태의 연산으로 이뤄지게 된다.

 

컨트롤 유닛(Control Unit)

개발자가 만든 프로그램을 컴파일하면 실행파일이 생성되는데,실행파일에는 CPU에게 일을 시키기 위한 명령어들이 저장되어 있다. CPU 내부로 흘러 들어가야 CPU에게 일을 시킬 수 있게 된다.