우선 우리가 알고있는 시스템이란 프로그램을 동작시키기위한

알고리즘의 유한 집합이라 알고 있습니다.


국어 사전에는

SYSTEM [명사] 필요한 기능을 실현하기 위하여 관련 요소를 어떤 법칙에 따라 조합한 집합체.

라고 명시 되어 있습니다.



제가 위에 그림은 시스템에 대해 쉽게 설명하기 위해 그린 것입니다.

유저가 주변 장치 밑 응용프로그램을 사용하려면 중간에서 시스템이

이 둘을 연결 시켜주어야 합니다.

시스템은 굉장히 포괄적인 의미라 운영체제도 시스템에 해당되고 혹은 하나의

응용프로그램을 움직이는 알고리즘도 시스템에 해당할 수 있습니다.

즉, 거대한 몸을 움직이기위한 명령 체계라고 생각하시면 되겠습니다.

여기서 가장 중요한 역할인 '인터페이스'가 필요한데 이는 나중에 더 자세히 다루겠습니다.


시스템에 대해서는 개념은 쉽습니다.

그럼 여기서 시스템 프로그램이란 무엇인가.

쉽게 말해서 시스템을 구조화하기위한 작업을 뜻합니다.


하지만 여기서 여러분들이 아셔야 할 것은 저는 어디까지나

넓은 범위의 시스템프로그래밍에대해서 쓰고 있기 때문에 여러분들이

윈도우즈 환경에서 시스템을 개발을 할지 리눅스 환경에서 개발을 할지에 따라

프로그래밍 환경이 달라지니 우선은 개념만 익히시기 바랍니다.


그리고 여러분들이 시스템프로그래밍을 공부하신 다면 필히 아셔야하는 개념인데

이는 컴퓨터 시스템의 구성 요소에 대해 아셔야 합니다.

알기 쉽게 설명해 드리겠습니다.


      Main compornents of computer

 



CPU부터 캐쉬까지가 컴퓨터의 기본적 구조이고

메모리부터 하드디스크까지가 운영체제가 있는 부분입니다.

하드디스크에 저장되어있는 데어터를 메인 메모리에 프로세싱시켜 놓고

CPU에서 연산처리하는 동안 캐쉬가 CPU의 속도와 메모리의 속도 차이를

중간에서 감화시켜줍니다.


이것이 기본적인 컴퓨터 시스템의 구조 입니다.

우리가 이 그림을 통해 알아야 할것은 '메모리에 있던 데이터가 옳겨저서 가공 된다'

라는 것을 아시면 됩니다.

즉, 데이터의 흐름의 개념만 이해하시면 됩니다.


각 요소는 일종의 버스로 연결되어있고 데이터는 그 버스를 타고

순서도에 따라 흘러가 가공되고 이 과정을 제어하는 것이 시스템이고 

시스템을 구조화 시키는 작업을 '시스템 프로그래밍' 이라합니다.

여러분들이 사용하시는 운영체제는 매우 복잡하며 또 각 프로그램들을 프로세싱할 때

메모리를 효율적으로 사용하기위해 수많은 작업을 단 시간만에 해치웁니다.

우리는 프로그래머들의 노력의 산물을 이용하고 있는 것이지요.


물론 저도 공부하는 입장에서 많이 멀었지만 우리가 좋은 프로그래머가 되려면

단순한 코딩이 아닌 생각하는 프로그래밍을 할 줄 알아야 한다고 생각합니다.

때문에 C언어나 DB나 네트워크 등도 중요하지만 먼저 시스템적인 부분을

알고 가야 한다고 생각이 듭니다.


다음시간에는 CPU의 데이터 처리과정에 대해 같이 공부해보록 하겠습니다.

감사합니다.


본문 http://back582cool.blog.me/220662200085   (사람과인터페이스 블로그 - 시스템프로그래밍)

오류나 오타 지적은 언제나 감사합니다.

상업적 목적의 무단 복사나 변조를 금합니다.

영리 목적의 복사를 허가합니다. (조-출처를 밝혀 주세요)

'강한 Editor > 시스템 프로그래밍' 카테고리의 다른 글

CPU의 데이터 처리 과정  (0) 2017.11.03