C 언어 | 컴퓨터 시스템 개발 | 프로그램의 구조

프로그램이 작동하는 방식과 응용 프로그램이나 운영 체제 등 소프트웨어의 종류에 대해 설명한다.

소프트웨어와 프로그래밍

만약 이미 C언어 이외의 프로그래밍 경험이 있고, 프로그램이 어떤 것인지를 이해한다면 이 항목은 건너 뛰어도 된다.

모든 컴퓨터는 그 시스템은 달라도 “소프트웨어"라는 논리적인 정보에 의해 움직이고 있다. 소프트웨어는 컴퓨터가 수행해야 할 처리의 절차와 정보를 기록하는 프로그램이다. 컴퓨터가 부팅을 하고 그 때부터 정해진 절차에 따라 프로그램이 CPU에 로드된 컴퓨터의 전원이 꺼질 때까지 실행을 계속하고 있다. 컴퓨터는 소프트웨어 없이 움직일 수 없다.

CPU가 읽고 처리하는 프로그램은 기계어라고 하는 수치만으로 표현된 데이터로 구성되어 있다. 이 수치는 각각 CPU가 정하고 있는 의미로 할당되어 있으며, CPU는 명령을 읽고, 가져온 명령을 해석하고 실행한다. CPU가 다음에 읽어 들일 명령의 위치를 판단하고 프로그램을 넣는 동작을 패치(fetch)라고 한다. 이 패치 사이클과 명령어 실행 사이클을 반복하여 제대로 된 프로그램이 작동하게 된다.

그러나 프로그래머가 만드는 대부분의 소프트웨어 응용 프로그램은 컴퓨터의 전원을 켠 후 바로 동작하는 프로그램을 만드는 것은 아니다. 애플리케이션은 응용 소프트웨어 또는 응용 프로그램이라고도 불리며, 컴퓨터로 업무 처리 등 특정 이용 목적을 가지고 만들어진 소프트웨어를 가리킨다. 그럼, 응용 소프트웨어를 실행하기까지의 과정은 어떻게 되는 것인가?

컴퓨터의 전원을 켜면 처음에 정해진 프로그램이 실행된다. 그리고 하드웨어의 초기화 처리가 종료된 시점에서 정해진 기록 장치에서 프로그램을 읽는다. 이러한 일련의 동작을 부팅이라고 한다. 부트 프로세스에 대한 자세한 내용을 알고 있는 프로그래머는 극히 일부이며, 일반 프로그래머는 알 필요가 없다.

부팅 프로세스가 완료되면 운영 체제가 시작된다. 운영 체제(Operating System)는 물리적 컴퓨터의 제어 및 시스템 관리, 기본적인 작업 환경을 제공하는 소프트웨어로, 기본 소프트웨어라고도 한다. 운영 체제가 없으면 컴퓨터를 사용할 수 없다. 대표적인 운영 체제는 Microsoft Windows와 Solaris, HP-UX OS/2, Linux 등이 있다.

우리가 만드는 소프트웨어는 운영 체제를 토대로 한다. 물론 운영 시스템도 프로그램이기 때문에 개인적으로도 만들 수 있지만, 그러기 위해서는 상응하는 개발 경험과 정보 과학 및 시스템에 대한 고급 지식이 필요하다. 그러나 응용 소프트웨어는 운영 체제에서 실행되므로 하드웨어 지식은 그다지 필요하지 않는다. 운영 체제가 제공하는 기능을 사용하여 효율적으로 원하는 프로그램을 구축할 수 있다는 것이다.

비즈니스 응용 프로그램이나 게임 소프트, 심지어 바이러스조차도 어떤 기본 소프트웨어의 위에서 실행되는 응용 소프트웨어이다.

한편, 이 책에서는 “시스템"이라는 말을 많이 사용하고 있는데, 이는 운영 체제의 단순히 줄인 것이 아니라 하드웨어와 소프트웨어로 구성된 정보 처리 환경 전체를 의미한다. 예를 들어, 운영 체제와 같이 동작하는 거대한 응용 소프트웨어를 움이지는 중간 언어라고 할 수 있는 데이터를 생성하기 위해 C언어가 사용될 가능성도 있다. 따라서 C언어 동작 대상이 반드시 운영 체제라고 할 수 없기 때문에, 시스템이라는 추상적 표현을 즐겨 사용하고 있다.




최종 수정 : 2017-11-26