Introduce to OS (1)
위 포스트는 udacity의 Introduce to Operating Systems by Geogia Tech 를 참고하였습니다.
추가로 이 곳 을 참고하였습니다.
0) Preview
이번 포스트와 다음 포스트에서는 다음 3가지를 다룰 것입니다.
- OS (opearting system)이 무엇인가?
- OS의 key component들이 무엇인가?
- OS에 대한 Design principal, Organization structure이 무엇인가?
우선, OS의 정의를 간단하게 하면,
A special piece of software that Abstracts and Arbitrates the underlying hardware system
Abstract는 실제로는 복잡한 하드웨어를 간단히 보이게 한다는 뜻이며,
Arbitrates는 하드웨어를 전반적으로 통제한다는 의미이다.
즉, OS가 나서서 복잡한 하드웨어를 감추고 중재하기 때문에 우리는 하드웨어를 직접 건드리지 않고 비교적 간단한 조작만 할 수 있다는 의미로 받아들이시면 될 것 같습니다.
1) Visual Metaphor
이 강의는 OS를 장난감 가게주인으로 비유하였습니다.
장난감 가게주인의 역할
-
directs operational resources
상점을 위한 자원들(노동자, 물건, …)에 대한 관리를 하는 역할인데,
이러한 관리는 크게 scheduling, allocating으로 나눌 수 있습니다.
예)
-
allocating : 상점의 물건들을 어떤 순서로 배열할 것인가?
-
scheduling : 상점의 물건을 어떤 절차로 판매할 것인가?
-
-
enforce working polices
가게주인은 가게에서 이루어지는 작업들의 규율을 정하는 일도 수행하는데,
이것도 fairness, safety, clean-up으로 나눌 수 있습니다.
예)
- fairness : 가게의 두 직원이 하나의 물건을 사용해야한다면 어떤 방식으로 공유할 수 있겠는가?
- clean-up : 한 직원이 장난감 주문을 처리하는 일을 끝냈다면 후처리를 어떻게 해야하는가?
-
mitigates difficulty of complex tasks
복잡한 업무들을 효과적으로 제어하는 역할입니다.
예를 들어서, 직원들에게 업무 메뉴얼을 가르쳐 줌으로써 어떻게 주문하고, 어떻게 일을 처리하는지를 제어할 수 있겠습니다.
OS의 역할
-
- directs operational resources
-
CPU메모리, 주변장치(디스크, 네트워크카드…) 같은 자원들을 어떤 어플리케이션에 어떻게 할당할지를 정해줍니다.
-
- enforce working polices
-
어떻게 위의 리소스들을 사용할 것인지에 대한 규칙을 정합니다.
예)
-
여러 사용자들에게 위에서 언급한 자원들을 어떻게 분배할지를 정함.
-
각 어플리케이션의 메모리 최대 사용량 정하기
:프로세스 당 파일 열 수 있는 개수, 메모리 관리 demon을 처리하기 위한 threshold
-
- mitigates difficulty of complex tasks
-
Abstract hardware details
-
하드웨어를 직접 제어하지 않고 어플리케이션 단위 내지는 플랫폼 단위에서 조작하여 하드웨어에 대한 디테일을 요구하지 않음
-
Applications interact via system calls with the operating system, and the operating system takes care of managing those difficult tasks for them.
이 말은 지금은 무슨 말인지 몰라도 될 것 같다. (애초에 system call이 무엇인지도 모르니..)
2) What is an Operating System?
이번에는 os가 무엇인지, 그리고 os가 Computing system에서 어떤 역할을 가지는지 알아보도록 하겠습니다.
우선적으로 Computing system이 무엇인지 알아보도록 합시다.
Computing system
: 여러 하드웨어 구성품으로 이루어짐
-
processing element
흔히 CPU라고 하는데, CPU는 여러 processing element(core)로 이루어져있습니다.
-
memeory
-
iternet & internet
-
gpu
-
storage device (file, ssd driver, usb)
-
embedded platform ( 여러 어플리케이션에서 사용되는 하드웨어 구성품들 )
그럼 본격적으로 OS에 대해서 알아보도록 합시다.
OS의 정의
: 하드웨어와 여러 어플리케이션 사이에 있는(일종의 중재자) 소프트웨어들을 말함.
OS의 역할(장점)
OS는 하드웨어를 직접적으로 접근함으로써 다음과 같은 역할을 합니다.
-
hide hardware complexity
어플리케이션 사용자나 개발자로 하여금 하드웨어의 복잡도를 고려하지 않아도 되게끔함.
- storage devices를 다룰 때의 복잡성을 고려하지 않아도 됨.
-
manage high level abstraction of files : read나 write같은 연산을 파일을 통해서 조작할 수 있게 함.
-
Web server application에서는 유저요청을 처리하기 위해 패킷이나 비트같은걸 고려하지 않아도됨
-
네트워킹 자원도 추상화 : Socket라고 불림
-> Socket을 통해서 패킷이나 데이터를 주고받읆으로 인해 서비스를 창출함.
-
Resource management
어플리케이션이 실행될 때 하드웨어를 중재하는 역할을 함.
- Resource allocation : 특정 어플리케이션을 실행하기 위한 자원을 할당.
- scheduling : 특정 CPU에서 어떤 어플리케이션을 실행할 지를 정함.
-
Provide isolation & protection
여러 어플리케이션이 같은 하드웨어에서 구동될 때 OS는 이들의 영역을 서로가 침범하지 않게끔 제어하는 역할을 함.
- Isolation : 다른 어플리케이션에 대한 메모리는 다른 물리적인 공간(pysical memory)에 할당함
- Protection : 만약 부득이하게 그렇게 되었다 하더라도 한 어플리케이션이 실행될 때 다른 어플리케이션에 할당된 메모리를 참조하지 않음.
3) 예시를 통해서 이해하기
이제 OS의 개념과 역할에 대해서 이론적으로 알아보았으니 이것들을 예시를 통해서 이해해보도록 하겠습니다.
3-1. OS에 해당하는 것과 아닌것을 찾아보시오!
-
파일에디터(X)
어플리케이션임, 얘는 하드웨어를 관리하지않음
-
파일시스템(O)
파일의 입출력과 같은 operation들은 하드웨어의 역할을 추상화한 것이라 생각하면 됨. (Disk나 Storage는 이러한 기능이 없음.)
-
장치 드라이버(O)
하드웨어 장치들을 사용하기 위한 decision들을 내려줌.
-
캐시 디바이스(X)
OS 소프트웨어는 성능향상을 위해서 캐시 메모리를 사용하기는 하지만, OS가 직접 관리하는게 아니라 하드웨어가 캐시메모리 사용을 주도함.
-
웹 브라우저(X)
파일 에디터와 비슷하게 어플리케이션의 일종
-
스케쥴러(O)
플랫폼 위에서 실행되는 여러 어플리케이션을 구동하기 위한 CPU의 실행순서를 관리한다.
3-2. Abstraction과 Arbitration
-
- Distributing memory between multiple processes (Arbitration)
-
여러 프로세스들로 하여금 각 프로세스가 어떤 메모리를 참조할 것인지를 중재하는 역할이기 때문에 Arbitration.
-
- Supporting different types of speakers (Abstraction)
-
우리가 스피커(하드웨어의 일종)가 어떻게 동작하는지에 대한 지식이 없어도, 그냥 써보고 가장 괜찮은 것을 고르면 되기 때문에 Abstraction, 그 중에서도 hide hardware complexity에 해당합니다.
-
- interchangeable access of hard disk or SSD (Abstraction)
-
위와 비슷하게 하드디스크와 SSD에 대한 디테일을 잘 몰라도 어플리케이션을 어떤 저장소에 넣을 것인지를 정해줄 수 있음.
3-3 Operating Systems Examples
이번에는 실제로 만들어졌던 Real System의 예시를 통해 OS를 이해해 보도록 하겠습니다.
-
set up OS target Desktop environment
- MS Windows
- UNIX based
- Mac OS X : 애플 디바이스에서 사용하는 OS, UNIX BSD (Berkerly system distribution ) 커널을 확장하여 만들어졌다고 한다. (그런데 커널이 뭐지?? 아마 다음시간에 볼 수 있을 것 같다..!)
- LINUX : 오픈소스, 여러 소프트웨어 라이브러리의 번들. 우분투같은 예가 있다.
-
set up OS target Embedded environment
ex) 스마트폰, 태블릿
- Android : 리눅스의 임베디드 플랫폼
- IOS : 아이폰, 아이팟
- Symbian
이들 중에서 앞으로는 LINUX에 대해서 조금 더 알아보도록 할 것입니다.