시스템 콜

김민영·2023년 1월 27일
0

CS 스터디

목록 보기
17/32

운영체제 동작 과정 : Dual Mode

  • 사용자 모드 : 일반적인 응용 프로그램 구동 환경
  • 커널 모드 : 커널이 구동되는 환경. OS 시스템에 영향 주는 명령어 실행 가능.
  • 처음 운영체제 구동 시 초기화 작업, 부팅 과정에서 필요한 과정 수행하기 위해 커널 모드로 시작 후, 사용자 모드로 전환

    인터럽트 : HW가 요청
    트랩 : SW가 요청 또는 오류로 인해 발생

시스템 콜

  • 프로세스가 시스템의 자원이나 서비스를 필요로 하는 경우 운영체제에게 요청.
  • 인터럽트의 일종

기능

  1. 사용자 모드에 있는 응용 프로그램이 커널의 기능을 사용할 수 있도록 함
    • 운영체제 서비스에 접근할 수 있도록 함
  2. 시스템 호출 시 사용자 모드에서 커널 모드로 바뀜
  3. 커널에서 시스템 호출 작업이 끝나면 사용자 모드로 돌아감

유형

  • 프로세스 제어 : 프로세스 생성, 중지
  • 파일 조작 : 파일 생성, 삭제, 속성 관리 등
  • 장치 관리 : 장치 연결, 방출, 속성 관리 등
  • 정보 유지 : 시간, 날짜 설정, 프로세스와 연결된 파일, 장치 관리 등
  • 통신 : 통신 열결 생성, 제거, 메시지 송수신 등
  • 보안 : 파일, 사용자 권한 등

과정

  • 응용프로그램에서 시스템 콜 호출 - 0x80 인터럽트 발생
  • IDT (Interrupt Descripter Table. 인터럽트 종류 파악 위해 사용)에서 0x80은 system_call() 임. 커널은 시스템 콜에 관한 동작 수행

매개변수 전달

  • 매개변수를 레지스터에 담기
    • 매개변수가 레지스터보다 많은 경우 있으므로 부적합
  • 매개변수를 연속적(블록) 또는 불연속적(테이블)으로 메모리에 담은 뒤, 주소를 레지스터에 담음
    • 크기에 제한 없으므로 많이 사용
  • 스택에 매개변수 담음
    • 스택의 데이터를 레지스터에 옮기고 원소를 담아야하기 때문에 1번과 같음.

사용 방식

  • 시스템 콜 API를 통해 호출 함.
    • ex. Windows API, java API, 라이브러리 함수 (printf = write, malloc = brk 등)

참조
https://latter2005.tistory.com/43
https://velog.io/@klm03025/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%BD%9C

profile
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=

0개의 댓글