OS공부 - 인트로

운영 체제 과목을 본격적으로 들어가기 전, 인트로적인 내용을 정리했다. 앞으로 공룡책이라고 불리는 Siberschatz et. al. 의 Operating System Concepts 10th Ed.를 따라가면서 공부할 것이다.

운영 체제 (Operating System)는 컴퓨터 시스템을 운영하는 소프트웨어를 의미한다. 그러면 컴퓨터는 무엇인가? 무엇을 보고 컴퓨터라고 하나?
컴퓨터의 정의는 다음과 같이 되어 있다.

A machine that processes the information

즉, 정보를 처리하는 기계가 컴퓨터라는 것이다. 그러면 또 꼬리에 꼬리를 무는 질문이 있다. 정보란 무엇인가? 정보의 단위도 있는가?
다행히, 섀넌 선생님이 이에 대한 답을 마련해두었는데 이는 다음과 같다.
어떤 사건 x에 대해서 해당 사건의 정보량 I는, 해당 사건이 발생한 확률에 밑이 2인 로그를 취한 값의 negative로 하자!

이게 뭔소리냐, 일반적인 주사위를 상상해보자. 주사위는 1부터 6까지 나올 수 있다.
주사위를 하늘 위로 던졌다! 아직 뭐가 나올지 모르는 상황이고 사건은 발생하지 않았다. 이때 정보량은 없다.
주사위가 땅에 도달했다. 보니까 3이 나왔네? 이런 사건이 발생했고 이걸 나만 안다고 생각해보자.
이제 이 정보를 타인에게 전달해 주고 싶다. 이때, 전달되는 정보량이 얼마인가?
주사위를 던져서 3이 나올 확률은 알다시피 1/6이다. 섀넌의 정의에 따라서, 해당 값에 로그를 취하고 음수를 붙여주면 밑이 2인 log6이 바로 정보량이 된다. 이렇게 어떤 정보에 대해서 전달을 하고 싶을때는 반드시 해당 정보에 대한 quantitative한 정의가 동반되어야 한다. 컴퓨터는 정보를 처리하는 기계니깐..

이번에는 주사위가 아니라 동전을 던진다고 생각해보자. 동전은 앞과 뒤 이렇게 두가지 사건만 발생할 수 있고, 만약 사건 X가 동전의 앞이 나왔다고 정의되었을 때, 우리는 해당 정보의 전달량을 앞선 주사위의 예와 마찬가지로 계산할 수 있다. 밑이 2인 로그와 음수를 1/2에 취해주면…!! 1이 나왔다!

도량형을 정의할 때 해당 단위의 1을 어떤 기준으로 정의할 것인지는 대단히 중요한 문제이다. 우리는 이미 앞선 예로 정보량이 1이라는 것에 대해서 어떤 느낌인지 알았다. 바로 이것이 정보의 최소 단위인 1 bit을 정의하는 방식이다. bit은 binary digit의 약자이다.

그러면 이를 확장하면, 2비트는 동전 두개로 8비트는 동전 8개로 나타낼 수 있는 정보라고 이해할 수 있다. 8비트의 해당 가짓수는 2의 8승으로 이를 1 byte로 정의한다. 이런식으로 우리가 아는 1 메가바이트, 1 기가바이트, 1 테레바이트 등을 모두 이해할 수 있다.
image

자 정보의 단위는 알았다. 그러면 구체적으로 컴퓨터가 정보를 어떻게 처리하는지 궁금해진다. “정보의 처리” 라는 것은 정보의 상태를 0에서 1로 또는 1에서 0으로 바꾸는 것을 의미한다. 이는 NOT, AND, OR, XOR, NAND, NOR 이 여섯가지 논리 게이트를 통해서 이루어지는데 얘들을 집적 시켜서 바로 그 논리 회로를 만든다. 논리 게이트를 계속 집적시켜서 논리 회로가 점점 더 빽빽해지고 컴퓨터의 정보 처리 능력이 비약적으로 향상되는 것이다. 여기서 꼭 나오는 법칙이 있는데 그 유명한 무어의 법칙과 황의 법칙이다.

  • 무어의 법칙 : 집적도가 1년 6개월마다 두배씩 늘어남
  • 황의 법칙 : 메모리가 1년에 두배씩 늘어남
    해당 법칙들 까지만 이해하고, 실제로 정보를 산술연산 하는 방법이라던가 하는것은 컴퓨터 시스템 과목에서 상세하게 다루고 있기 때문에 넘어간다.

그러면 이제 다시 컴퓨터로 돌아가자. 폰 노이만이 현대적 컴퓨터의 아버지라고 불리우는데, 그 이유는 그가 stored-program 방식의 컴퓨터를 설계했기 때문이다. 이게 뭐냐하면, 메모리에 프로그램을 저장해 놓고 쓰는 컴퓨터를 의미한다. 우리가 현재 사용하는 컴퓨터의 형태 아닌가! 이제 드디어 프로그램을 정의하는 단계까지 왔다.

프로그램이란, a set of instructions이다. 컴퓨터에게 어떤 task를 실행시키는 명령어들의 집합이 바로 프로그램인 것이다. 우리가 어떤 의도를 가지고 작성한 소스코드가 바로 프로그램이다. 이를 컴파일러가 컴파일하여 어셈블리어 단계를 지나 기계어로 번환되면 이는 곧 0과 1로 표현된 정보 이다. 우리는 중간 단계인 어셈블리어의 명령어를 보고 하드웨어가 어떻게 정보를 처리하고 있는지 파악할 수 있다.

프로그램이 무엇인지에 대해서 정의하였으니, 마지막으로 운영체제의 정의로 돌아가자.
운영체제는 컴퓨터에서 올타임으로 돌아가고 있는 프로그램이다. 구체적으로, 운영체제는 시스템 서비스들을 어플리케이션 프로그램에 제공해주는 역할을 수행하는데 이는 마치 API와 비슷하다. 사용자가 하드웨어를 직접 제어하지 않고 OS에 제어를 특정한 방법으로 요청하면, 이를 OS가 대신 처리해 주는 셈이다. 프로세스, 리소스, 유저 인터페이스 등을 관리하는 주체가 바로 운영체제!

요약

  • 1 bit는 0과 1 두가지 값만 가질 수 있는 측정 단위이다.
  • 1 byte는 8개의 bit로 구성된 데이터의 양을 나타내는 단위이다.
  • 무어의 법칙 : 회로의 집적도가 1년 6개월에 2배씩 늘어남
  • 프로그램이란, 명령어들의 집합이다.
  • 운영체제란, 시스템 콜과 같은 방법으로 사용자가 요청하면 이를 처리하여 하드웨어를 제어하는 기저 프로그램이라 할 수 있다.