DevKim

[OS] 운영체제의 구조 - kernel & interface & system call &driver 본문

운영체제

[OS] 운영체제의 구조 - kernel & interface & system call &driver

on_doing 2020. 12. 29. 20:20
728x90

[1] 용어 정리

1. kernel 커널

"자동차의 엔진"에 해당한다고 생각하면 된다.

:프로세스 관리, 메모리 관리..등 OS의 핵심적인 기능을 모아놓은 것이다.

 

2. interface 인터페이스

"핸들,브레이크.. 여러 정보 알려주는 자동차 계기판"

: kernel에 사용자 명령을 전달하고, 실행 결과를 알려주는 역할.

(ex) 유닉스의 사용자 인터페이스 : 셸 shell (명령어 기반)

 

3. system call 시스템 호출

: system call은 커널이 자기 자신을 보호하기 위해 만든 interface이다.

시스템 호출을 통해서만, 커널에 접근할 수 있다. 사용자가 직접 자원에 접근하는 것을 차단한다.

 

*응용 프로그램 입장에서의 system call*

:응용 프로그램이 어떠한 위치에 정보를 저장하고 싶은데, 다른 응용프로그램도 그 위치에 정보를 저장하고 싶어서 직접 접근하면, 둘 중에 하나는 데이터가 손실될 것 이다.

->system call을 이용하여 접근하면 write() / read() 명령으로 알아서 저장해주고 알아서 원하는 데이터를 가져오게된다.

 

(+) 

- API : 응용프로그램이 자신과 연관된 프로그램 만들 수 있도록 제공하는 인터페이스라고 생각하면된다.

- SDK :개발자를 위한 선물이라고 보면된다. 안드로이드 스튜디오 처럼 개발자를 위해 어떤 프로그램을 만들 수 있는 필요한 모든 툴을 묶은 것이다.

 

4. driver 드라이버

:하드웨어와 커널 사이의 인터페이스라고 생각하면된다.

: 세상에 정~~말 다양한 하드웨어들이 존재하는데, 예를 들어 마우스만 해도 삼성 마우스, 엘지 마우스..등등 엄청 다양한 종류의 마우스가 존재한다. 이 다양한 모든 마우스에 맞는 인터페이스를 커널이 제작하는 것은 불가능하다.

특정 드라이버를 설치함으로써 가능해진다.

* 하드웨어 특성을 반영한 sw는 hw 제작자가 만든다(디바이스 드라이버)

 

[2] kernel 커널의 구성

1. 커널이 하는 일

-프로세스 관리

-메모리 관리

-파일 시스템 관리

-입출력 관리

-프로세스간 통신 관리

 

2.커널의 구조

1)단일형

: 모듈 구분 없이 하나의 하나로 구성되어있는 구조이다.

-> main()함수 안에 모든 기능 다 때려 넣는거랑 비슷함

*장점*

-모듈간의 통신 비용이 물론 없으니, 이런 측면에선 효율적이라고 볼 수 있다.

*단점*

-버그처리가 어렵고, 작은 결함이 전체에 영향을 미칠 수 있다.

 

2)계층형

: 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 나타낸 구조이다.

-> 각 모듈은 독립적이어서 서로 영향을 주지 않음

*장점*

버그,오류 처리 당연히 쉽고 디버깅도 쉬움

 

3)마이크로형

: ios가 이 구조를 사용한다고한다. 가장 기본적인 기능만 제공하고, 운영체제의 대부분이 '사용자 영역'에 구현되어있다.

*장점*

이식하기 쉽고, 가벼워서 cpu 용량이 작은 system에도 적용이 가능하다.

 

4)가상머신 virtual machine

: 가상머신 설치하면 응용프로그램이 모두 동일한 환경에서 작동한다.

->java가 호환성 문제를 해결했다.

구조를 그림으로 나타내면 무슨 블록 모양으로 되어있다.

 

*개발을 하다보면 맥북 쓰는 친구들이 윈도우 운영체제를 깔아서 사용하는데,

이때처럼 윈도우,유닉스 운영체제 환경을 모두 사용하고 싶을때, 윈도우 OS에 유닉스 가상머신 설치하면됨.

느려지긴하지만...

 

 

 

728x90
Comments