-
시스템 콜(System Call)이란?Computer Science/Operating System 2022. 2. 13. 20:54
시스템 콜(System Call)이란?
'시스템 콜(System Call)'은 유저 모드에서 커널 영역의 기능을 사용하게 하는 인터페이스다. 즉, 프로세스가 하드웨어에 접근해 필요한 기능을 사용할 수 있게 하는 기능이다. 조금 풀어서 얘기하자면 응용 프로그램에서 운영체제에게 어떤 기능을 수행해달라고 신호를 보내는 것을 보고 '시스템 콜'이라고 한다.
시스템 콜을 왜 사용하는가?
운영체제는 유저 모드(User Mode)와 커널 모드(Kernel Mode)가 나누어져 있다. (이를 Dual Mode라고 한다.) 사실 유저 모드는 이름만 어느 정도 유추가 된다. 두 개로 나누어져 있는 운영체제에서 유저가 사용하는 부분이다. 유저 모드는 응용 프로그램을 실행할 때 사용된다. 우리가 컴퓨터를 사용할 때에는 보통 이 부분을 사용한다고 보면 된다. 그럼 커널 영역은 무엇일까? 커널이란 사실상 시스템의 모든 부분을 통제하는 일을 수행한다.
이렇게 핵심적인 역할을 하고, 또 많은 부분을 담당하는 커널에 사용자가 쉽게 접근하면 어떻게 되겠는가? 운영체제의 핵심적인 부분을 사용자가 마음대로 삭제, 수정할 수 있다면? 정확히 무슨 일이 벌어질지는 몰라도 그게 긍정적일 것 같지는 않다. 그렇기 때문에 당연하게도 유저 모드에서는 커널 모드에 접근하지 못한다. 하지만 잘 생각해보자. 우리는 유저 모드에 있으면서도 유저 모드에서 다루는 영역 이외의 일을 수행하곤 한다. 예를 들어 파일을 읽어오거나 수정하거나 삭제하거나... 이는 어떻게 된 것일까?
이때 사용하는 것이 바로 시스템 콜(System Call)이다. 시스템 콜은 유저 모드에서 커널 모드에 기능을 수행해달라고 신호를 보내는 것이고, 이를 통해 유저 모드에서 접근하지 못하는 커널 모드의 기능을 수행할 수 있도록 한다. 왜? 시스템적인 보안을 위해서!
시스템 콜 과정
시스템 콜 유형
프로세스 제어
- 프로세스 생성(create), 적재(load), 실행(execute), 종료(end), 중지(aboart)
- 프로세스 속성 가져오기 및 설정하기 (get process attribute & set process attribute)
- 시간 대기(wait time) 이벤트, 사건 대기(wait event) 이벤트, 사건 알림(signal event) 이벤트,
- 메모리 할당 및 해제 (malloc, free)
파일 관리
- 파일 생성(create), 삭제(delete), 열기(open), 닫기(close)
- 파일 읽기(read), 쓰기(write), 위치 번경(reposition)
- 파일 속성 값 확인 및 지정 (get file attribute & set file attribute)
장치 관리
- 장치 요청(request), 방출(release)
- 읽기(read), 쓰기(write), 재배치(reposition)
- 장치 속성 가져오기 및 설정하기
- 하드웨어 제어 및 상태 정보 얻기 (ioctl)
- 논리적인 장치 연결(attach) 및 분리(detach)
정보 유지
- 시스템 날짜 가져오기 및 설정하기 (time)
- 시스템 데이터 가져오기 및 설정하기 (data)
- 프로세스, 파일 및 장치 속성 가져오기 및 설정하기 (getpid(), alarm(), sleep())
통신
- 통신 연결 생성하기 및 삭제하기
- 메시지 보내기 및 받기
- 전송 상태 정보
- 원격장치 연결하기 및 분리하기
보호
- 파일 권한 얻기 및 설정하기(chmod(), umask(), chown())
함께 보기
듀얼 모드: https://codestation.tistory.com/40
듀얼 모드(Dual Mode)란?
듀얼 모드(Dual Mode)란? 듀얼 모드(Dual Mode, 이중 동작 모드)란 공유된 시스템 자원을 유저 모드(User Mode)와 커널 모드(Kernel Mode), 두 가지로 나눠 사용하는 것을 말한다. 쉽게 말해 운영체제가 수행할
codestation.tistory.com
'Computer Science > Operating System' 카테고리의 다른 글
컴퓨터 부팅 과정 (0) 2022.03.21 듀얼 모드(Dual Mode)란? (0) 2022.02.13