1.1 Introduction : What is OS and Why We need OS?

이정운·2022년 3월 7일
0

OS

목록 보기
1/1

이번 글에서는 OS의 정의가 뭔지 그리고 OS가 왜 필요한지에 대해서 간단하게 알아보자. 일단 OS는 너굴맨이다.

What is OS?

OSOperating System의 준말이다.

  • Operating: used or engaed in performing operations
  • System: an aseemblage or combination of things or parts forming a complex or unitary whole

간단히 말하면 어떤 작업을 수행하기 위한 시스템이다. 그러면 OS는 무슨 작업을 수행하는가?

OS는 Hardward를 제어하는 Software이다.

Why we need OS?

아래 그림은 컴퓨터의 계층도를 나타낸 그림이다. User나 Developer가 program에 코드를 입력하면 OS는 그것을 Machine Language를 바꿔 Device(HardWare)에 전달한다.

OS가 Hardware를 제어하는 Software라는 사실을 이제 우리는 안다. 그러면 꼭 OS가 필요한가? OS가 필요한 이유를 크게 (엄밀하지는 않지만 임의로)UserDevelopers 입장에서 다가가보자.

Developers 입장

Switch and Transistor

컴퓨터는 논리 연산을 통해 자동화와 관련된 일을 매우 효율적이고 빠르게 수행하는 계산기다.

연산을 하기 위해서는 제어가 필요하다. 이때 필요한 장치가 Switch이다. 초기 컴퓨터는 진공관 안에 물리적인 Switch가 들어가 있었고 이것을 이용해 컴퓨터를 제어해 다양한 연산을 수행 하였다.

하지만 Switch는 물리적 장치이기 때문에 회로의 집적도를 높이는데 한계가 있다. 그래서 개발된 것이 Transistor이다.

어쨋든 컴퓨터는 연산을 하는 기계이다. 이때 연산을 하기 위해서는 Switch(Transistor)제어를 해야한다.

이제 이 지식을 가지고 Developers 입장에서 OS 가 필요한 이유에 대해서 알아보자

인간과 기계의 매개자

우리가 Machine Language 로 알고 있는 "110001010010101..." 같은 binary code는 트랜지스터의 스위치를 제어하는 명령어이다. 아래 보이는 컴퓨터의 부품들은 모두 Machine Language로만 구동된다. 만약 우리가 Machine Language에 완전히 통달했다면 우리는 굳이 Python이나 C++를 사용할 필요 없이 바로 Machine에게 명령을 내릴 수 있다. 하지만 우리는 이것이 불가능하다는 것을 너무나 잘 알고 있다. (아마 이런 세상이었으면 나는 개발자를 하지 않았을 것이다.)

이때 이런 어려움을 OS가 해결해 준다. 개발자가 High-Level Language(Python,JAVA,C)로 프로그램을 짜면 OS는 그것을 Machine Language(Switch를 제어하는 이진 명령어)로 번역해 Hardware에 전달한다. 덕분에 인간은 Machine Language를 모르더라도 OS를 믿고 인간에게 비교적 친숙한 언어(?)를 활용해 프로그램을 짤 수 있다. (Make the computer system convenient to use)

호환성 문제 해결 (Compatibility)

그런데 만약 어떤 천재가 Machine Language를 이용해 자기가 사용하는 컴퓨를 오직 이진 언어로 제어할 수 있다고 하자. 그러면 이 사람은 OS가 필요 없나? ㄴㄴ 호환성의 문제가 남아있다.

개발자는 자기가 개발한 프로그램이 모든 기기에 사용되기를 바란다. 하지만 기기마다 제어하는 언어가 조금씩 다르기 때문에 만약 OS를 사용하지 않는다면 전 세계 모든 기기의 Machine Language를 공부해야 하며 이것은 물리적으로 불가능하다.

이때 이 문제 역시 OS가 해결해 준다.

OS:호환성은 이 OS맨이 처치했으니 안심하라구

인간이 프로그램을 짜면 OS는 기기에 맞게 Machine Language로 번역해 준다.

하지만 이런 친절한 OS맨도 조건이 필요하다.

OS맨이 거는 조건만 충족해 프로그램을 짠다면 우리는 Machine Language 번역에 대해 신경을 쓰지 않아도 좋다.

정리하자면

  • OS는 프로그램을 Machine Language로 번역해준다.
    (Excute User programs and Make the computer system convenient to use)
  • OS는 기기의 호환성을 보장해 한 프로그램이 여러 기기에도 돌아가게 해준다.
  • OS맨이 제안하는 규칙을 지켰을 때,

User 입장

Efficient Hardware Resources Management

지금 이 글을 보고 있는 우리는 화면에 하나의 프로그램만 돌리지 않는다. 나만 하더라도 최소 5개 이상의 프로그램을 동시에 돌리고 있고 우리가 인식하지 못하지만 내부적으로는 최소 1000개의 프로그램이 동시에 돌아가고 있다.

모든 프로그램은 작동하기 위해서는 Resource가 필요한데 여러 프로그램을 동시에 돌리기 위해서는 Resource가 효율적으로 관리되어야 한다.

그런데 우리가 Resource를 직접 관리하고 있는가? (아 휴지통에 필요없는 거 넣는 거 말고)

이 또한 우리 OS맨이 해치웠으니 안심하라구.

골치 아픈 Resource 관리를 OS맨이 다 관리하다니 너무 듬직한 친구다. 하지만 이 친구도 공짜로 해주지는 않는다.
Resource를 관리 해주는 대신 Resource에 대한 접근권은 오직 OS만 가지고 있다.

여러 Application(Program) 돌아갈 때 각 Program은 Resource에 대한 접근권이 없다. OS에 요청을 하면 그때 OS가 적절한 Resource를 할당해 준다.

Conclusion

오늘은 간단하게 OS가 무엇인지 그리고 OS가 왜 필요한지 에 대해서 알아보았다. OS는 Hardware를 제어하는 Software이다. 이때 제어하는 것은 Switch(Transistor)의 켜짐꺼짐이다.

OS가 필요한 이유는 High Level Language 를 Machine Language로 번역해 주기 때문에 프로그램을 실행시키고 컴퓨터 시스템을 이용하기 용이하게 해주며 다른 기기라도 그 기기에 맞는 Machine Language로 번역해 줘 프로그램이 호환성을 가지게 해준다. 또한 Hardware Resources를 관리해 주기 때문에 다양한 Application을 동시에 실행시킬 수 있다.

OS는 마치 오케스트라의 지휘자와 같다. 악보(High Level Language)를 가지고 연주자(CPU,RAM,GPU,SSD)에게 적절한 일을 부여(Machine Language)한다.

profile
헬스 ,강화학습,3D Vision,Robotics를 좋아하는 엔지니어 입니다.

0개의 댓글