공부 학습

운영체제 2주차 - 3

Multitab 2021. 3. 9. 15:38

1. Layered Approach

  • Moule화가 되어 있으면서도 서비스를 사용시에 상위 Layer는 사용 불가능하고 하위 Layer만이 사용 가능하다.
  • Micro Kernel: 기존 Kernel의 덩치를 작게 만든 것
  • 예) MAC OS X Kernel (Darwin)
  • 특징: User에게 전달할때 Massage Passing 방식을 사용한다.
  • 장점: MicroKernel을 쉽게 확장할수 있다., 새로운 구조에 쉽게 포팅이 가능하다, 신뢰도와 보안성이 높다.
  • 단점: User space와 Kernel space가 통신할때 Message Overhead가 생길 확률이 높다.

 

Microkernel Structure

2. Module 

  • OS를 모듈화 함으로서 외부에서 수정을 할수 있는 Loadable Kernel을 사용할수 있다.
  • 객체 지향적 접근법을 사용하며 , 주요 구성 요소들이 분리되어 수정가능하고, interface가 다른 요소들과 소통하며, 필요할때 불러들일수 있는 특징을 가진다. 
  • 리눅스 이외에도 다양한 OS들이 이런 Loaderable Kernel을 사용하고 있다.

3. Hybrid System & Various OS Structure

  • 리눅스나 Solaris 같은 경우 Monolithic 하지만 dynamic loading을 위한 Modular가 구현되어 있다 한마디로 적절히 섞여서(Hydrid) 사용되고 있다.
  • MAC OS의 경우 약간의 Layerd가 되어 있고 Mach와 BSD Unix를 사용한다. 그리고 Loaderble Module을 가져서 Kernel Extension이 가능하다. [I/O kit == device driver / Kernel Extension == loadable module]
  • Darwin은 Operate System Opensource이며  그안에 Kernel을 XNU라고 부른다. 그리고 OS X자체는 OS라기 보다는 Platform이라고 부르기도 한다. 
  • 그래도  Darwin 안에 XNU를 이루는 함수의 개수만 18000여개로 상당히 복잡하고 거대한 커널 프로그램이라고 생각할수 있다.
  • Andriod의 경우 Google에서 개발한 Linux을 기반으로 JAVA의 기능이 깔인 OpenSorce OS이다.
  • Mobile OS 특성상 전기절약을 위한 기능이 추가되어 모바일 특화 되어있다. 
  • Andriod의 경우 JAVA와 Andriod API를 이용하여 Application을 개발하게 되는데 JellyBean이전에는 Dalvik 가상머신을 사용했다. Darvik VM의 경우 JAVA Bytecode코드를 실행하면서 컴파일을 하게되는데 이 경우 컴파일을 하는데 시간이 오래 걸리고 JellyBean 이후로는 JAVA Bytecode를 미리 컴파일 하고 컴파일된 Native Code를 실행해주는 ART VM를 사용해 빠른 실행성을 확보했다.

Andriod Architecture

4. System Boot

  • 처음 시스템에 전원이 들오게 되면 고정된 메모릴를 참조하여 시스템을 시작한다. 이를 Bootstrap Loader, BIOS라고 하며 Secondary Memory에 저장되어 있는 커널 코드를 불러와 커널을 시작한다.
  • 가끔 Kernel을 시작할때 Boot block 내에 디스크로부터 bootstrap Loader를 로드하는 두과정을 거치기도 한다. 왜냐하면 최근에는 1대의 컴퓨터에 멀티 부팅을 지원하기 위해 Boot Block이라는 과정을 거치기도 한다.
  • 일반적으로 사용하는 Bootstrap Loader은 OpenSource Software인 "GRUB"이라는 오픈소스를 사용한다.
  • 이후 Kernel이 실행되면 본격적으로 System이 시작하게 된다.
  • OS를 Debugging 할때는 Crash될경우 Application의 Failure은 "core Dump"를 뜨고 OS에서 Failure가 뜨면 "Crash Dump"를 기록한다. 이외에도 OS는 다양한 Log 를 기록하고 있다.
  • Kernighan's Law: 프로그램을 새로 짜는것보다 프로그램을 디버깅하는데 2배의 시간이 든다. => 코드를 짤때 이해하기 쉽게 보기 좋게 짜라 그러니까 나중에 피똥싸기 싫으면...  

5. Performence Tuning

  • Bottleneck을 제거 함으로서 Perfomence를 향상 시킬수 있다.
  • 그리고 이를 위해 다양한 툴을 지원하고 있다.
  • Kernel mode와 User mode 사이에 오고가는 정보에대해 Debugging하기 위해서는 다양한 툴 (특히 BCC: BPF Compiler Collection)가 없으면 디버깅이 사실상 불가능하다. 위 SW는 바이트가 전송되는 정보를 기록하는 SW이다.

'공부 학습' 카테고리의 다른 글

운영체제 3주차 - 1  (0) 2021.03.15
시스템 논문 리뷰 1  (0) 2021.03.15
컴퓨터 네트워크 1주차 - 1  (0) 2021.03.08
운영체제 2주차 - 2  (0) 2021.03.08
운영체제 2주차 - 1  (0) 2021.03.08