[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
'정글 2기 > OS 운영체제' 카테고리의 다른 글
[three_easy_pieces] 주소 공간의 개념 요약 (0) | 2021.10.15 |
---|---|
[Pintos] Project 1, 2_Argument parsing, User Program_system call_code analysis (0) | 2021.10.14 |
[three_easy_pieces] 파일 시스템(File system)_vsfs(Very Simple File System) (0) | 2021.10.13 |
[OS운영체제] 권영진 교수님 OS 강의_2 (카이스트 전산학부) (0) | 2021.10.11 |
[Pintos] Project 2_Calling convention_Caller, Callee and registers (0) | 2021.10.09 |
댓글