운영체제의 서비스
부팅 서비스
- 운영체제를 메인 메모리에 적재하는 과정
- 부트 로더는 부트스트랩 로더의 줄임말
- 하드디스크와 같은 보조기억장치에 저장된 운영체제를 메인 메모리에 적재
- ROM에 고정시킨 소규모 프로그램
사용자 서비스
- 사용자 인터페이스 제공: CLI, 메뉴 인터페이스, GUI
- 프로그램 실행: 메모리 할당·해제, 스케줄링 등
- 입출력 동작 수행
- 파일 시스템 조작
- 통신(네트워크)
- 오류 탐지
시스템 서비스
- 사용자가 아닌 시스템 자체의 효율적 동작을 보장하는 기능
- 여러 사용자가 사용하는 시스템에서 컴퓨터 자원을 공유하며 시스템 자체의 효율성을 높임
- 자원 할당
- 다수의 사용자나 작업 동시 실행 시 운영체제가 자원을 각각 할당하도록 관리
- 프로세서 사이클·메인 메모리·파일 저장 장치 등은 특수한 할당 코드를 갖지만, 입출력장치 등은 더 일반적인 요청과 해제 코드를 가질 수 있음
- 계정
- 운영체제는 각 사용자가 어떤 컴퓨터 자원을 얼마나 많이 사용하는지 정보 저장 추적
- 이 정보는 사용자 서비스 개선을 위해 시스템을 재구성하는 연구자에게 귀중한 도구가 됨
- 보호와 보안
- 운영체제는 다중 사용자 컴퓨터 시스템에 저장된 정보 소유자의 사용을 제한
- 서로 관련이 없는 여러 작업을 동시에 수행할 때는 한 작업이 다른 작업이나 운영체제를 방해하지 못하게 해야 함
시스템 호출
- 운영 체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스
운영체제의 구조
단일 구조 운영체제
- Monolithic Kernel
- 초기에 생겨난 가장 보편적 형태
- 운영체제의 모든 기능을 커널과 동일한 메모리 공간에 적재 후 시스템 호출만으로 사용
- 작고 간단하면서 시스템 기능이 제한된 구조
- 대부분의 기능을 커널에 그룹화해서 구현
- 직접 통신하여 시스템 자원을 효율적으로 관리
- 커널 크기가 상대적으로 커지면서 버그의 원인이나 기타 오류 구분 어려움
- 새 기능을 추가하는 수정과 유지 보수 매우 어려움
- 동일한 메모리에서 실행하므로 한 부분에서 발생한 문제로 시스템 전체에 심각한 영향을 미칠 수 있음
- 악성 코드로 피해 입기 쉬움
계층 구조 운영체제
- 운영체제가 점점 커지고 복잡해지면서 순수 단일 구조만으로는 다루기가 어려워짐
- 계층 구조에서는 비슷한 기능을 수행하는 요소를 그룹화하여 계층적으로 구성
- 사용자 프로세스의 요청을 수행할 때 여러 계층을 거쳐야하므로, 한 계층에서 다음 계층으로 데이터를 전달할 때마다 추가적인 시스템 호출 발생
- 호출 한 번으로 서비스를 받는 단일 구조보다는 성능 낮음
- 단일 구조 운영체제보다 모듈화가 잘 되어있음
- 시스템 검증과 오류 수정 용이
마이크로 커널 구조 운영체제
- 커널에는 최소 기능만 포함시켜 크기를 대폭 줄이고, 기타 기능은 사용자 공간으로 옮겨 사용자 영역에서 수행하는 서버 구현
- 하드웨어 초기화, 메모리 관리(주소 공간 관리), 프로세스(스레드) 관리, 프로세스 간 통신, 프로세스 간 협력 동기화 기능 등 기본 기능만 실행
- 네트워크·파일 시스템의 상호작용과 장치 관리 등 대부분의 운영체제 구성 요소는 커널 외부, 즉 사용자 영역의 서버로 옮겨 구현