Search
Duplicate
🖥️

컴퓨터 동작 과정 한눈에 보기

간단소개
컴퓨터 동작 과정 한눈에 보기
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
CS
Scrap
태그
cs
9 more properties

개요

우리는 프로그래밍을 공부하는 프로그래머이기 때문에, 프로그램 실행 과정에 대해서 잘 알고 있어야 원활한 프로그래밍이 가능하다.
이 글은 우리가 프로그램을 실행시켰을 때, 어떠한 절차에 의해 프로그램이 실행되는지 컴퓨터의 구조와 함께 간단하게 설명한 글이다.
먼저 이 글을 통해 컴퓨터의 전체적인 구조를 눈에 익혀두고, 추후 각 장치의 상세 동작 과정 또는 운영체제 공부에 도움이 되었으면 좋겠다.

컴퓨터 구조

컴퓨터는 크게 CPU, Memory, 보조기억장치, I/O Device로 구성되어있다.
각 장치별 역할은 아래와 같다.
1.
CPU
실제로 연산을 수행하는 장치이다.
2.
Memory
프로그램 실행시, 실행된 프로그램이 적재되는 곳이다.
CPU는 Memory에 적재된 프로그램 내용을 가져와서 연산을 수행한다.
주기억장치(Main Memory)라고 부른다.
3.
보조기억장치
HDD, SSD와 같은 저장 장치들을 말한다.
프로그래머에 의해 만들어진 프로그램을 저장하는 공간이며, 아직 실행 중이지 않은 프로그램들이 저장되어 있는 곳이다.
프로그램 뿐만 아니라, 프로그램에 필요한 데이터 파일(텍스트 파일, 사진, 동영상 등)도 저장되어 있다.
4.
I/O Device
입력 또는 출력을 위한 장치들을 말한다.
입력 장치의 대표적인 종류로는 키보드, 마우스가 있다.
출력 장치의 대표적인 종류로는 모니터, 프린트가 있다.
왜 컴퓨터는 저장 장치를 Memory보조기억장치 두 종류로 나눠서 사용할까?
Memory와 보조기억장치는 속도와 용량의 차이가 있다.
Memory는 속도가 빠르지만 용량이 작기 때문에, 많은 프로그램들을 저장해둘 수 없다.
보조기억장치는 속도가 느리지만 용량이 크기 대문에, 많은 프로그램들을 저장해둘 수 있다.
따라서, 우선 만들어진 프로그램을 보조기억장치에 저장해두고, 프로그램이 실행되면 Memory에 적재해서 사용한다.
또한, 실제로 연산을 수행하는 CPU는 속도가 엄청 빠르기 때문에, 훨씬 느린 속도의 HDD, SSD로부터 직접 데이터를 가져와 연산하는 경우, CPU는 놀게되고 프로그램 실행 속도도 느릴 것이다.
효율적인 프로그램 실행을 위해 Memory보조기억장치를 병행하여 사용한다.
아래는 HDD, SSD, Memory(RAM)의 속도 차이를 보여준다.

단계별 컴퓨터 동작 과정

1. 프로그램 실행 (보조기억장치 → Memory)

프로그램을 실행한다는 것은, 보조기억장치에 저장되어 있는 프로그램을 Memory에 복사한다는 것이다.
실행된 프로그램의 내용은 Memory에 복사되어 적재된다.
Memory에 적재된 프로그램이 Memory의 어디에 있는지 알기 위해, Memory는 주소라는 개념을 사용하여 특정 주소에 프로그램을 적재한다.
하나의 프로그램은 여러 메모리 주소에 나뉘어져 적재된다.

2. 연산 수행 (CPU Memory)

프로그램이 실행되어 Memory에 적재되면, CPUMemory에 적재된 프로그램의 내용을 차례대로 읽어가며 연산을 수행한다.
CPU는 프로그램의 첫 시작부분이 저장된 Memory 주소의 데이터부터 읽어와서 연산을 시작한다.
프로그램의 내용은 CPU가 수행가능한 명령어들로 채워져 있으며, CPU가 해당 명령어들을 차례대로 수행하면서 연산을 하는 것이다.

3. 입출력 처리 (I/O Device CPU)

프로그램 실행 중, I/O Device를 통해 데이터를 입력받거나 출력할 수 있다.
이때 CPUI/O Device로부터 데이터를 받아들이거나, 출력하기 위해 프로그램 실행을 잠시 멈추고, I/O Device에게 명령을 보낸다.
데이터 입출력을 할 때에는, 데이터를 잠시 저장해두는 버퍼(Buffer)를 사용한다.
입출력 처리가 완료되면, CPU는 다시 연산을 수행하거나 프로그램을 종료한다.

4. 인터럽트 처리

프로그램 실행 중에는, 입출력 처리와 같은 이유로 CPU가 특정한 시점에 인터럽트(Interrupt)를 받을 수 있다.
이때 CPU는 현재 실행 중인 명령어를 멈추고, 해당 인터럽트에 대한 처리를 수행한다.
인터럽트 처리가 끝나면, CPU는 원래 수행하던 명령어부터 다시 실행을 시작한다.
예를 들어, 프로그램 실행 중 키보드 입력이 들어오면, CPU는 키보드 입력을 처리한 뒤 다시 연산을 수행한다.

5. 프로그램 종료

프로그램의 모든 내용을 실행한 경우, 프로그램의 실행이 끝나고 Memory에서 해당 프로그램의 내용을 지운다.
만약 프로그램 실행 중에 오류가 발생하면, 프로그램이 비정상적으로 종료되고, 에러 메시지 등이 출력된다.