728x90
반응형
시스템 콜 (System Calls)
- 일반적으로 고급 언어(C와 C++)로 작성된 루틴 형태로 제공
- 대부분의 사용자는 시스템 호출을 직접적으로 사용하기 보다는, 응용 프로그램 인터페이스(API: Application Program Interface)를 통한 프로그램에 의해서 접근
- 응용 프로그래머가 가장 많이 사용하는 3가지 API
- Win32 API (Windows)
- POSIX API (POIX기반 거의 모든 버전의 UNIX, Linux, Mac OS X)
- JAVA API (JVM에서 수행될 수 있는 프로그램)
- 직접 시스템 호출을 부르기보다 API를 사용한 프로그래밍을 선호하는 이유
- 프로그램 ‘호환성’을 높일 수 있음 (어디서든 컴파일, 실행)
- 실제 프로그램 상에서 작업하기 더 쉬움
예시
시스템 호출 구현 (System Call Implementation)
- 통상적으로 각 시스템 호출에는 번호가 할당 (System Call Table에 존재)
- 호출자는 시스템 호출이 어떻게 구현되고, 실행 중 무슨 작업을 하는지 알 필요 없음
- 단지 API를 준수하고, 시스템 호출의 결과로 OS가 무엇을 해줄것인지 이해하면 됨
- 래핑함수(Wrapping function): 대신 System Call을 불러주는 함수
API, System Call, OS의 관계, 호출 과정
시스템 호출 매개변수 전달 (System Call Parameter Passing)
OS에 매개변수를 전달하기 위한 3가지 방법
1.매개변수를 레지스터(Register)에 직접 전달 → 가장 간단한 방법
2. 매개변수는 메모리내의 블록(Block) or 테이블(Table)에 저장하고, 블록 주소를 레지스터 내에 매개변수로 전달
3.프로그램에 의해 매개변수를 스택(Stack)에 넣고, OS가 꺼냄
OS는 ‘블록’이나 ‘스택’방법을 선호
→ 전달되는 매개변수 개수, 길이를 제한하지 않기 때문
시스템 호출의 종류 (Types of System Calls)
- 프로세스 제어 (Process Control)
- 파일 조작 (File manipulation)
- 장치 관리 (Device Managament)
- 정보 유지 (Information Maintenance)
- 통신 (Communication)
시스템 호출 구현 단계
- 사용자는 System Call을 직접 호출X, API의 랩핑함수(Wrapping function)을 통해 호출.
- 매개변수를 레지스터에 직접 전달할 수도 있지만, 여러개라면 블록(Block)/테이블(Table)/스택(Stack)의 형태로 전달
728x90
반응형
'Computer Science > Operating System' 카테고리의 다른 글
[OS] 운영체제 설계 및 구현 (OS Design) (1) | 2024.04.26 |
---|---|
[OS] 시스템 서비스 (System Service), 링커(Linker)와 로더(Loader) (0) | 2024.04.26 |
[OS] 운영체제에서의 UI(User Interface) 종류 (0) | 2024.04.25 |
[OS] 운영체제에서 제공하는 서비스, 프로그램 관점/하드웨어 관점 (0) | 2024.04.25 |
[OS] 오픈소스 운영체제란? (Free and Open-Source OS) (0) | 2024.04.24 |