Skip to content

Latest commit

 

History

History
42 lines (37 loc) · 2.81 KB

File metadata and controls

42 lines (37 loc) · 2.81 KB

4. 사용자 프로그램이 사용하는 함수

사용자 정의함수

프로그래머 본인이 직접 작성한 함수

라이브러리 함수

누군가 작성해놓은 함수를 호출만 하여 사용하는 함수

두 함수는 기계어 형태로 존재한다. 따라서 이 두 함수는 프로그램이 실행될 때에 해당 프로세스의 주소 공간에 포함되며, 또한 함수 호출 시에도 자신의 주소 공간에 있는 스택을 사용하게 된다.

커널함수

OS 커널에 정의된 함수
  • 시스템 콜 함수 사용자 프로그램이 OS의 서비스를 요청하기 위해 호출하는 함수
  • 인터럽트 처리 함수 각종 H/W 및 S/W가 CPU의 서비스를 요청하기 위해 발생시키는 함수

이와 같은 커널함수는 OS의 커널 주소 공간에 코드가 정의된다. 즉 OS 내에 있는 함수를 호출해서 사용하는 것이다.

시스템 콜 함수

  • read()
  • write()

두 함수는 각각 I/O를 필요로 할 때 호출하는 함수


5. 인터럽트

원칙적으로는 인터럽트 처리 중에 또 다른 인터럽트가 발생하는 것을 허용하지 않는다. (데이터의 일관성이 유지되지 않는 문제가 발생할 수 있다.) 하지만 인터럽트마다 중요도가 다르기 때문에 현재 처리 중인 인터럽트보다 더 높은 우선순위의 인터럽트가 발생한다면 현재 처리 중이던 인터럽트 코드의 수행 지점을 저장하고 우선순위가 높은 인터럽트를 처리하게 된다.


6. 시스템 콜

시스템 콜

비록 함수 호출이기는 하지만 자신의 주소 공간을 거스르는 영역((커널의 주소 공간)에 존재하는 함수를 호출하는 것

일반적인 인터럽트 발생과 동일한 방법이나 시스템 콜은 스스로 인터럽트 라인을 세팅한다는 점이 다르다.

프로그램이 CPU를 할당받고 명령을 수행 중 CPU를 빼앗기는 경우

  • 타이머에 의한 인터럽트가 발생하는 경우
  • 입출력 요청을 위헤 시스템 콜을 하는 경우

7. 프로세스의 두 가지 실행 상태

사용자 모드의 실행 상태(user mode running)

자신의 주소 공간에 정의된 코드를 실행하는 것

커널모드의 실행 상태(kernel mode running)

시스템 콜 함수를 실행하는 것

※주의! 시스템 콜을 통해 실행되는 것이 프로세스 A의 코드가 아닌 OS 커널의 코드이지만, 시스템 콜이 수행되는 동안 커널이 실행 상태(running state)에 있다고 하지 않고프로세스 A가 실행 상테에 있다고 말한다는 것이다. 사용자모드와 커널모드를 통해 프로그램이 수행되는 과정