포스트

운영체제 2장 - 시스템 호출

2.3 시스템 호출(system call)


  • 시스템 호출(system call)
    • 운영체제가 제공하는 서비스에 대한 프로그래밍 인터페이스 제공
    • 대부분은 C/C++같은 고급 언어 루팅 형태로 제공
    • 저수준의 작업은 시스템 호출 명령어를 포함하는 어셈블리 프로그램으로 작성하기도 함
  • Application Programming Interface(API)
    • 응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
    • 응용 프로그래머를 대신하여 필요한 실제 system call들을 호출함
      • Window API, POSIX API, Java API 등
    • 사용자는 어떻게 구현됬는지 내부 구조는 몰라도 됨. 가져다 쓰기만 하면됨
    • 운영체제 인터페이스의 상세 내용은 API에 의해 숨겨짐
    • 각 시스템 호출에 번호가 부여됨. OS 커널에서 시스템 호출 처리 루틴의 주소 테이블의 인덱스로 이 번호를 사용함

    2 3

    • 시스템 호출의 OS 내에서의 처리 예시

    2 3_1

    • 표준 C 라이브러리 함수 동작의 예시. printf() 호출 시, write() 시스템 콜을 호출함
    • 시스템 호출 매개변수 전달
      • 레지스터 : 개수 제한이 있지만 가장 많이 이용함
      • 블록 : 메모리 블록에 저장해두고 블록의 주소를 전달. 매개변수가 많으면 이용
      • 스택 : 시스탬 스텍에 push하여 운영체제가 참조함

2.4 시스템 호출의 유형


  1. 프로세스 제어
    • 프로세스 생성, 적재, 실행, 종료, 중지
    • 프로세스 속성 읽기, 설정, 메모리 할당 및 반납
    • 시간 대기, 사건 대기, 사건 알림 등
  2. 파일 관리
    • 파일 생성, 삭제, 열기, 닫기, 읽기, 쓰기, 위치 변경
    • 파일 속성 읽기, 설정 등
  3. 장치 관리
    • 장치 요구(request), 장치 반납(release), 읽기, 쓰기, 위치변경
    • 장치 속성 읽기, 설정, 논리적 부착(attach), 분리(detach)
  4. 정보 유지보수
    • 시간, 날짜, 시스템 데이터, 프로세스/파일/장치 속성
  5. 통신 및 보호
    • 통신 연결 생성, 삭제
    • 메세지 송신, 수신, 상태정보 전달
    • 원격 장치 부착, 분리
  6. 보호
    • 다중 사용자, 다중 프로그램 환경 고려
    • 자원 접근 제어 - 허가권 설정
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.