<컴퓨터 시스템 (플랫폼)>
<운영체제란?>
: 2가지 기본적인 기능을 수행하는 bare machine 상의 특정 소프트웨어 계층
<운영체제 서비스>
컴퓨터 사용자를 위한 서비스
: GUI / program 수행 / 입출력 동작 / file 조작 및 관리 /
통신 - 프로세스간 통신 / 오류탐지 및 처리
자원 공유를 통해 시스템의 효율적인 동작을 위한 기능
: 자원할당
: 보호(내부) 및 보안(외부)
<시스템 호출 - system calls>
운영체제 서비스를 사용하기 위한 프로프램 인터페이스
: 최근에는 직접적인 시스템 호출보다는 고급의 API를 사용하여 system call을 한다. 하지만 직접적으로 system call을 하면 더 빠르다
API - system call - OS 사이의 관계
: user mode로 돌다가 API가 system call을 하면 kernel mode로 바뀐다. 끝나면 다시 user mode로 돌아옴.
== app이 실행되면 user mode, kernel mode를 번갈아 가면서 실행된다.
모든 사용자들은 컴퓨터 시스템이 사용하기 쉽고 / 신뢰성 높고 / 빠른 시스템이길 원한다.
시스템 설계 목표는 설계 및 구현이 쉽고 / 유지 보수성이 좋고 / 오류도 발생하지 않고 / 효율적으로 동작.. 하는 것이 목표이다.
== 추상화가 잘되어야 한다(modular 해야함)
== 필요한 기능은 모두 제공해야한다 (complete)
== 확장이 용이해햐 한다 (extensible)
기본 설계 원리 : policy(what)와 mechanism(how)을 분리해서 생각하기
기존의 운영체제 구성모델
- microkernel system structure
: 가능한 많은 부분을 응용 소프트웨어화 하여 kernel의 크기를 최소화 시킨다.
장)
커널에 기능을 추가하기에 용이하다
이식이 용이하다
오류가 날 확률이 적다
보안성이 높다단)
사용자공간과 커널사니의 통신이 너무 빈번하게 일어나서 성능 overhead