ABOUT ME

Today
Yesterday
Total
  • [운영체제] 시스템 콜 (System Call)
    운영체제 2023. 11. 6. 16:05

     

     

    응용 프로그램이
    컴퓨터 자원을 사용하는 방법

     

     

     

     

    운영체제보안 및 안정성을 위해 사용자 프로그램이나 프로세스가 직접 하드웨어와 상호작용하지 못하도록 유저모드와 커널모드를 구분하여 제공한다. 사용자 프로그램은 유저모드에서 실행되며, 운영체제의 핵심인 커널은 커널모드에서 실행되어 중요한 시스템 자원에 접근할 수 있다.

     

     

    유저 모드(User Mode)

    운영체제의 커널의 보호기능 아래에서 동작한다. 일반 응용 프로그램은 유저모드에서 실행되지만 자원에 접근하는 데 제한이 있다. 유저 모드는 시스템의 안정성을 보장하기 위해 사용자 레벨의 프로세스에 보안과 보호를 제공한다.

     

    커널 모드(Kernel Mode)

    운영체제의 핵심 부분이니 커널이 실행되는 모드이다. 커널모드에서는 운영체제의 모든 기능과 자원에 접근할 수 있으며, 하드웨어에 직접적으로 명령을 내릴 수 있다. 시스템 자원을 제어하고, 시스템 콜(System Call)과 같은 명령을 수행할 수 있도록 권한을 부여받은 상태이다.

     

    • 커널(Kernel) : 운영체제의 핵심 기능을 담당하는 소프트웨어로 하드웨어와 응용 프로그램 간 상호작용을 관리하며, 하드웨어 자원에 대한 접근 권한을 제어한다. 이외에도 프로세스 스케줄링, 메모리 관리, 입출력 장치와의 통신, 시스템 콜 수행, 보안 및 에러 처리 등의 기능을 수행한다. 

     

     

     

     

     

     

    우리가 일반적으로 사용하는 프로그램은 '응용 프로그램' 이다. 유저레벨의 프로그램은 커널의 기능을 사용할 권한이 없기 때문에 자원에 접근하기 위해 커널 모드로 전환하여 작업을 수행해야한다. 아래 그림은 사용자 프로세스가 커널의 기능을 호출하는 과정을 보여준다. 

     

     

    시스템 콜 (System Call)

    사용자 프로그램이 커널에 접근하는 인터페이스로, 운영체제의 기능을 사용할 수 있게해준다. 시스템 콜을 호출하면, 커널이 요청된 작업을 처리하고, 결과를 반환한다. 이를 통해 프로그램은 하드웨어 자원을 직접 제어하지 않고, 운영체제의 기능을 활용한다.

    • 통상적으로 시스템 콜은 여러 종류의 기능으로 나누어진다.
    • 각 시스템 콜에는 번호가 할당되고 시스템 콜 인터페이스는 시스템 콜 번호와 시스템 콜 핸들러 함수 주소로 구성되는 시스템 콜 테이블을 유지한다.
    • 운영체제는 자신의 커널 영역에서 해당 인덱스가 가리키는 주소에 저장되어 있는 루틴을 수행한다.
    • 작업이 완료되면 CPU에게 인터럽트를 발생시켜 수행이 완료 되었음을 알린다.

     

     

    시스템 콜 종류

    1. 프로세스 제어(System Control)
      • fork : 새로운 프로세스 생성
      • exec : 새로운 프로그램을 로드하여 현재 프로세스의 메모리를 대체
      • exit : 프로세스를 종료
      • wait : 프로세스를 종료
    2. 파일 조작(File Manipulation)
      • open : 파일을 오픈하거나 생성
      • read, write : 파일에서 읽거나 파일에 쓰기
      • close : 파일을 닫음
      • seek : 파일 내에서 위치 이동
    3. 디바이스 조작(Device Manipulation)
      • ioctl : 특정한 장치에서 명령을 보냄
      • read, write : 장치로부터 읽거나 장치에 쓰기
    4. 정보 유지(Information Maintenance)
      • getpid : 현재 프로세스의 ID를 가져옴
      • time : 현재 시간을 가져옴
      • kill : 특정 프로세스를 종료시킴
    5. 통신(Communication)
      • socket : 소켓을 생성
      • connect : 서버에 연결
      • send, recv : 데이터를 송수신
      • bind, listen, accept : 서버 소켓 연결 설정
    6. 보호 기능(Protection)
      • chmod, chown : 파일의 권한과 소유자 변경
      • umask : 파일 생성 시의 기본 권한 설정

     

     

     


    https://velog.io/@nnnyeong/OS-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%BD%9C-System-Call

     

Designed by Tistory.