※ 전남대학교 박태준 교수님의 운영체제 강의를 듣고, 정리한 내용입니다.
운영체제의 구조
운영체제를 2가지로 구분한다면
→ 커널, 인터페이스로 구분이 가능합니다.
운영체제를 3가지로 구분한다면
→ 커널, 인터페이스, Device Driver 로 구분이 가능합니다.
( 어떻게 구분할지는 관점의 차이 )
커널 ( kernel )
- 운영체제의 핵심 기능을 모아놓은 것
- 응용 소프트웨어들은 커널에 요청 → 하드웨어 자원들을 이용
- User-mode, Kernel-mode 분리
인터페이스 ( Interface )
- 커널에 명령을 전달하고 실행 결과를 알려주는 역할
디바이스 드라이버 ( Device Driver )
- 커널과 하드웨어 그 중간 어딘가에 위치
- API 가 User-level 에서의 인터페이스라고 하면, 디바이스 드라이버들은 하드웨어에 대한 인터페이스
- 하드웨어와 직접 연결되고 입력 신호에 대한 약속을 정하는 것
커널과 시스템 콜
- 커널이 하는 일이 사실상 운영체제가 하는 일과 거의 근접하기 때문에, 되게 중요합니다. 그래서 외부로부터 직접적인 노출은 피하는 것이 좋습니다.
- 그래서 커널을 보호하기 위해 직접적으로 접근하는 방식이 아닌, 시스템 호출을 통한 접근 방식을 채택하였습니다.
- System call ( Syscall ) : 커널이 자신의 기능을 함수 형태로 제공해주는 것
커널 설계 모양
- 단일형 커널
- 초창기 구조
- 커널의 모든 기능이 한 덩어리로 묶여있는 형태
- 속도가 빠르지만, 이 커널이 죽으면 모든 기능이 다 죽어버림
- 계층형 커널
- 마이크로 커널
- 기능들을 모듈별로 쪼개서 관리 → 쪼갠걸 User-Level 에 이식
- 프로세스간 통신으로 시스템 운영
- 이식성이 뛰어나고 모듈화가 잘 되어 있어서 한 부분이 고장나도 나머지 부분이 커버해주면 되지만, 속도가 느림
가상머신
- 운영체제마다 제공하는 API 및 시스템 콜의 모양이 다르기 때문에, 운영체제가 다르면 프로그램 별 호환이 되지 않습니다.
- 이 불편함을 해결하고자, 가상머신은 운영체제와 응용 프로그램 사이에서 작동하며 운영체제간 이식성을 높여주는 역할을 해줍니다.
- 응용 프로그램이 API 모두 동일한 환경에서 작동하는 것처럼 보이게끔 해줍니다.
- 일종의 API 호환 레이어
에뮬레이션, 시뮬레이션
- 에뮬레이션 : 시스템을 똑같이 구현 / 재현한 것
- 시뮬레이션 : 결괏값만 같고, 시스템을 추상화한 것
- 공통점 : 둘 다 실제 하드웨어를 사용할 필요 없이 작업을 처리할 수 있는 환경을 제공해줍니다.