학습 자료 글/컴퓨터시스템

컴퓨터시스템 기초 1. 프로그램은 어디에서 실행될까

cedis 2026. 3. 31. 16:09

[컴퓨터 시스템] 1. 프로그램은 어디에서 실행될까

시스템 공부를 처음 시작하면 C, 메모리, CPU, 운영체제, 스레드가 서로 다른 과목처럼 보이기 쉽습니다. 그래서 초반에는 세부 기술보다 먼저 이 주제들이 모두 같은 실행 장면을 다른 높이에서 설명한다는 감각을 잡아두는 편이 중요합니다.

이번 글은 책 소개가 아니라 좌표축을 세우는 글입니다. 프로그램 하나가 저장장치에 놓여 있다가 실행되고, 메모리로 올라오고, CPU가 읽고, 운영체제가 그 과정을 관리하는 흐름을 먼저 정리해두면 뒤의 편들이 훨씬 덜 흩어집니다.

먼저 짚고 갈 용어
CPU: 메모리에서 명령을 읽고 계산을 수행하는 장치
RAM: 실행 중인 코드와 데이터가 잠시 머무는 작업 공간
운영체제: 하드웨어 자원을 조율하고 프로그램 실행 환경을 제공하는 관리층
이번 글에서 다루는 것
  • 컴퓨터 시스템을 하드웨어만이 아니라 실행 환경 전체로 보는 관점
  • 프로그램 실행에 실제로 개입하는 주요 요소 다섯 가지
  • 하나의 프로그램을 여러 층위에서 보면 어떤 공부 주제가 생기는가
  • 아주 작은 실행 장면을 따라가며 저장장치, RAM, CPU, 운영체제 역할 연결하기
  • 초반에 흔히 생기는 오해와 이후 편을 읽을 때의 기준
한눈에 보는 흐름
1
컴퓨터 시스템을 하드웨어만이 아니라 실행 환경 전체로 보는 관점
2
프로그램 실행에 실제로 개입하는 주요 요소 다섯 가지
3
하나의 프로그램을 여러 층위에서 보면 어떤 공부 주제가 생기는가
4
아주 작은 실행 장면을 따라가며 저장장치, RAM, CPU, 운영체제 역할 연결하기

1. 컴퓨터 시스템은 부품 목록이 아니라 실행 환경이다

보통 컴퓨터 시스템이라고 하면 CPU나 메모리 같은 하드웨어만 먼저 떠올리기 쉽습니다. 하지만 실제로 프로그램이 실행되려면 하드웨어만으로는 부족합니다. 코드를 메모리에 올리고, CPU 시간을 나누고, 파일과 입출력을 조율하는 관리층이 함께 있어야 합니다.

그림으로 먼저 보기
하드웨어 관점
무엇을 본다고 생각하는가: CPU, RAM, 저장장치 같은 부품
빠지기 쉬운 것: 프로그램 실행을 누가 조율하는지 놓치기 쉽다
시스템 관점
무엇을 본다고 생각하는가: 하드웨어 + 운영체제 + 실행 중 프로그램
빠지기 쉬운 것: 부품이 아니라 실행 구조로 본다

그래서 시스템이라는 말은 부품의 이름표보다 프로그램이 실제로 돌아갈 수 있게 만드는 전체 환경에 가깝습니다. 하드웨어, 운영체제, 그리고 그 위에서 실행되는 프로그램을 하나의 그림으로 봐야 뒤의 편들이 서로 연결됩니다.

관점무엇을 본다고 생각하는가빠지기 쉬운 것
하드웨어 관점CPU, RAM, 저장장치 같은 부품프로그램 실행을 누가 조율하는지 놓치기 쉽다
시스템 관점하드웨어 + 운영체제 + 실행 중 프로그램부품이 아니라 실행 구조로 본다
왜 이 관점이 먼저 필요한가
뒤에서 포인터, 비트 표현, 어셈블리, 운영체제를 배울 때 각 단원이 아니라 같은 실행 장면의 다른 층위로 읽히게 만들기 위해서입니다.

2. 프로그램 실행에는 다섯 주체가 동시에 등장한다

프로그램 하나를 실행할 때 실제로는 여러 요소가 동시에 개입합니다. 저장장치에는 파일이 보관되고, 운영체제는 그 파일을 읽어 메모리에 올리고, CPU는 메모리의 명령을 읽어 계산하고, 결과는 다시 입출력 장치로 나갑니다.

이 다섯 주체를 한 번에 잡아두면 이후 편에서 세부 개념을 배울 때도 '지금 어느 층위를 보는 중인가'를 스스로 물어볼 수 있습니다.

요소역할처음 공부할 때 놓치기 쉬운 점
저장장치프로그램 파일과 데이터를 보관한다파일이 저장돼 있다고 바로 실행되는 것은 아니다
운영체제실행 환경을 만들고 자원을 배분한다배경 서비스가 아니라 실행 관리층이다
RAM실행 중인 코드와 데이터를 담는다저장장치와 역할이 다르다
CPU명령을 읽고 계산한다똑똑한 해석기가 아니라 정해진 명령을 수행한다
입출력 장치외부와 정보를 주고받는다결과가 바깥으로 나가는 통로라는 점을 놓치기 쉽다

3. 같은 프로그램을 층위별로 보면 공부 주제가 나뉜다

