본문 바로가기
컴퓨터공학/운영체제

[운영체제] 01. systemcall

by soojaevi 2024. 10. 23.

✔️CPU에는 user modekernel mode가 있음
user mode에서는 일부 명령어만 처리가능, kernel mode에선 모든 명령어가 처리가능하고 하드웨어의 모든 feature를 사용 가능
 
system call이 일어나면 TRAP 명령을 이용하여 user mode에서 kernel mode로 전환하여 operating system이 동작
→ 작업이 끝나면 다시 user mode로

 

example) read system call

count=read(fd, buffer, nbytes)
fd: 파일, buffer: 포인터로 버퍼 가리킴, nbytes: 읽어야 할 바이트 수
 
다음 그림은 read system call을 실행하기 위한 단계

 

  1.  read의 인자들을 스택에 푸시 (push nbytes-> push &buffer-> push fd)
  2. 라이브러리 함수에 대한 실제 호출
  3. 특정 레지스터에 시스템 호출 번호를 넣어둠
  4. TRAP 명령을 실행해서 사용자 모드에서 커널모드로 전환, 커널의 특정 위치에서 실행 시작
  5. 시스템 호출 핸들러를 가리키는 포인터들을 담은 테이블을 시스템 호출 번호로 인덱스 해서 결정
  6. 시스템 호출 핸들러 실행
  7. 실행 완료 후에, 트랩 명령 바로 뒤 명령으로 제어권 넘어감
  8. 라이브러리 함수 사용자 프로그램에게 반환
  9. 스택 정리(스택 포인터 증가)

 

POSIX의 주요 시스템 호출의 일부

POSIX는 약 100개의 함수 호출을 정의

creating and terminating processes
creating, deleting, reading and writing files, managing directories
performing input and output
 
fork(): 자식 프로세스 생성, execvc(): 호출한 프로세스를 다른 프로세스로 교체

'컴퓨터공학 > 운영체제' 카테고리의 다른 글

[운영체제] 04. memory -a  (0) 2024.11.07
[운영체제] 02. scheduling  (0) 2024.10.28
[운영체제] 02. ipc  (0) 2024.10.25
[운영체제] 02. process  (2) 2024.10.23