[컴퓨터 시스템] 1. 프로그램은 어디에서 실행될까
시스템 공부를 처음 시작하면 C, 메모리, CPU, 운영체제, 스레드가 서로 다른 과목처럼 보이기 쉽습니다. 그래서 초반에는 세부 기술보다 먼저 이 주제들이 모두 같은 실행 장면을 다른 높이에서 설명한다는 감각을 잡아두는 편이 중요합니다.
이번 글은 책 소개가 아니라 좌표축을 세우는 글입니다. 프로그램 하나가 저장장치에 놓여 있다가 실행되고, 메모리로 올라오고, CPU가 읽고, 운영체제가 그 과정을 관리하는 흐름을 먼저 정리해두면 뒤의 편들이 훨씬 덜 흩어집니다.
- 컴퓨터 시스템을 하드웨어만이 아니라 실행 환경 전체로 보는 관점
- 프로그램 실행에 실제로 개입하는 주요 요소 다섯 가지
- 하나의 프로그램을 여러 층위에서 보면 어떤 공부 주제가 생기는가
- 아주 작은 실행 장면을 따라가며 저장장치, RAM, CPU, 운영체제 역할 연결하기
- 초반에 흔히 생기는 오해와 이후 편을 읽을 때의 기준
1. 컴퓨터 시스템은 부품 목록이 아니라 실행 환경이다
보통 컴퓨터 시스템이라고 하면 CPU나 메모리 같은 하드웨어만 먼저 떠올리기 쉽습니다. 하지만 실제로 프로그램이 실행되려면 하드웨어만으로는 부족합니다. 코드를 메모리에 올리고, CPU 시간을 나누고, 파일과 입출력을 조율하는 관리층이 함께 있어야 합니다.
그래서 시스템이라는 말은 부품의 이름표보다 프로그램이 실제로 돌아갈 수 있게 만드는 전체 환경에 가깝습니다. 하드웨어, 운영체제, 그리고 그 위에서 실행되는 프로그램을 하나의 그림으로 봐야 뒤의 편들이 서로 연결됩니다.
| 관점 | 무엇을 본다고 생각하는가 | 빠지기 쉬운 것 |
|---|---|---|
| 하드웨어 관점 | CPU, RAM, 저장장치 같은 부품 | 프로그램 실행을 누가 조율하는지 놓치기 쉽다 |
| 시스템 관점 | 하드웨어 + 운영체제 + 실행 중 프로그램 | 부품이 아니라 실행 구조로 본다 |
2. 프로그램 실행에는 다섯 주체가 동시에 등장한다
프로그램 하나를 실행할 때 실제로는 여러 요소가 동시에 개입합니다. 저장장치에는 파일이 보관되고, 운영체제는 그 파일을 읽어 메모리에 올리고, CPU는 메모리의 명령을 읽어 계산하고, 결과는 다시 입출력 장치로 나갑니다.
이 다섯 주체를 한 번에 잡아두면 이후 편에서 세부 개념을 배울 때도 '지금 어느 층위를 보는 중인가'를 스스로 물어볼 수 있습니다.
| 요소 | 역할 | 처음 공부할 때 놓치기 쉬운 점 |
|---|---|---|
| 저장장치 | 프로그램 파일과 데이터를 보관한다 | 파일이 저장돼 있다고 바로 실행되는 것은 아니다 |
| 운영체제 | 실행 환경을 만들고 자원을 배분한다 | 배경 서비스가 아니라 실행 관리층이다 |
| RAM | 실행 중인 코드와 데이터를 담는다 | 저장장치와 역할이 다르다 |
| CPU | 명령을 읽고 계산한다 | 똑똑한 해석기가 아니라 정해진 명령을 수행한다 |
| 입출력 장치 | 외부와 정보를 주고받는다 | 결과가 바깥으로 나가는 통로라는 점을 놓치기 쉽다 |
3. 같은 프로그램을 층위별로 보면 공부 주제가 나뉜다
시스템 공부가 길어 보이는 이유는 한 실행 장면을 서로 다른 높이에서 반복해서 보기 때문입니다. 사람은 코드 수준에서 생각하지만, 컴퓨터는 비트와 명령과 메모리와 운영체제의 규칙 속에서 그것을 실행합니다.
중요한 점은 주제가 많아지는 것이 아니라, 같은 장면을 더 낮은 층위까지 내려가며 설명한다는 데 있습니다.
| 층위 | 대표 질문 | 이후 편에서 연결될 주제 |
|---|---|---|
| 소스 코드 | 사람은 무엇을 쓰는가 | C 문법, 함수, 자료형 |
| 데이터 표현 | 값은 메모리에서 어떻게 저장되는가 | 비트, signed/unsigned, 부동소수점 |
| 명령 실행 | CPU는 그것을 어떻게 읽는가 | 어셈블리, 레지스터, 스택 프레임 |
| 메모리/저장장치 | 데이터는 어디에 있고 얼마나 빨리 오나 | cache, locality, 메모리 계층 |
| 운영체제 | 누가 자원을 나누고 보호하는가 | 프로세스, 시스템 호출, 가상 메모리 |
4. hello world조차 여러 층위를 거쳐 실행된다
예를 들어 아주 작은 프로그램 하나를 실행한다고 생각해 보겠습니다. 겉으로는 단순히 명령을 한 번 내린 것처럼 보여도, 실제로는 파일 읽기, 메모리 적재, CPU 실행, 결과 출력이 연달아 일어납니다.
이 짧은 흐름을 자주 떠올릴수록 시스템 공부가 암기 과목이 아니라 연결 과목처럼 느껴집니다.
5. 초반에 자주 꼬이는 오해를 먼저 걷어내자
시스템 공부를 어렵게 만드는 것은 내용 자체만이 아니라 잘못 잡힌 시작 이미지인 경우가 많습니다. 처음에 생기는 오해를 빨리 정리해두면 뒤로 갈수록 훨씬 덜 흔들립니다.
| 오해 | 더 나은 이해 |
|---|---|
| 운영체제는 나중에 따로 보면 된다 | 운영체제는 처음부터 실행 구조 안에 들어 있다 |
| CPU만 알면 실행을 이해할 수 있다 | RAM, 저장장치, 운영체제까지 함께 봐야 한다 |
| C와 운영체제는 별개 과목이다 | 둘 다 프로그램 실행을 다른 층위에서 설명한다 |
| 시스템 공부는 세부사항 암기다 | 먼저 연결 구조를 잡고 그 위에 세부를 쌓는 공부다 |
6. 직접 해볼 문제: 실행 장면을 말로 복원해 보자
아직 세부 기술을 몰라도 충분히 풀 수 있는 문제입니다. 목적은 큰 그림을 말로 복원하는 연습입니다.
이번 글에서 기억할 것
스스로 점검
다음 글 예고
다음 글에서는 이 큰 그림 위에서 왜 C가 시스템 공부의 좋은 입구가 되는지, 그리고 소스 코드가 실행 파일로 바뀌는 흐름을 정리합니다.
'학습 자료 글 > 컴퓨터시스템' 카테고리의 다른 글
| 컴퓨터시스템 기초 6. 바이트 순서는 왜 값을 다르게 보이게 만들까 (0) | 2026.03.31 |
|---|---|
| 컴퓨터시스템 기초 5. 데이터는 왜 결국 비트로 표현될까 (0) | 2026.03.31 |
| 컴퓨터시스템 기초 4. 디버거는 실행을 보는 창이다 (0) | 2026.03.31 |
| 컴퓨터시스템 기초 3. 포인터와 메모리를 같이 이해해야 하는 이유 (0) | 2026.03.31 |
| 컴퓨터시스템 기초 2. C는 왜 시스템의 입구가 되는가 (0) | 2026.03.31 |