1. 시스템 콜이란?
시스템 콜이란 운영체제가 커널에 접근하기 위한 인터페이스이며 유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 시스템 콜을 거쳐서 호출하다록 설계되어 있습니다.
프로세스 관리(생성, 삭제 등), 파일 관리, 디바이스 관리, 시간 및 날짜 관련 시스템, 프로세스 간 통신 때 이를 통해 커널 함수를 호출합니다.
ex. 프로세스를 종료하는 kill()이라는 함수-> 이 함수를 발동시키면 시스템 콜을 거쳐서 커널 함수가 호출됨
1) 과정
유저 프로그램이 I/O요청을 위한 트랩(소프트웨어 인터럽트)을 발동했다고 해보면,
- 유저 프로그램이 I/O 요청 트랩을 발동
- 올바른 I/O 요청인지 확인
- 유저모드(modebit=1, 권한 제한)가 시스템콜을 통해 커널모드(modebit=0)로 변환
- 이후 커널 함수를 실행
2) 커널함수
커널 안에 있는 여러개의 함수(native function)
3) 커널
운영체제의 핵시부분이자 시스템 콜을 제공
보안,메모리, 프로세스, 파일시스템, I/O디바이스, I/O 요청관리 등 운영체제의 중추적인 역할
4) 유저모드(modebit=1)
유저가 접근할 수 있는 영역을 제한적으로 두며, 컴퓨터 자원에 함부로 침범하지 못하는 모드
5) 커널모드(modebit=0)
모든 컴퓨터 자원에 접근할 수 있는 모드
6) modebit
시스팀콜이 작동될 때 modebit을 기반으로 유저모드와 커널모드를 구분
modebit은 1(유저모드)또는 0(커널모드)값을 가지는 플래그 변수
2. 시스템콜의 필요성
- 보안과 안정성: 시스템 콜을 사용함으로써, 사용자 프로그램이 시스템의 깊숙한 부분에 직접 접근하는 것을 방지하여 시스템의 보안과 안정성을 유지할 수 있습니다. 사용자 모드에서는 제한된 권한으로만 실행되므로, 잘못된 명령어 실행이 시스템 전체에 치명적인 영향을 끼치는 것을 방지합니다.
- 자원 관리: 운영체제는 다수의 프로세스와 사용자가 시스템 자원을 공유하는 환경에서 자원을 효율적으로 관리합니다. 시스템 콜을 통해 프로세스는 필요한 자원을 요청할 수 있으며, 운영체제는 이를 할당, 관리, 회수하는 역할을 합니다
3. 시스템 콜의 분류
- 프로세스 관리: 프로세스의 생성, 종료, 스케줄링 등을 관리합니다. 예를 들어, fork(), exit(), wait() 등의 시스템 콜이 이에 해당합니다.
- 파일 관리: 파일 생성, 삭제, 읽기, 쓰기 등의 파일 시스템 관련 작업을 수행합니다. open(), read(), write(), close() 등이 포함됩니다.
- 시스템 콜 처리: 커널은 요청된 시스템 콜을 식별하고, 해당 기능을 실행합니다.
- 사용자 모드로 복귀: 작업이 완료되면, 시스템은 사용자 모드로 다시 전환되어 일반적인 프로그램 실행을 계속합니다.
4. 시스템 콜의 장점
- 유연성: 프로그래머는 복잡한 하드웨어 관리를 신경 쓰지 않고, 시스템 콜을 통해 운영체제가 제공하는 기능을 쉽게 사용할 수 있습니다.
- 효율성: 시스템 콜은 운영체제의 핵심 기능에 효율적으로 접근할 수 있게 해주며, 시스템 자원의 효율적인 사용을 가능하게 합니다.
- 호환성: 다양한 하드웨어와 소프트웨어 환경에서도 일관된 인터페이스를 제공하여, 프로그램의 호환성과 이식성을 향상시킵니다.
시스템 콜은 운영체제의 중심적인 기능을 제공하는 인터페이스로서, 사용자 프로그램이 시스템 자원과 서비스를 안전하고 효율적으로 사용할 수 있도록 합니다. 이러한 시스템 콜의 이해는 컴퓨터 시스템의 작동 원리를 이해하는 데 중요한 역할을 합니다.
'운영체제' 카테고리의 다른 글
가상메모리와 스와핑, 페이지폴트 그리고 스레싱 (0) | 2024.02.08 |
---|---|
메모리 계층 (0) | 2024.02.08 |
인터럽트(Interrupt) (1) | 2024.02.08 |
운영체제와 컴퓨터시스템의 구조 (1) | 2024.02.07 |