시스템콜은 운영체제가 할 수 있는 서비스를 인터페이스에 제공한다.
문제는 프로그램이 커널모드에서 실행될 때 충돌이 발생하면, 모든 시스템이 충돌하거나 정지 상태가 된다. (유저모드는 안전함)
특정 자원을 사용하기 위해 사용자 모드에서 운영체제에 특정 자원에 대한 접근을 허가 받는다. 그럼 문맥 전환이 발생하여 유저모드 -> 커널모드로 스위치 되고, 자원을 쓸 수 있게 된다. (시스템 콜)
- System call is the programmatic way in which a computer program requests a service from the kernel of the operating system.
- These calls are generally available as routines written in C and C++.
상황 : 파일 -> 파일 내용들을 복사하고싶다.
Source File -------------------------> Destination File
입력파일 정보
Systemcall 1. Acquire Input Filename (입력 파일 이름을 얻어낸다.)
Systemcall 2. Write prompt to screen (사용자에게 입력하라고 화면에 띄운다.)
Systemcall 3. Accept Input (입력을 받아온다.)
출력파일 정보
Systemcall 4. Acquire Output Filename
Systemcall 5. Write prompt to screen
Systemcall 6. Accept Input
Systemcall 7. Open Input File (입력파일을 실행한다.)
(Systemcall alpha -> 파일이 없으면 ABORT (에러 실행))
Systemcall 8. Create output File
(Systemcall beta -> 파일이 있으면 ABORT (에러 실행))
while(Read):
Systemcall 9. Read from Input File
Systemcall 10. Write to Output File
Systemcall 11. Close Output File
Systemcall 12. Write completion message to screen
Systemcall 13. Terminate normally