시스템콜

이후띵·2021년 12월 23일
0

PintOS

목록 보기
3/31

시스템콜은 운영체제가 할 수 있는 서비스를 인터페이스에 제공한다.

사용자 모드 vs 커널 모드

  • 사용자 모드는 메모리나 하드웨어 등에 직접적인 접근을 하지 않는다.
  • 커널 모드는 한다. <- 커널모드의 특권.

문제는 프로그램이 커널모드에서 실행될 때 충돌이 발생하면, 모든 시스템이 충돌하거나 정지 상태가 된다. (유저모드는 안전함)

특정 자원을 사용하기 위해 사용자 모드에서 운영체제에 특정 자원에 대한 접근을 허가 받는다. 그럼 문맥 전환이 발생하여 유저모드 -> 커널모드로 스위치 되고, 자원을 쓸 수 있게 된다. (시스템 콜)

  • 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

profile
이후띵's 개발일지

0개의 댓글