OS에 대해 공부하려 시작한 것 같은데 조금 뜬금없는 질문일 수 있을 것 같네요. 하지만, 대답하기 그렇게 어렵지 않은 질문이니 대답을 해봅시다.
그야, 컴퓨터를 사용하면 우리가 여러모로 편해지니까요.
완전 맞는 말이죠. 컴퓨터가 없었으면 얼마나 많은 귀찮은 일들을 해야할지 상상이 안갑니다.

위의 사진은 우리의 일을 대신 해주는 컴퓨터들입니다. 컴퓨터는 문서작성, 웹서핑, 스트리밍 등등 수 많은 일들을 대신 해주고 있고 내부적으로 0 과 1을 사용한 간단한 연산 들의 복잡한 조합으로 이루어집니다. 그렇다면 컴퓨터 안의 수많은 부품들 중에서 누가 이 연산을 진행하는 지 알아야겠죠.

바로 CPU 입니다. 아까 위에서 컴퓨터 내부적으로는 0과 1을 사용한 간단한 연산을 사용한다 그랬는데 CPU에게 0과 1의 개념은 어떻게 있을까요? 답은 전기입니다. 간단하게는 전원이 공급이 되어서 전압이 5V일 때를 1, 그렇지 않을 때 0V를 0이라고 인식할 수 있죠. 그렇기 때문에 CPU는 물리적으로 다뤄야하는 하드웨어의 영역입니다.
자, 그러면 여기까지 정리를 해볼께요. 컴퓨터가 어떤 작업을 한다는 것은 곧 CPU가 연산을 한다는 것이고, 연산은 0과 1을 사용해서 합니다. 이는 물리적으로 전기적인 ON/OFF 신호를 이용하는 것이죠. 그러면 0과 1이라는 논리적인 신호를 가지고 CPU의 전기적인 신호를 제어해주어서 사용자가 시킨 작업을 CPU에게 수행시키는 누군가가 분명 있을 것입니다. 그 누군가가 바로 OS (Operating System) 입니다.
- CPU와 같은 컴퓨터의 하드웨어를 관리한다.
- 사용자가 원하는 응용프로그램을 작동시킬 수 있도록 하드웨어와 사용자 중간에 서서 하드웨어가 제공하는 서비스를 이용할 수 있도록 기반을 마련해준다.
Operating System Concept, 공룡책으로 잘 알려진 책에서는 운영체제에 대해 공부하는 이유 중 하나로 아래와 같이 나와 있습니다.
Simply becuase, as almost all code runs on top of an operating system, knowledge of how operating systems work is crucial to proper, efficient, effective, and secure programming.
-> Operating System Concept 10th, p.6
개발자가 작성한 코드는 모두 운영체제 위에서 돌아가게 되고 그 코드에 적힌 동작을 기반으로 OS가 하드웨어를 제어하기 때문에, 운영체제에 대해 깊이 있게 공부하는 것은 곧 저희가 짜는 코드가 더욱 더 효율적이고 보안적으로도 안전한 프로그래밍이 되는 것이죠!
위에서 운영체제가 응용프로그램을 원활하게 돌아갈 수 있게끔 하드웨어를 관리해준다고 했었습니다. 그러면 운영체제를 공부하기 앞서 컴퓨터가 프로그램을 처리하기 위해 어떤 구조를 갖고 있는지 알고 있어야 운영체제가 이를 어떻게 관리하는지에 대한 이해가 되겠죠?

Von Neumann architecture
CPU, 메모리, 프로그램의 구조를 갖는 현재 범용 컴퓨터의 구조를 확립한 최초의 아키텍쳐
폰 노이만 구조는 1945년에 수학자이자 물리학자인 존 폰 노이만이 발표한 컴퓨터의 설계 구조 입니다. 이 아키텍쳐가 발표되기 전에도 컴퓨터는 존재했지만 연산과 데이터에 따라 각각에 맞는 수많은 전선들을 재배치를 해야 했기 때문에 컴퓨터를 작동시키기 위해서는 상당한 인력이 들었다고 합니다.
폰 노이만 구조는 프로그램 내장 방식 을 최초로 도입해 이러한 문제를 획기적으로 해결할 수 있었습니다. 바로 내장 메모리에 명령어들을 저장하고 프로그램 실행에 필요한 명령어를 CPU로 불러와 연산을 해주는 구조이죠. 이러한 구조에서는 컴퓨터가 다른 작업을 하기 위해서는 전선을 재배치할 필요 없이 실행하고자 하는 프로그램만 교체해주면 되기 때문에 컴퓨터로서의 범용성이 크게 증가했습니다.
이 후의 컴퓨터들은 지금까지도 이 폰 노이만 아키텍쳐를 기반으로 만들어졌습니다. 컴퓨터로 가질 수 있는 굉장히 강력한 구조를 꽤나 이전인 1940년대에 만들어졌다는 얘기죠! 물론 폰 노이만 구조도 폰 노이만 병목현상 이라는 단점이 있었기 때문에 이를 해결하고자 했던 여러 시도가 있었으나 폰 노이만 구조 이상의 효과를 보였던 상용화 된 구조는 없었습니다.
📝 폰 노이만 병목현상을 해결하기 위해 나온 구조로 하버드 구조가 있습니다. 실제로 현대의 컴퓨터는 폰 노이만 구조와 하버드 구조를 모두 쓰고 있습니다. 하지만 이 구조 또한 기본 구조를 폰 노이만 구조를 채택하고 있기 때문에 현대의 컴퓨터도 그 기본 구조를 폰 노이만 구조라고 할 수 있습니다.
폰 노이만 구조에서 프로그램 처리는 다음 과정으로 이루어 집니다.
하나의 프로그램은 여러 명령어들의 조합으로 이루어져있기 때문에 프로그램의 명령어를 위의 순서로 순차처리함에 따라 프로그램이 실행된다고 볼 수 있습니다.