시스템 서비스
- 시스템 유틸리티라고도 불리고 프로그램 개발과 실행을 위해 더 편리한 환경을 제공
- 일부 : 단순한 시스템 콜에 대한 사용자 인터페이스
- 대부분 : 훨씬 더 복잡함
- 시스템 서비스는 다음의 범주로 분류 가능
파일 관리
- 이 프로그램은 파일과 디렉터리 제어와 관련된 조작을 한다.
- 파일 디렉터리 생성, 삭제, 복사, 이름 바꿈, 인쇄, 열거, 조작 등
- 파일 디렉터리 생성, 삭제, 복사, 이름 바꿈, 인쇄, 열거, 조작 등
- 이 프로그램은 파일과 디렉터리 제어와 관련된 조작을 한다.
상태 정보
- 통상 이 프로그램들은 정보를 출력 장치 혹은 파일로 포맷하여 인쇄, 혹은 GUI의 윈도에 표시
- 단순히 는 날짜, 시간, 가용 메모리, 디스크 공간의 양, 사용자 수 등의 상태 정보 제공
- 복잡하게는 상세한 성능, 로깅 및 디버깅 정보를 제공
- 몇몇 시스템은 환경 설정 정보를 저장하고 검색할 수 있는 등록 기능 제공
- 통상 이 프로그램들은 정보를 출력 장치 혹은 파일로 포맷하여 인쇄, 혹은 GUI의 윈도에 표시
파일 변경
- 디스크나 다른 저장 장치에 있는 파일을 변경하기 위해 사용하는 텍스트 에디터
- 디스크나 다른 저장 장치에 있는 파일을 변경하기 위해 사용하는 텍스트 에디터
프로그래밍 언어 지원
- 프로그래밍 언어에 대한 컴파일러, 어셈블러, 디버거 및 해석기가 운영체제와 함께 제공
- 프로그래밍 언어에 대한 컴파일러, 어셈블러, 디버거 및 해석기가 운영체제와 함께 제공
프로그램 적재와 수행
- 프로그램이 어셈블 되거나 컴파일된 후, 실행되기 위해선 반드시 메모리에 적재되어야 함
→ 로더(loader)가 필요 - 시스템은 절대 로더, 재배치 가능 로더, 링키지 에디터, 중첩 로더 등 제공
- 고급 어나 기계어를 위한 디버깅 시스템도 필요
- 프로그램이 어셈블 되거나 컴파일된 후, 실행되기 위해선 반드시 메모리에 적재되어야 함
통신
- 해당 프로그램은 프로세스, 사용자, 컴퓨터 시스템들 사이에 가상 접속을 이루기 위한 기법 제공
- 다른 사용자 화면으로 메시지 전송, 웹페이지 탐색, 전자우편, 원거리 로그인, 파일 전송 등
백그라운드 서비스
- 모든 범용 시스템은 부트 할 때 특정 시스템 프로그램을 시작시킬 수 있는 방법을 가지고 있음
→ 그런 서비스 중, 시스템이 종료할 때까지 항상 실행되는 시스템 프로그램 프로세스- 서비스, 서브 시스템, 디먼이라고도 불림
- 예 : 프로세스 스케줄러, 시스템 오류 감시 서비스 및 출력 서버
- 운영체제는 시스템 프로그램과 함께 문제 해결과 연산 수행을 위한 응용 프로그램도 함께 제공
- 응용 프로그램 : 웹브라우저, 워드 프로세서, 데이터베이스 시스템, 게임 등등..
- 사용자가 보는 운영체제의 관점은 시스템 콜보다는 시스템 프로그램과 응용에 의해 정의됨
- 모든 범용 시스템은 부트 할 때 특정 시스템 프로그램을 시작시킬 수 있는 방법을 가지고 있음
응용 프로그램이 운영체제마다 다른 이유
- 응용 프로그램 수준에서 운영체제와 함께 GUI 인터페이스와 같은 라이브러리 포함
- API 집합을 호출하도록 설계된 응용 프로그램 같은 경우 다른 곳에서 작동하지 않을 수도..
저 레벨 수준의 어려움
- 각 운영체제에 헤더, 명령어 및 변수의 배치를 강제하는 응용 프로그램 이진 형식이 존재
→ 이러한 구성요소로 인해 명시된 구조 형태로만 있어야 운영체제가 파일을 열고 올바르게 실행됨 - CPU는 다양한 명령어 집합을 가지며 해당 명령어가 포함된 응용 프로그램만 올바르게 실행 가능
- 운영체제마다 시스템 콜의 호출 방법, 번호, 의미, 반환 결과를 포함한 여러 측면이 다르다.
그래도 다른 운영체제에서 동일 응용프로그램을 사용 가능한 방법
- 응용 프로그램은 운영체제마다 인터프리터가 제공되는 인터프리터 언어로 작성될 수 있다.
→ 인터프리터가 소스를 해석하고, 상응하는 기계어 명령얼 실행하고, 해당 운영체제의 시스템 콜 호출
- 단점
- 기계어 코드로 구성된 응용 프로그램에 비해 성능이 떨어짐
- 인터프리터는 각 운영체제 기능의 일부만 제공하므로, 관련 응용 프로그램의 기능도 제한
- 단점
- 응용프로그램이 가상 머신을 가진 언어로 작성된 경우 (Java 같은 것)
- 인터프리터와 유사한 단점을 가짐
- 인터프리터와 유사한 단점을 가짐
- 응용 프로그램 개발자는 컴파일러가 기기 및 운영체제의 이진 파일 생성하는 표준 언어 및 API를 사용
- 응용 프로그램은 실행될 각 운영체제로 이식되어야 한다.
- 이식은 많은 시간이 소요될 수 있으며, 응용 프로그램의 새 버전마다 수행되어야 함.
- 예 : UNIX 운영체제 변종 간의 소스 코드 호환성을 유지하기 위한 POSIX API와 표준 집합
ABI(Application binary interface)
- 아키텍처 수준에서 이진 코드의 구성 요소가 아키텍처에서
특정 운영체제와 상호작용 할 수 있는 방법을 정의하는 데 사용 - 하위 수준의 세부 정보를 명시
- 주소 길이, 시스템 콜에 매개변수를 전달하는 방법, 런타임 스택 구성, 데이터 유형의 크기..
- ABI는 특정 아키텍처에 대해 명시됨 → ABI는 아키텍처 수준의 API
- 이진 실행 파일이 특정 ABI에 따라 컴파일되고 링크된 경우,
해당 ABI를 지원하는 다른 시스템에서도 실행될 수 있어야 함- 특정 아키텍처에서 실행되는 특정 운영체제에 대해 ABI가 정의되어 있음
→ ABI는 플랫폼 간 호환성을 거의 제공하지 않음
- 특정 아키텍처에서 실행되는 특정 운영체제에 대해 ABI가 정의되어 있음