⚠️ 공부한 내용을 정리하는 공간입니다. 설명이 부족하거나 옳바르지 못한 부분이 있을 수 있습니다.
옳바르지 못한 내용을 발견하셨다면 댓글로 알려주시길 부탁드립니다. 수정하도록 하겠습니다.
오늘의 사족
규칙적으로 사는 건 참 힘이 듭니다. 불규칙적인 생활을 규칙적으로 하는 삶은 참 쉽고요 규칙적인 삶이 벅차게 느껴질 때마다 도덕시간에 배웠던 인물인 칸트가 존경스러워집니다. 매일 공부 글을 올리기로 스스로와 약속한지 5일차입니다. 매일 글을 올리는 건 많은 노력이 듭니다. 나중에 공부한 내용을 잊어버렸을 때 작성한 글을 보면 이해될 수 있도록 최대한 직관적으로 작성하고 싶지만 그러려면 시각 자료도 만드는 등 많은 시간이 듭니다. 그 누구도 강제하지 않았던 매일 포스팅 올리는 과제는 스스로와 협의하여 그만 놓아주기로 하였습니다. 그렇다고 아예 블로그를 닫는 건 아닙니다. 평일동안 공부 글을 올리고 주말에는 평일에 올렸던 글을 수정하여 글의 퀄리티를 높이고자 합니다. 7일 7포스팅을 하기 위해 두서 없고 엉터리인 글을 쓰는 건 추후에 하등 쓸모 없는 짓이라 생각합니다. 최대한 모든 글을 유익하게 작성하고 싶은 건 필자의 욕심이라 해야할까요? 암튼 그렇습니다.
요약하자면 '7일 7포스팅에서 7일 5포스팅이 되었다' 입니다.
컴퓨터는 무엇일까?
그냥 단순하게 생각하면 컴퓨터는 여러 '용도'로 사용할 수 있는 '기계'이다.
그렇다면 어떤 용도에서의 '용도'이고 또 '기계'는 또 무엇일까?
이렇게 꼬리에 꼬리를 물면 끝도 없을 것 같으니 목차를 세워서 이야기 해보자!
< 목차 >
1. 내가 생각하는 컴퓨터란?
2. 컴퓨터는 왜 만들어졌을까?
3. 컴퓨터는 무슨 일을 하는가?
3-1. 컴퓨터에서의 제어와 액션
3-2. CPU란?
1. 내가 생각하는 컴퓨터란?
컴퓨터는 기계이다. 컴퓨터를 구성하는 부품들의 조립으로 만들어져서 목적에 따라 사용되는 기계라고 생각한다. 컴퓨터를 구성하는 부품으로는 CPU와 메모리, I/O Device 등이 있다. 조립되어 만들어진 컴퓨터는 사용하는 사람에 따라 여러가지 일을 하는데 여러가지 일을 할 수 있는 이유는 여러 목적에 따라 프로그램이 만들어지기 때문이다.
여기서 또 '프로그램'은 무엇인가?
이는 추후에 다룰 이야기(해당 링크 첨부)이니 그냥 컴퓨터에 있는 실행할 수 있는 파일(PPT, Excel, Kakao talk ...)이라고 생각하자. 이렇게 프로그램은 실시간 채팅을 위해 사용되는 프로그램도 있고 발표자료, 시각자료를 만들기 위해 사용되는 툴에 특화된 프로그램도 있고 정말 다양한 목적에 따라 만들어진다. 프로그램이 만들어져 실행되는 과정은 조금 더 뒤(해당 링크 첨부)에 얘기해보자. 어쨌든 이렇게 다양한 목적에 따라 만들어진 프로그램을 사용하기 위해 대부분의 사람들은 컴퓨터를 사용한다고 생각한다.
정리하면 사람들은 여러 목적을 충족하기 위해 만들어진 프로그램을 사용하기 위해 컴퓨터를 사용한다.
그러면 컴퓨터는 어떻게 프로그램을 실행할 수도 있고 프로그램을 만들 수도 있는 것일까? 이를 생각해보기 전에 컴퓨터가 만들어진 처음 배경을 조사해보자!
2. 컴퓨터는 왜 만들어졌을까?
컴퓨터는 '계산하다'는 뜻의 라틴어인 'computare'에 의해 생겨났다. 처음 컴퓨터는 '계산'을 편하게 하기 위해 만들어졌다.
계산은 수를 통해 이루어지며 그 계산에는 규칙이 존재한다. 예를 들어 2 + 3 을 계산한다고 한다면 2, 3의 수를 통해 계산이 이루어지며 + 등호의 규칙을 따라 계산이 이루어 진다. 계산이 단순하면 사람이 할 수 있지만 더 복잡해지면 한계가 생길 것이다. 그러나 사람이 하는 일인 계산을 대신하는 컴퓨터는 한치의 오차 없이 규칙에 따라 계산된 결과를 출력한다. 이렇듯 컴퓨터는 처음에 계산을 대신하기 위해 만들어졌다.
그러면 어떻게 계산을 대신 하는 컴퓨터가 현대에서는 프로그램을 실행하고 프로그램을 만드는 일을 할 수 있게 된걸까?
3. 컴퓨터는 무슨 일을 하는가?
3 - 1. 컴퓨터에서의 제어(control)와 액션(action)
컴퓨터가 어떻게 현대에서 프로그램을 실행하고 프로그램을 만들 수 있게 됐는지를 이해하기 위해서는 '제어'와 '액션'에 대해 먼저 이해할 필요가 있다.
예를 들어 가령 의자를 치우는 방법에는 크게 2가지 방법이 있다.
1) 내가 의자를 치우고자 하여 나의 신체를 사용하여 의자를 치운다.
2) 내가 의자를 치우고자 하여 주변에 있는 다른 사람에게 부탁하여 그 사람의 신체를 사용해 의자를 치운다.
위의 예시에서 말하는 2가지 방법의 차이점이 무엇인지를 알면 제어와 액션을 이해할 수 있다.
차이점은 제어와 액션의 분리이다. 첫 번째 방법은 '나'라는 주체의 의지를 통해 '나'가 의자를 치웠으므로 제어와 액션이 분리되지 않았다. 반면 두 번째 방법은 제어와 액션이 분리되어 있다. 즉, 제어는 주체가 의자를 치우고자 하는 의지를 뜻하고 액션은 의자를 치우는 행위를 뜻한다. 이러한 제어와 액션의 분리라는 개념을 컴퓨터에도 적용하게 되면서 컴퓨터는 계산 이상의 일을 대신할 수 있게 된 것이다.
제어와 액션의 분리를 어떻게 구현하였는지는 CPU의 Architecture를 보면 이해할 수 있다.
3 - 2. CPU란?
컴퓨터는 제어를 명령할 수 있게되면서 단순 계산을 넘어 n개의 명령을 실행하는 것이 가능해졌다.
컴퓨터는 연산 명령과 제어명령을 통해 규칙을 만들고 그 규칙들이 모여 프로그램이 만들어진다.
- 연산 명령: 산술, 논리(and, or, not), 비교 연산자
- 제어 명령: if문, while문과 같은 어떤 순서로 명령을 수행할지를 결정하는 명령
CPU가 메모리에 저장된 명령을 한 줄씩 읽으면서 프로그램을 실행하는 것이다.
CPU가 처음 메모리에서 명령을 읽어오면 해당 명령을 해석한다. 해당 명령이 연산 명령인지 제어명령인지를 해석하는 것이다. 이후 명령이 요구하는 동작을 수행하면서 프로그램을 실행하는 것이다.
보다 더 자세하게 CPU의 내부 구조와 동작은 다음 장에서 이야기해보자.
'🖥️ Computer Science > System Programming' 카테고리의 다른 글
[System Programming] Compile Process(Source code -> exe -> process) (11) | 2023.12.04 |
---|---|
[System Programming] CPU Instruction Cycle, Masking (2) | 2023.12.03 |
[System Programming] Memory System, Instruction Cycle (0) | 2023.12.01 |
[System Programming] CPU Architecture (0) | 2023.11.30 |