[OS] #2. OS의 기능

<div>elop·2022년 4월 19일
0

저번 포스팅에서 OS는 hardware을 효율적으로 관리 해주는 software라고 했다.
오늘은 그래서 어떻게! 효율적으로 관리해준다는건지 알아볼 것이다.

표시된 부분이 OS의 중요한 기능들인데, 가볍게 짚고 넘어가면

  • user interfaces
    CLI(bash, shell), GUI와 같이 user에게 제공되는 interface

  • system programs
    프로그램 개발/실행에 필요한 프로그램 제공 ex) linker, loader, 탐색기, ....

  • ★system call★
    가장 핵심적인 부분. application program을 돌리다가 OS의 호출이 필요할 때 실행된다.

집중적으로 알아볼 것은 system call이다.


Systemcall은 application 프로그램이 돌아가다가 hw접근 등 kernel mode의 권한이 필요한 경우, OS를 호출하는 것이다. 위의 그림 역시 user mode에서 프로그램이 돌아가다가, read()라는 system call을 호출했다. (systemcall은 api 형태이다.)
kernel에서 요청을 다 처리하면, 다시 user mode로 돌아갈 것이다.

(application program이 interrupt거는 것을 trap이라고 한다.)




다음은 커널의 종류이다. 크게 Monolithic과 Micro kenel로 나눌수 있다.

Monolithic kernel?

운영체제의 모든 기능을 한 군데에 때려 박은것이다. Unix, Linux등이 포함된다. 하지만 때려박은 모든 기능들이 유기적으로 연관되어 있기 때문에,
기능 update나 삭제 등 유지,보수에서 불리하다. memory도 많이 잡아먹는다.
ex) Linux, Unix,...

Micro kernel?

그래서 나온 것이 micro kernel 이다. micro kernel은 반드시 필요한 기능만 kernel에 넣어놓았다.
ex) Mach(후에 Mac OS로 발전, Mac도 micro kernel 기반이다.)
그림처럼 kernel 안에는 IPC(프로세스간 통신), scheduling등 꼭 필요한 부분만 들어있다. 그리고 file system, driver와 같은 부가적인 기능들은 user mode에서 구현한다. (물론, 일반적인 application program보단 우선순위가 높다.)
그리고 모듈식으로 새로운 기능을 쉽게 추가하는 것이 가능하다.

그렇다고 무조건 micro kernel이 좋다는 것은 아니다. monolithic kernel은 user mode와 kernel mode를 왔다갔다 할 필요가 없으므로 속도 면에서 유리하다.
그래서 그 둘을 적절히 섞어서도 사용한다.


그 예시인 Mac OS X과 Android의 구조를 살펴보자.

Micro kernel기반의 Mach가 발전된 것이다.

Aqua : GUI
Quicktime : 미디어 서비스
Cocoa : user interface

Mac OS를 모바일에서 최적화시킨 iOS 또한 kernel는 같다.
여기에 touch screen과 같은 유저 인터페이스가 추가된 것을 볼 수 있다.


안드로이드는 Linux kernel기반에 모바일용 run time, library들이 들어가 있는걸 볼수있다.


OS의 기능들이다.
second storage등 i/o장치 관리, file management, cpu 스케쥴링, 프로세스간 통신, 동기화 그리고 cpu/memory protection까지 수 많은 일을 하고,
결론적으로 한정된 hardware resource를 효율적으로 관리하는 s/w이다.
위의 기능들도 모두 중요한거라, 추후 정리할 것이다.

profile
기록장

0개의 댓글