OS의 시스템 호출(Opera팅 시스템): 정의, 유형 및 예
⚡ 스마트 요약
시스템 호출은 프로세스가 파일 접근, 프로세스 제어 및 장치 통신과 같은 커널 서비스를 요청하는 데 사용하는 제어된 인터페이스로, CPU를 사용자 모드에서 권한 있는 커널 모드로 안전하게 전환합니다.

시스템 호출이란 무엇입니까? Opera팅 시스템?
A 시스템 호출 프로세스와 운영 체제 사이의 인터페이스를 제공하는 메커니즘입니다. 컴퓨터 프로그램이 OS의 커널에 서비스를 요청하는 프로그래밍 방식입니다.
시스템 호출은 API(Application Programming Interface)를 통해 운영 체제의 서비스를 사용자 프로그램에 제공합니다. 시스템 호출은 커널 시스템의 유일한 진입점입니다.
시스템 호출 Opera팅 시스템
시스템 호출의 예
예를 들어, 한 파일에서 데이터를 읽어 다른 파일에 복사하는 프로그램을 작성하려면 먼저 입력 파일과 출력 파일, 즉 두 파일의 이름이 필요합니다.
대화형 시스템에서 이러한 유형의 프로그램 실행에는 운영 체제의 시스템 호출이 필요합니다.
- 첫 번째 단계는 화면에 안내 메시지를 표시하는 것입니다.
- 두 번째는 키보드에서 두 파일을 정의하는 문자를 읽어오는 것입니다.
시스템 호출은 어떻게 작동하나요?
운영체제에서 시스템 호출을 수행하는 단계는 다음과 같습니다.
Archi시스템 호출의 구조
위의 시스템 호출 다이어그램에서 볼 수 있듯이:
단계 1) 해당 프로세스들은 시스템 호출에 의해 중단될 때까지 사용자 모드로 실행됩니다.
단계 2) 그 후, 시스템 호출은 우선순위에 따라 커널 모드에서 실행됩니다.
단계 3) 시스템 호출 실행이 완료되면 제어권이 사용자 모드로 돌아갑니다.
단계 4) 사용자 프로세스 실행이 재개되어 사용자 모드와 사용자 모드 사이를 전환합니다. 커널 모드 필요에 따라.
OS에서 시스템 호출이 필요한 이유는 무엇입니까?
다음은 운영체제에서 시스템 호출이 필요한 상황입니다.
- 파일을 읽고 쓰려면 시스템 호출이 필요합니다.
- 파일 시스템이 파일을 생성하거나 삭제하려면 시스템 호출이 필요합니다.
- 시스템 호출은 새로운 프로세스를 생성하고 관리하는 데 사용됩니다.
- 네트워크 연결에는 패킷을 보내고 받기 위한 시스템 호출이 필요합니다.
- 스캐너나 프린터와 같은 하드웨어 장치에 접근하려면 시스템 호출이 필요합니다.
시스템 호출 유형
운영체제에서 시스템 호출에는 다섯 가지 유형이 있습니다.
- 공정 제어
- 파일 관리
- 장치 관리
- 정보 유지
- 의사 소통
운영체제의 시스템 호출 유형
공정 제어
이러한 시스템 호출은 프로세스 생성, 프로세스 종료 등의 작업을 수행합니다.
기능 :
- 종료 및 중단
- 로드 및 실행
- 프로세스 생성 및 프로세스 종료
- 기다려 그리고 Signal 이벤트
- 메모리 할당 및 해제
파일 관리
파일 관리 시스템 호출은 파일 생성, 읽기, 쓰기 등과 같은 파일 조작 작업을 처리합니다.
기능 :
- 파일 만들기
- 파일 삭제
- 파일 열기 및 닫기
- 읽기, 쓰기 및 재배치
- 파일 속성 가져오기 및 설정
장치 관리
장치 관리란 장치 버퍼에서 읽기, 장치 버퍼에 쓰기 등 장치 조작 작업을 수행합니다.
기능 :
- 요청 및 해제 장치
- 장치를 논리적으로 연결하거나 분리합니다.
- 기기 속성을 가져오고 설정합니다.
정보 유지
OS와 사용자 프로그램 간의 정보 및 전송을 처리합니다.
기능 :
- 시간과 날짜 가져오기 또는 설정
- 프로세스 및 장치 속성 가져오기
의사 소통
이러한 유형의 시스템 호출은 특히 프로세스 간 통신에 사용됩니다.
기능 :
- 통신 연결 생성 및 삭제
- 메시지 보내기 및 받기
- OS가 상태 정보를 전송하도록 도와주세요
- 원격 장치 연결 또는 분리
시스템 호출에 대한 매개변수 전달 규칙
다음은 시스템 호출에 매개변수를 전달하는 일반적인 규칙입니다.
- 매개변수는 운영 체제에 의해 스택에 푸시되거나 스택에서 팝되어야 합니다.
- 매개변수는 레지스터로 전달될 수 있습니다.
- 레지스터보다 매개변수가 더 많을 경우, 매개변수는 블록에 저장해야 하며, 블록 주소는 레지스터를 통해 전달해야 합니다.
OS에서 사용되는 중요한 시스템 호출
기다림()
일부 시스템에서는 프로세스가 다른 프로세스의 완료를 기다려야 합니다. 이는 부모 프로세스가 자식 프로세스를 생성할 때 발생하며, 자식 프로세스가 완료될 때까지 부모 프로세스는 일시 중단된 상태로 유지됩니다.
부모 프로세스의 일시 중단은 wait() 시스템 호출을 통해 자동으로 발생합니다. 자식 프로세스의 실행이 종료되면 제어권은 다시 부모 프로세스로 돌아갑니다.
포크()
프로세스는 이 시스템 호출을 사용하여 자기 자신의 복제본인 프로세스를 생성합니다. fork()를 이용하면 부모 프로세스가 자식 프로세스를 생성하고, 자식 프로세스가 실행될 때까지 부모 프로세스는 일시 중단됩니다.
exec ()
이 시스템 호출은 이미 실행 중인 프로세스 내에서 실행 파일을 실행하고 기존 프로세스를 대체합니다. 새 프로세스가 생성되지 않으므로 원래 프로세스 식별자는 그대로 유지되지만 스택, 데이터, 힙 등은 새 프로세스의 것으로 대체됩니다.
죽임()
`kill()` 시스템 호출은 운영체제가 프로세스에 종료 신호를 보내 종료를 촉구하는 데 사용됩니다. 하지만 `kill` 시스템 호출이 반드시 프로세스를 종료하는 것을 의미하는 것은 아니며, 다양한 의미를 가질 수 있습니다.
출구()
`exit()` 시스템 호출은 프로그램 실행을 종료하는 데 사용됩니다. 특히 멀티스레드 환경에서 이 호출은 스레드 실행이 완료되었음을 나타냅니다. 운영 체제는 `exit()` 호출 후 프로세스가 사용했던 리소스를 회수합니다.




