728x90
728x90
시스템 콜에 들어가기 앞서 자주 언급되는 단어들에 대해 간단하게 정리했다.
운영체제(OS, Operating System)
컴퓨터 하드웨어와 컴퓨터 사용자 간의 인터페이스로서 동작하는 시스템 소프트웨어다.
컴퓨터를 동작시키는 데 도움을 주고, 컴퓨터 하드웨어 바로 윗 단에 설치된다.
- 종류 : Windows 10, UNIX, LINUX 등
커널(Kernel)
프로그램은 메모리에 적재되어야 소프트웨어로서 실행이 된다. 운영체제 역시 마찬가지로 메모리에 적재 되어야 실행된다. 운영체제는 규모가 커 항상 필요한 부분만을 메모리에 올린다 나머지는 필요할 때에 메모리에 올린다. 메모리에 상주하는 운영체제의 이 부분을 커널이라고 한다.
CPU 모드
커널 모드(Kernel Mode)
운영체제가 CPU를 사용하는 모드를 말한다. System Mode, Control Mode 라고도 불리며, 커널모드에서 운영체제는 하드웨어를 제어하는 명령어를 실행할 수 있다.
사용자 모드(User Mode)
사용자 애플리케이션 코드가 실행되는 모드를 말한다. 사용자 애플리케이션은 하드웨어(디스크, I/O)등에 접근할 수 없다. 따라서, 관련 작업이 필요한 경우 System Call 을 사용해야 한다.
시스템 콜(System Call)
운영체제가 제공하는 서비스를 사용하기 위한 프로그래밍 인터페이스이다.
사용자 애플리케이션은 User Mode에서 실행된다. 운영체제가 제공하는 서비스를 사용하기 위해, Kernel Mode에 접근하기 위해서는 System Call을 통해야만 한다.
💡 사용자와 운영체제는 시스템 자원을 공유한다. 사용자에게 제한을 두지 않으면 사용자가 메모리 내의 주요 운영체제 자원을 망가뜨릴 위험이 생기게 된다. 따라서, 사용자의 시스템 자원 접근을 제한하는 보호 장치가 필요하다. System Call은 이 보호 장치 역할을 한다.
시스템 콜의 종류
- 프로세스 제어 (Process Control)
더보기
- 끝내기(exit), 중지 (abort)
- 적재(load), 실행(execute)
- 프로세스 생성(create process) - fork
- 프로세스 속성 획득과 속성 설정
- 시간 대기 (wait time)
- 사건 대기 (wait event)
- 사건을 알림 (signal event)
- 메모리 할당 및 해제
- 파일 조작 (File Manipulation)
더보기
- 파일 생성 / 삭제 (create, delete)
- 파일 열기 / 닫기 / 읽기 / 쓰기 (open, close, read, wirte)
- 파일 위치 변경 (reposition)
- 파일 속성 획득 및 설정 (get file attribute, set file attribute)
- 장치 관리 (Device Manipulation)
더보기
- 하드웨어의 제어와 상태 정보를 얻음 (ioctl)
- 장치를 요구(request device), 장치를 방출 (relese device)
- 장치 읽기 (read), 쓰기(write), 위치 변경
- 장치 속성 획득 및 설정
- 장치의 논리적 부착 및 분리
- 정보 유지 (Information Maintenance)
더보기- 시간과 날짜의 설정과 획득 (time)
- 시스템 데이터의 설정과 획득 (date)
- 프로세스 파일, 장치 속성의 획득 및 설정
- 통신 (Communication)
더보기- 통신 연결의 생성, 제거
- 메시지의 송신, 수신
- 상태 정보 전달
- 원격 장치의 부착 및 분리
- 보호 (Protection)
더보기- 권한 관리
시스템 콜의 작동방식
- 라이브러리 함수(printf)를 호출한다.
- 라이브러리 함수 내부에서 시스템 콜(write)를 호출한다.
- 해당 시스템 콜의 인덱스(4)를 CPU 레지스터에 저장한다.
- 0x80 인터럽트를 발생시킨다.(커널 모드로 전환)
- IDT(Interrupt Descriptor Table)를 참조하여 system_call()을 호출한다.
- 이때 3에서 저장한 인덱스를 system_call() 함수 내에 전달한다.
- sys_call_table을 참조해 해당 인덱스에 맞는 기능(sys_write)을 호출한다.
- 수행이 모두 끝나면 사용자 모드로 전환된다.
추가 질문
Q. 서로 다른 시스템 콜을 어떻게 구분할 수 있을까요?
더보기
커널은 내부적으로 각각의 시스템 콜을 구분하기 위해 기능별로 고유번호를 할당하고 그 번호에 해당하는 제어루틴을 커널 내부에 정의한다.
728x90
728x90
'Computer Science > Operating System' 카테고리의 다른 글
Context Switching(컨텍스트 스위칭) (0) | 2023.03.07 |
---|---|
단기 스케줄러, 중기 스케줄러, 단기 스케줄러 (0) | 2023.03.07 |
Process Address Space(프로세스 주소 공간) (0) | 2023.03.07 |
Process(프로세스) (0) | 2023.03.07 |
인터럽트(Interrupt) - 내용 수정 필요 (0) | 2023.03.04 |