OS의 시스템 호출(Opera팅 시스템): 정의, 유형 및 예
시스템 호출이란 무엇입니까? Opera팅 시스템?
A 시스템 호출 프로세스와 운영 체제 사이의 인터페이스를 제공하는 메커니즘입니다. 컴퓨터 프로그램이 OS의 커널에 서비스를 요청하는 프로그래밍 방식입니다.
시스템 호출은 API(Application Programming Interface)를 통해 운영 체제의 서비스를 사용자 프로그램에 제공합니다. 시스템 호출은 커널 시스템의 유일한 진입점입니다.
시스템 호출의 예
예를 들어, 한 파일에서 데이터를 읽기 위해 프로그램 코드를 작성해야 하는 경우 해당 데이터를 다른 파일에 복사하세요. 프로그램에 필요한 첫 번째 정보는 입력 파일과 출력 파일이라는 두 파일의 이름입니다.
대화형 시스템에서 이러한 유형의 프로그램 실행에는 OS의 일부 시스템 호출이 필요합니다.
- 첫 번째 호출은 화면에 프롬프트 메시지를 작성하는 것입니다.
- 둘째, 키보드에서 두 파일을 정의하는 문자를 읽습니다.
시스템 호출은 어떻게 작동하나요?
OS의 시스템 호출 단계는 다음과 같습니다.
위에 주어진 시스템 호출 예제 다이어그램에서 볼 수 있듯이.
단계 1) 시스템 호출이 중단될 때까지 사용자 모드에서 실행되는 프로세스입니다.
단계 2) 그 후 시스템 호출은 커널 모드에서 우선순위에 따라 실행됩니다.
단계 3) 시스템콜 수행이 끝나면 제어는 사용자 모드로 복귀한다.
단계 4) 사용자 프로세스의 실행이 다음에서 재개되었습니다. 커널 모드.
OS에서 시스템 호출이 필요한 이유는 무엇입니까?
다음은 OS에서 시스템 호출이 필요한 상황입니다.
- 파일을 읽고 쓰려면 시스템 호출이 필요합니다.
- 파일 시스템이 파일을 생성하거나 삭제하려면 시스템 호출이 필요합니다.
- 시스템 호출은 새로운 프로세스를 생성하고 관리하는 데 사용됩니다.
- 네트워크 연결에는 패킷을 보내고 받기 위한 시스템 호출이 필요합니다.
- 스캐너, 프린터와 같은 하드웨어 장치에 액세스하려면 시스템 호출이 필요합니다.
시스템 호출 유형
OS의 XNUMX가지 유형의 시스템 호출은 다음과 같습니다.
- 공정 제어
- 파일 관리
- 장치 관리
- 정보 유지
- 커뮤니케이션
공정 제어
이 시스템 호출은 프로세스 생성, 프로세스 종료 등의 작업을 수행합니다.
기능 :
- 종료 및 중단
- 로드 및 실행
- 프로세스 생성 및 프로세스 종료
- 기다려 그리고 Signal 이벤트
- 메모리 할당 및 해제
파일 관리
파일 관리 시스템 호출은 파일 생성, 읽기, 쓰기 등과 같은 파일 조작 작업을 처리합니다.
기능 :
- 파일 만들기
- 파일 삭제
- 파일 열기 및 닫기
- 읽기, 쓰기 및 재배치
- 파일 속성 가져오기 및 설정
장치 관리
장치 관리란 장치 버퍼에서 읽기, 장치 버퍼에 쓰기 등 장치 조작 작업을 수행합니다.
기능 :
- 요청 및 해제 장치
- 논리적으로 장치 연결/분리
- 장치 속성 가져오기 및 설정
정보 유지
OS와 사용자 프로그램 간의 정보 및 전송을 처리합니다.
기능 :
- 시간과 날짜 가져오기 또는 설정
- 프로세스 및 장치 속성 가져오기
의사 소통
이러한 유형의 시스템 호출은 프로세스 간 통신에 특별히 사용됩니다.
기능 :
- 통신 연결 생성, 삭제
- 메시지 보내기, 받기
- OS가 상태 정보를 전송하도록 도움말
- 원격 장치 연결 또는 분리
시스템 호출에 대한 매개변수 전달 규칙
시스템 호출에 매개변수를 전달하는 일반적인 공통 규칙은 다음과 같습니다.
- 매개변수는 운영 체제에 의해 스택에 푸시되거나 스택에서 팝되어야 합니다.
- 매개변수는 레지스터로 전달될 수 있습니다.
- 레지스터보다 매개변수가 더 많은 경우에는 블록에 저장하고 블록 주소를 매개변수로 레지스터에 전달해야 합니다.
OS에서 사용되는 중요한 시스템 호출
기다림()
일부 시스템에서는 프로세스가 다른 프로세스의 실행이 완료될 때까지 기다려야 합니다. 이러한 유형의 상황은 상위 프로세스가 하위 프로세스를 생성하고 하위 프로세스가 실행될 때까지 상위 프로세스의 실행이 일시 중단된 상태로 유지될 때 발생합니다.
상위 프로세스의 일시 중단은 wait() 시스템 호출을 통해 자동으로 발생합니다. 하위 프로세스가 실행을 종료하면 제어가 상위 프로세스로 다시 이동됩니다.
포크()
프로세스는 이 시스템 호출을 사용하여 자신의 복사본인 프로세스를 만듭니다. 이 시스템 호출 상위 프로세스의 도움으로 하위 프로세스가 생성되고 하위 프로세스가 실행될 때까지 상위 프로세스의 실행이 일시 중지됩니다.
exec ()
이 시스템 호출은 이미 실행 중인 프로세스의 컨텍스트에서 실행 파일이 이전 실행 파일을 대체할 때 실행됩니다. 그러나 새로운 프로세스가 구축되지 않아 원래 프로세스 식별자는 그대로 유지되지만, 스택, 데이터, 헤드, 데이터 등은 새로운 프로세스로 대체됩니다.
죽임()
kill() 시스템 호출은 OS에서 프로세스 종료를 촉구하는 종료 신호를 프로세스에 보내는 데 사용됩니다. 그러나 시스템 종료 호출이 반드시 프로세스 종료를 의미하는 것은 아니며 다양한 의미를 가질 수 있습니다.
출구()
Exit() 시스템 호출은 프로그램 실행을 종료하는 데 사용됩니다. 특히 다중 스레드 환경에서 이 호출은 스레드 실행이 완료되었음을 정의합니다. OS는 Exit() 시스템 호출을 사용한 후 프로세스에서 사용된 리소스를 회수합니다.
요약
카테고리 | Windows | 유닉스 |
---|---|---|
공정 제어 | CreateProcess () 종료프로세스() WaitForSingleObject() |
포크() 출구() 기다림() |
장치 조작 | 콘솔 모드 설정() 읽기콘솔() 쓰기콘솔() |
록틀() 읽다() 쓰다() |
파일 조작 | 파일 생성() 파일 읽기() 쓰기파일() 닫기핸들() |
열려 있는() 읽다() 쓰다() 닫다!) |
정보유지관리 | 현재프로세스ID() 가져오기 타이머 설정() 잠() |
getpid() 경보() 자다() |
의사 소통 | 파이프 생성() 파일매핑 생성() MapViewOfFile() |
파이프() shm_open() mmap() |
보호 | 파일보안() 보안 초기화Descript또는() 보안 설정Descript또는그룹() |
Chmod() 우마스크() 친() |