[OS] Chapter 1 운영체제의 개요
summary of OS chapter 1
1. 운영체제 소개
건너 뜀
2. 운영체제의 역사
건너 뜀
3. 운영체제의 구조
3.1 커널과 인터페이스
- 커널 - 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운여에제의 핵심적인 기능을 모아 놓은 것
- 컴퓨터 시스템의 구조
- 하드웨어 → 드라이버 → 커널 → 시스템 호출 → 인터페이스 → 응용 프로그램 / 유틸리티
- 운영체제는 커널과 인터페이스로 분리하여, 같은 커널을 사용하더라도 다른 인터페이스를 가진 형태로 제작할 수 있다.
3.2 시스템 호출과 디바이스 드라이버
3.2.1 시스템 호출
- 시스템 호출 - 커널이 자신을 보호하기 위한 인터페이스이다. ← 자원의 직접 접근을 차단한다. → 자원을 이용하려면 이 시스템 호출을 이용해야 한다.
- 직접 접근 vs 시스템 호출을 통한 접근
- 직접 접근 - 사용자의 입맛에 따라 조절 가능, 커널 보호 어려움
- 시스템 호출을 통한 접근 - 커널이 망가지지 않음, 자원을 보호하는 대신 인터페이스를 제공
- 응용 프로그램 입장에서의 시스템 호출
- 직접 접근 - 보호하기 어렵다
- 시스템 호출 - 커널이 데이터를 가져오거나 저장하는 것을 전적으로 책임지기 때문에 컴퓨터 자원을 관리하기 수월하다
- 시스템 호출은 커널이 제공하는 시스템 관련 서비스를 모아놓은 것이며 함수 형태로 제공된다.
- API와 SDK의 차이
- API - 다양한 프로그래밍 인터페이스를 제공하는 것
- SDK - 프로그램 개발자를 위해 API 및 API 사용 메뉴얼뿐만 아니라 프로그램 개발에 필요한 다양한 개발용 응용프로그램 까지 같이 배포하는 개발 툴
- 사용자가 자발적으로 커널 영역에 진입할 수 있는 유일한 수단이다.
3.2.2 드라이버
- 커널과 하드웨어의 인터페이스는 드라이버가 담당한다
- 커널은 입출력의 기본적인 부분만 제작하고, 하드웨어 특성을 반영한 SW를 하드웨어 개발자에게 받아 커널이 실행될 때 함께 실행되도록 한다.
- 하드웨어 제작자가 만든 SW → 디바이스 드라이버
- 간단한 디바이스 드라이버는 커널에 포함되어 있지만 복잡한 GPU같은 것들은 설치해야 한다
- 하드웨어는 커널과 직접 연결되기도 하고 하드웨어 제작자가 제공하는 드라이버를 통해 연결되기도 한다.
3.3 커널의 구성
- 하는 일
- 프로세스 관리 - 프로세스에 CPU를 배분하고 작업에 필요한 제반 환경을 제공한다.
- 메모리 관리 - 프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상 공간 제공
- 파일 시스템 관리 - 데이터를 저장하고 접근할 수 있는 인터페이스 제공
- 입출력 관리 - 필요한 입력과 출력 서비스를 제공한다.
- 프로세스 간 통신 관리 - 공동 작업을 위한 각 프로세스 간 통신 환경을 지원한다.
- 이러한 기능을 어떻게 구현하는 가에 따라 커널의 구조가 나뉜다.
3.3.1 단일형 구조 컨러
- 초창기의 운영체제 구조로, 커널의 핵심 기능을 구현하는 모듈들이 구분없이 하나로 구성
main
함수에 모든 기능을 구현한 것과 같다.- 장단점
- 장점 - 모듈의 분리가 거의 없어 통신 비용이 준다. → 효율적인 운영이 가능하다.
- 단점 - 버그나 오류 처리 어려움, 작은 결합이 큰 결함으로, 수정이 어려워 이식성이 낮다, 현대에는 운영체제가 복잡해서 이 구조로 구현하기 어렵다.
3.3.2 계층형 구조 커널
- 단일형 구조 커널이 발전된 형태로, 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고 계층 간 통신을 통해 운영체제를 구현하는 방식이다.
- 버그나 오류를 쉽게 잡음, 디버깅 쉬움
- 오늘날의 대부분의 운영체제가 이 구조로 이루어짐
3.3.3 마이크로 구조 커널
- 계층형 구조 커널은 기능 추가로 인해 크기가 커지고 하드웨어의 용량이 늘어났다. → 오류를 잡기 어려워졌다. → 반대로 개발된 커널이 마이크로 구조 커널이다.
- 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공
- 각 모듈은 세분화되어 존재하고 모듈 간의 정보 교환은 프로세스 간 통신을 이용하여 이루어진다.
- 각 모듈은 독립적으로 작동하기 때문에 하나가 실패해도 전체가 멈추지 않는다. 사양이 낮다. 애플 쪽에서 많이 쓴다.
3.4 가성머신
- C언어의 경우 운영체제 마다 코드를 바꿔야 한다. → JAVA는 OS위에 가상머신을 만들고 그 위에서 응용 프로그램이 작동하게 하는 것이다.
- 운영체제와 응용 프로그램 사이에 작동하는 프로그램으로 응용 프로그램이 모두 동일한 환경에서 작동하는 것처럼 보인다.
- 호환성이 높아지지만 응용 프로그램이 가상머신을 통해서만 작동하기 때문에 느려진다.
This post is licensed under CC BY 4.0 by the author.