[CS] Interrupt, System call

Y_Y·2023년 6월 4일
0

CS

목록 보기
3/3

User mode & Kernel mode

User mode - 우리가 개발하는 프로그램은 일반적으로 User mode에서 실행
User mode -> Kernel mode - 프로그램 실행 중에 인터럽트가 발생하거나 시스템 콜을 호출하게 되면 커널 모드로 전환

Kernel mode - 프로그램의 현재 CPU 상태를 저장한다. 커널이 인터럽트나 시스템 콜을 직접 처리 즉, CPU에서 커널 코드가 실행 됌
처리가 완료되면 중단됐던 프로그램의 CPU 상태를 복원
어떤 경우에는 중단됐던 프로그램이 바로 실행되지 않고 나중에 실행될 수 있다.

Kernel mode -> User mode 다시 통제권을 프로그램에게 반환
User mode - 프로그램이 이어서 실행

Kernel - 운영체제의 핵심 시스템의 전반을 관리/감독하는 역할 하드웨어와 관련된 작업을 직접 수행

Why? Kernel mode

시스템을 보호하기 위해 - 프로그램이 하드웨어에 대한 무분별한 사용을 막기 위해

Interrupt

시스템에서 발생한 다양한 종류의 이벤트, 그런 이벤트를 알리는 메커니즘

ex) 전원에 문제가 생겼을 때, I/O 작업이 완료됐을 때, 시간이 다 됐을 때, 0으로 나눴을 때, 잘못된 메모리 공간에 접근을 시도할 때

인터럽트가 발생하면 CPU에서는 "즉각적으로" 인터럽트 처리를 위해 커널 코드를 커널 모드에서 실행

System call

프로그램이 OS커널이 제공하는 서비스를 이용하고 싶을 때 시스템 콜을 통해 실행

ex) 프로세스/스레드 관련, 파일 I/0 관련, 소켓 관련, 장치(device) 관련, 프로세스 통신 관련

시스템 콜은 프로세스가 운영체제의 서비스를 요청하기 위해 사용하는 인터페이스이다.

시스템 콜이 발생하면 해당 커널 코드가 커널 모드에서 실행

하드웨어 혹은 시스템 관련 기능은 어떤 프로그램이라도 반드시 시스템 콜을 통해서만 사용 가능

하지만 우리는 직접 OS에 시스템 콜을 하지 않는다, 하지만 파일, 네트워크 I/O 프로세스/스레드 관련 작업을 할 수 있다.

우리가 사용하는 프로그래밍 언어들이 시스템 콜을 포장(wrapping)하여 간접적으로 사용할 수 있도록 제공했기 때문이다.

출처 : Youtube 쉬운코드

profile
남을 위해(나를 위해) 글을 쓰는 Velog

0개의 댓글