Operation System Services
OS: 프로그램 실행을 위한 환경과 프로그램 및 사용자에게 서비스를 제공함.
운영체제 서비스 집합 중 하나는 사용자에게 유용한 기능을 제공함.
- 사용자 인터페이스(UI)
거의 모든 운영체제에 존재함 (* CLI, GUI, 터치스크린, batch 등 존재)
- 프로그램 실행
시스템은 프로그램을 메모리에 로드하고 실행함, 종료시 정상 종료 또는 비정상 종료시 오류표시를 해야함.
- I/O 작업
실행중인 프로그램은 파일이나 I/O 장치를 사용하는 I/O 필요
- 파일 시스템 조작
파일과 디렉토리를 읽고 쓰고 생성, 삭제, 검색, 파일 정보 나열, 권한 관리를 해야함
- 통신
컴퓨터 내(공유메모리) 또는 네트워크(패킷)를 통해 컴퓨터 간 정보 교환 가능
- 오류 감지
가능한 오류에 대해 지속적으로 인식해야 함.
* CPU 및 메모리, IO장치, 사용자 프로그램 등에서 발생 가능
* 각 오류에 대해 올바르고 일관된 컴퓨팅을 보장하기 위한 적절한 조치 해야함
* 디버깅 도구는 사용자와 프로그래머가 시스템을 효율적으로 사용할 수 있는 능력을 크게 향상시킴
다른 하나의 운영체제 함수 집합은 자원 공유를 통해 시스템 자체의 효율적인 운영을 보장한다.
- 자원 할당
여러 사용자 또는 작업이 동시에 실행될 때, 각각에게 자원(CPU사이클, 메모리, IO장치 등)을 할당해야 함.
- 로깅
어떤 사용자가 어떤 종류의 컴퓨터 자원을 얼마나 사용하는지 추적
- 보호 및 보안
보호: 시스템 자원에 대한 모든 액세스가 제어되도록 보장하는 것을 의미함
보안: 사용자 인증을 필요로 하고, 외부 IO장치를 유효하지 않은 액세스 시도로부터 방어함
User Operating System Interface - CLI
CLI 또는 명령 인터프리터는 직접 명령을 입력할 수 있게 함.
- 커널에서 구현되기도 하고, 시스템 프로그램에서 구현하기도 함.
- 여러가지 버전의 셸이 구현됨
- 주로 사용자로부터 명령을 가져와 실행함
- 명령어에는 내장된 명령이 있을 때도 있고, 프로그램 이름만 있을 때도 있음.
* 프로그램 이름만 있을 경우, 새로운 기능을 추가할 때 셸을 수정할 필요 없음
User Operating System Interface - GUI
사용자 친화적인 데스크톱 인터페이스
- 일반적으로 마우스, 키보드, 모니터 사용
- 아이콘은 파일, 프로그램, 작업 등을 나타냄
- 인터페이스의 객체 위에 마우스로 여러가지 방식으로 클릭하면 다양한 작업 발생
- 많은 시스템에서 CLI와 GUI를 모두 포함한다.
System Calls
운영체제에서 제공하는 서비스에 대한 프로그래밍 인터페이스
- 일반적으로 고급언어(C, C++)로 작성됨
- 대부분의 경우 직접 시스템 호출보다는 API를 통해 프로그램에서 액세스됨
- API를 사용하는 이유는, 이식성과 사용 편의성 때문이다.
일반적으로 각 시스템 콜에 대해 연관된 번호가 있다.
- 시스템 콜 인터페이스는 이러한 번호에 따라 인덱싱된 테이블을 유지한다.
시스템 콜 인터페이스는 OS커널에서 의도한 시스템 콜을 호출하고 시스템 콜의 상태와 반환값을 반환한다.
호출자는 API를 따르기만 하고 호출 결과로 OS가 무엇을 할지만 이해하면 된다.
대부분의 OS 인터페이스 세부 정보는 API에 의해 숨겨지고, run-time 지원 라이브러리로 관리된다.
System Call Parameter Pass
종종 원하는 시스템 콜의 식별자 이상의 정보가 필요하다.
- 정보의 정확한 유형과 양은 OS 및 콜에 따라 다르다.
OS에 매개변수를 전달하는 3가지 일반적인 방법
- 레지스터에 매개변수 전달: 경우에 따라 레지스터보다 많은 매개변수가 있을 수 있다.
- 매개변수를 메모리의 블록 또는 테이블에 저장하고 블록의 주소를 레지스터에 매개변수로 전달
- 프로그램에 의해 스택에 매개변수를 넣고 운영체제에 의해 스택에서 꺼내짐
Type of System Calls
Process control
- 프로세스 생성, 종료
- 종료, 중단
- 로드, 실행
- 프로세스 속성 가져오기, 프로세스 속성 설정
- 시간 대기
- 이벤트 대기, 이벤트 신호
- 메모리 할당 및 해제
- 오류 시 메모리 덤프
- 버그 결정을 위한 디버거, 단계적 실행
- 프로세스 간 공유 데이터 접근 관리를 위한 잠금
File Management
- 파일 생성, 삭제
- 파일 열기, 닫기
- 읽기, 쓰기, 위치조정
- 파일 속성 가져오기 및 설정하기
Device Management
- 장치 요청, 해제
- 읽기, 쓰기, 위치조정
- 장치 속성 가져오기 및 설정하기
- 논리적으로 장치를 연결하거나 분리하기
Information maintenance(정보 유지 관리)
- 시간 또는 날짜 가져오기 또는 설정하기
- 시스템 데이터 가져오기 및 설정하기
- 프로세스, 파일 또는 장치 속성 가져오기 및 설정하기
Communications
- 통신 연결 생성, 삭제
- 메시지 전송, 수신(메시지 전달 모델의 경우 호스트 이름, 프로세스 이름으로 송수신)
- 공유 메모리 모델의 메모리 영역 생성 및 액세스 획득
- 상태 정보 전송
- 원격 장치 연결 및 분리
Protection
- 자원에 대한 액세스 제어
- 권한 가져오기 및 설정하기
- 사용자 액세스 허용 및 거부하기
'학교강의필기장 > 운영체제론' 카테고리의 다른 글
운영체제론[6]: 프로세스 간 통신, RPC (0) | 2023.04.24 |
---|---|
운영체제론[5]: 프로세스, 공유메모리와 매시지패싱 (0) | 2023.04.24 |
운영체제론[4]: 시스템 서비스, 운영체제 구조 - 커널, 시스템 부트 및 디버깅 (0) | 2023.04.24 |
운영체제론[2]: 운영체제론 개요 2 (0) | 2023.04.24 |
운영체제론[1]: 운영체제론 개요 1 (0) | 2023.04.24 |