본문 바로가기

IT 기본

[IT 지식] 04. 운영체제

0. 

지난 포스팅에서 컴퓨터의 주요 구성 부품인 CPU, 메모리, 보조기억장치가 무엇을 하는지 배웠다.

 

저장된 한글 문서 작업을 한다고 했을 때,

보조기억장치에서 저장된 한글 파일을 찾아다가 메모리 위에다 올리고 CPU가 메모리 위에서 작업을 하는 것이다.

우리는 실제로 이렇게 컴퓨터를 사용하고 있었던 것이다.

그런데 우리는 컴퓨터의 이런 동작이 왜 이렇게 낯선걸까?

 

우리는 컴퓨터를 사용할 때 위와 같은 작업을 고민해본 적이 없기 때문이다.

한글 문서 작업을 하기 위해선 그냥 한글 문서 파일을 더블클릭만 해서 실행만 시키면 됐다.

이 말은, 리가 원래는 해야만 했던 위와 같은 복잡한 작업을 대신 해주는 프로그램이 있다는 얘기다.

그 녀석이 바로 운영체제(Operating System, OS)이다.

 

 

1.

운영체제라는 프로그램 덕분에 우리는 하드웨어를 몰라도 된다.

<보조기억장치에서 필요한 파일 찾고, 파일을 메모리 위에 올리고, CPU가 메모리 위에서 일을 하는>

이런 프로세스를 알 필요가 없어졌다.

왜냐고? 운영체제가 다 대신 해준다니깐?

 

운영체제가 하드웨어를 다 관리해줘서 우리가 프로그램을 쓸 환경을 만들어준다.

 

대표적인 운영체제로는, 1) Window, 2) Mac OS, 3) iOS, 4) Android, 5) Linux 요렇게 5가지가 있다.

프로그래머들이 만드는 각 종 소프트웨어, 애플리케이션들은 이 5개의 OS 위에서 작동한다.

출처: 구글 이미지

 

2.

각 운영체제 위에 돌아가는 프로그램을 만들 때, 각 운영체제가 요구하는 언어들로 프로그램을 만들어야 한다.

 

자세하게 설명하면,

1) 윈도우 위에 돌아가는 애플리케이션을 만들고 싶으면 윈도우가 지정한 C#, C++, JavaScript.. 으로 

2) Mac OS, iOS 위에 돌아가는 프로그램을 만들려면 Objective-C, Swift 으로

3) Android 위에 돌아가는 프로그램을 만들려면 Java, Kotlin 으로 만들어야 한다.

(물론, 지정한 언어가 아니라고 해서 특정 OS에서 프로그램을 못 쓰냐고 하면 그것은 아니다.)

 

하지만 기본적으로, 특정 OS위에 돌아가는 애플리케이션을 만드려면 특정 OS가 지정한 언어로 문서를 작성해야 한다.

 

 

3.

이번 포스팅에서는 대표적인 OS만 소개했는데,

사실 이전에는 정말 다양한 OS가 존재했다(사실 지금도 다양한 OS가 존재한다).

 

출처: 오웬의 개발이야기 블로그

 

이렇게 다양한 OS가 존재하면 어떤 일이 벌어질까?

 

자,

4명의 사람이 있다고 치자, 사람들마다 다 다른 OS를 쓴다.

그렇다면 개발자는 프로그램을 만들 때, 최악의 경우에 모든 OS를 대응하기 위해 각 OS가 지정한 언어로 4개의 프로그램을 만들어야겠지?

어찌저찌 해서 그렇게 만들어놨어.

그런데 수정을 해야돼, 버그가 나서 어떤 부분을 수정하거나 또는 삭제를 해야돼. 기능을 추가해야돼. 

 

그렇다면 어떻게 되겠어?

매번 4번 이상 프로그램을 수정해야하는거야.

이렇게 상상만해도 너무 힘들다 진짜...

 

 

4.

그래서 사람들은 무슨 생각을 했냐면?

하나의 언어로 한 번만 개발하고 모든 OS에 통용되도록 하는 방법이 없을까? 고민을 했지.

이 문제를 해결한 가장 유명한 언어가 Java 언어다.

 

JVM 이라는 소프트웨어를 만들고 Java로 만들어진 프로그램이 그 위에서 돌아가게끔 만들었다.

이렇게 개발을 하면,

어떤 OS건 상관없이 JVM 프로그램이 설치만 되어 있다면 Java로 만든 프로그램은 OS상관없이 다 사용할 수 있게 되는거다.

결국은 Java라는 언어로 프로그램 하나만 만들면 되는 거지.

 

윈도우 유저라면 자바로 만들어진 프로그램을 쓰기 위해서 JVM 파일 설치를 해본 적이 있을 것이다.

출처: https://gd05.tistory.com/50

 

5.

파이썬도 그렇고, 루비도 그렇고, php도 그렇고..

위 언어들은 자기 언어로 만든 프로그램이 실행될 수 있는 환경을 세팅하는 프로그램을 만들었다.

따라서 환경 프로그램을 설치하면 이 언어로 개발된 수많은 애플리케이션들이 OS가 무엇이든 상관없이 이용가능하다.

 

물론 이렇게 사용하는 애플리케이션은 각 OS 바로 위에서 실행되는 것은 아니다. 

그 말은 OS 바로 위에서 돌아가는 프로그램보다는 느릴 수 있다는 얘기다.

왜냐하면 윈도우 위에 > 환경 프로그램 위에 > 애플리케이션이 실행되는 것이기 때문에..

하지만 한 번 만들어 놓으면 이곳 저곳에서 쓰일 수 있으니 범용성 있는 언어라고 말할 수 있겠다.

 

 

6.

이번 포스팅에서는

하드웨어를 관리해주는 프로그램인 운영체제에 대해서 알아보았다.

 

운영체제 종류,

운영체제 위에서 실행되는 프로그램을 만들기 위해서는 주로 어떤 언어들을 써야 하는지,

다양한 OS에 대응되는 프로그램을 만들기 위해서 각 언어들이 어떻게 했는지 알게 되었다.

 

운영체제 덕분에 우리가 얼마나 편하게 개발을 할 수 있는지,

그리고 개발자들이 만드는 수많은 프로그램들과 운영체제와의 관계에 대해서 조금 더 이해하셨길 바라며!

포스팅은 여기서 마무리~~