시스템 공부가 길어 보이는 이유는 한 실행 장면을 서로 다른 높이에서 반복해서 보기 때문입니다. 사람은 코드 수준에서 생각하지만, 컴퓨터는 비트와 명령과 메모리와 운영체제의 규칙 속에서 그것을 실행합니다.

중요한 점은 주제가 많아지는 것이 아니라, 같은 장면을 더 낮은 층위까지 내려가며 설명한다는 데 있습니다.

층위대표 질문이후 편에서 연결될 주제
소스 코드사람은 무엇을 쓰는가C 문법, 함수, 자료형
데이터 표현값은 메모리에서 어떻게 저장되는가비트, signed/unsigned, 부동소수점
명령 실행CPU는 그것을 어떻게 읽는가어셈블리, 레지스터, 스택 프레임
메모리/저장장치데이터는 어디에 있고 얼마나 빨리 오나cache, locality, 메모리 계층
운영체제누가 자원을 나누고 보호하는가프로세스, 시스템 호출, 가상 메모리

4. hello world조차 여러 층위를 거쳐 실행된다

예를 들어 아주 작은 프로그램 하나를 실행한다고 생각해 보겠습니다. 겉으로는 단순히 명령을 한 번 내린 것처럼 보여도, 실제로는 파일 읽기, 메모리 적재, CPU 실행, 결과 출력이 연달아 일어납니다.

이 짧은 흐름을 자주 떠올릴수록 시스템 공부가 암기 과목이 아니라 연결 과목처럼 느껴집니다.

과정 그림
1
사용자가 저장장치에 있는 실행 파일을 실행한다.
2
운영체제가 파일을 읽어 필요한 코드와 데이터를 RAM으로 올린다.
3
CPU가 메모리에 올라온 명령을 하나씩 읽으며 실행을 시작한다.
4
실행 중 필요한 값은 메모리에 쓰이고, 결과는 화면이나 파일 같은 입출력 장치로 나간다.
5
프로그램이 끝나면 운영체제는 사용하던 자원을 회수한다.
이 장면을 기억해 두면 좋은 이유
포인터를 배울 때는 메모리 쪽을, 어셈블리를 배울 때는 CPU 쪽을, 운영체제를 배울 때는 관리층을 더 자세히 보는 것뿐이라는 감각이 생깁니다.

5. 초반에 자주 꼬이는 오해를 먼저 걷어내자

시스템 공부를 어렵게 만드는 것은 내용 자체만이 아니라 잘못 잡힌 시작 이미지인 경우가 많습니다. 처음에 생기는 오해를 빨리 정리해두면 뒤로 갈수록 훨씬 덜 흔들립니다.

그림으로 먼저 보기
운영체제는 나중에 따로 보면 된다
더 나은 이해: 운영체제는 처음부터 실행 구조 안에 들어 있다
CPU만 알면 실행을 이해할 수 있다
더 나은 이해: RAM, 저장장치, 운영체제까지 함께 봐야 한다
C와 운영체제는 별개 과목이다
더 나은 이해: 둘 다 프로그램 실행을 다른 층위에서 설명한다
시스템 공부는 세부사항 암기다
더 나은 이해: 먼저 연결 구조를 잡고 그 위에 세부를 쌓는 공부다
오해더 나은 이해
운영체제는 나중에 따로 보면 된다운영체제는 처음부터 실행 구조 안에 들어 있다
CPU만 알면 실행을 이해할 수 있다RAM, 저장장치, 운영체제까지 함께 봐야 한다
C와 운영체제는 별개 과목이다둘 다 프로그램 실행을 다른 층위에서 설명한다
시스템 공부는 세부사항 암기다먼저 연결 구조를 잡고 그 위에 세부를 쌓는 공부다

6. 직접 해볼 문제: 실행 장면을 말로 복원해 보자

아직 세부 기술을 몰라도 충분히 풀 수 있는 문제입니다. 목적은 큰 그림을 말로 복원하는 연습입니다.

미니 문제
프로그램 파일 하나를 더블클릭해 실행할 때, 저장장치, 운영체제, RAM, CPU가 어떤 순서로 개입하는지 다섯 문장 안으로 설명해 보세요.

이번 글에서 기억할 것

컴퓨터 시스템은 하드웨어만이 아니라 운영체제와 실행 중 프로그램까지 포함한 실행 환경이다.
프로그램 실행은 저장장치, 운영체제, RAM, CPU, 입출력이 함께 만든 흐름으로 보는 편이 자연스럽다.
이후 편의 세부 주제는 모두 같은 실행 장면을 다른 높이에서 설명하는 내용이다.

스스로 점검

컴퓨터 시스템을 부품 목록이 아니라 실행 환경이라고 설명할 수 있는가
저장장치와 RAM의 역할 차이를 프로그램 실행 흐름 속에서 말할 수 있는가
코드, 데이터 표현, CPU, 운영체제가 한 프로그램 실행 안에서 어떻게 이어지는지 짧게 그려볼 수 있는가

다음 글 예고

다음 글에서는 이 큰 그림 위에서 왜 C가 시스템 공부의 좋은 입구가 되는지, 그리고 소스 코드가 실행 파일로 바뀌는 흐름을 정리합니다.

한 줄 정리
시스템 공부의 시작은 기능 나열이 아니라, 프로그램 실행을 여러 층위에서 보는 관점을 세우는 데 있습니다.