본문 바로가기
정글 2기/OS 운영체제

[Pintos] Project 2_User Program_system call

by Dean30 2021. 10. 14.
728x90

[Pintos] Project 2_User Program_system call

 

System call details

 

OS에 의해 제공되는 Programming interface이다

user mode program이 kernel feature를 사용하게 해준다.

system calls은 kernel mode에서 run하고 user mode로 돌아온다

system call의 핵심은 system call을 부르기 위해 hardware(external) interrupt 가 발생하기 때문에 execution mode의 priority가 special mode로 격상한다는 점이다.

 

 

이전 x86 architecture에서는  system call이 software exception으로 처리되었다. 하지만 x86-64에서는 system call을 처리하기 위해 syscall 이라는 system call handler를 제공함으로써 훨씬 빠르게 처리할 수 있게 되었다.

 

Interrupt

  • internal interrupt(software interrupt or exception) : page fault, division by zero
  • external interrupt(hardware interrupt or exception) : timer-interrupt, I/O device

 

user program은  syscall을 통해 system call을 한다. 이 때 다음 두 가지를 제외하고는 system call number와 arguments이 register에 원래 방식대로 있어야 한다.

  • %rax는 system call number를 나타낸다.
  • 4 번째 arguments 는 %rcx이 아니라 %r10 이다.

 

그러므로 system call handler인 syscall_handler()가 control을 가지면, system call number는 rax에 있고, arguments는 %rdi, %rsi, %rdx, %r10, %r8 그리고 %r9의 순서로 전달된다.

 

system call 의 return 값은 eax register 에 저장된다.

 

system calls

 

Process related interrupt

 

halt

exit

exec

wait

fork(?)

 

File related interrupt

create

remove

open

filesize

read

write

seek

tell

close

 

 

728x90

댓글