Operating System Services
운영체제 서비스는 사용자에게 유용한 기능들을 제공함
- User interface
- CLI(Command-Line Interface)
- GUI(Graphics User Interface)
- Batch
- 일괄처리, 흐름에 따라 순차적으로 자료를 처리하는 방식
- Program execution
- 메모리에 로드하고, 실행, 종료(정상과 비정상 모두)
- I/O operations
- File-system manipulation
- 파일 및 폴더의 읽기, 쓰기, 생성, 삭제, 검색, 권환 관리
- Communication
- Shared memory
- Message
- passing header message로 이루어진 패킷을 통해 통신
- Error detection
- 오류를 감지하고, 적절한 액션을 취하고, 수정까지 함
- Resource allocation
- 프로세스는 자원이 있어야 실행이 가능함자원을 할당하고 회수하는 역할자원의 종류: CPU, main memory, file storage, I/O device 등
- Accounting
- 누가 어디에 얼마나 컴퓨터 리소스를 사용했는지 기록함system upgrade에 활용
- Protection and security
User Operating System Interface
- CLI
- Kernal에 프로그램이 상주하는 경우하나의 프로그램에 모든 명령어 집합이 있음
- 시스템 프로그램으로 구현된 경우명령 각각이 하나의 프로그램임명령을 추가하는 경우 디렉토리에 프로그램 하나만 추가해주면 됨
- GUI
- 사용자 친화적 데스크탑 인터페이스
- 마우스, 키보드, 모니터가 있음
- 아이콘이 파일, 프로그램 액션 등을 표현
- 대부분의 시스템은 CLI와 GUI 모두 가지고 있음무엇이 main이냐 option이냐 차이임
System Calls
- OS가 제공하는 서비스를 사용하고 싶다 -> System Call 사용
- 일반적으로 고급언어 (C or C++)로 작성됨
- 바로 system call을 사용하기보다 high-level인 API로 프로그램에 접근함

파일의 내용을 다른 파일로 복사하는 System call sequence
Example of Standard API

위와 같은 포맷을 이용하여 함수에 파라미터 전달
System Call Implementation
- System Call은 고유의 번호가 존재함
- System Call Interface는 System Call을 OS kernel에서 실행시키고 상태와 결과값을 반환함
- 호출자는 시스템 콜이 어떻게 구현되었는지 알 필요가 없음
- 단순히 API를 호출하고 시스템 콜의 역할만 알면 됨
API-System Call-OS Relationship

관계 APIs > C, C++ 등의 라이브러리 > Functions> System Calls
System Call Parameter Passing
- Simplest: 레지스터에서 필요한 파라미터를 가져옴
- 메모리의 블록 또는 테이블에 저장된 매개 변수와 레지스터의 매개 변수로 전달된 블록의 주소
- 파라미터를 스택에 저장하고 프로그램에서 pop해서 사용
- 블럭과 스택 방법은 파라미터의 수, 길이에 제한을 두지 않음
Parameter Passing via Table

x는 파라미티가 저장된 주소값이다.
Types of System Calls
분류
- Process control
- File management
- Device management
- Information maintenance
- Communications

위와 같이 구체적으로 구분이 가능하다.