[OS] Dual Mode, Interrupt, Trap, Privileged Instructions

parkheeddong·2023년 3월 10일
0

Operating System

목록 보기
6/63
post-thumbnail

1. Dual Mode

  • CPU는 두개의 서로 다른 모드를 갖는다. 따라서 CPU에는 CPU Mode를 표현하는 1-bit 레지스터가 있다.

1) User Mode

User Applicaiton이 실행되고 있을 때 CPU는 User Mode이다.

2) Kernel Mode = Privileged Mode, Supervisor Mode

Kernal Code가 실행되고 있을 때 CPU는 Kernel Mode이다.
Trap이 발생하거나, Interrupt가 발생하면 User Mode에서 Kernel Mode로의 Mode Change가 발생한다.
Interrupt와 Trap의 Handling이 끝나면, CPU Mode는 다시 Kernel Mode에서 User Mode로 돌아간다.




2. Interrupt

  • CPU에 예상하지 못한 외부적인 시그널이 발생하는 경우 'Interrupt'라고 한다.
  • 외부의 하드웨어에서 발생하며, (일부) 소프트웨어에서 발생하기도 한다.
    CPU는 Interrupt가 발생하면 하던 일을 중지하고 Interrupt Handling을 한다. Kernel로부터 Interrupt Handler를 불러들여서 Handling을 하기 때문에, 이때 CPU의 Mode 전환이 발생한다.
  • 주로 I/O Device에서 발생한다.



3. Trap

  • Software 에서 발생하는 Interrupt를 'Trap'이라고 한다.
  • 아래와 같이 두 가지 종류가 있다.

1) Exception

CPU가 프로그램을 실행하던 중 '오류'(에러)가 발생하여 그 프로그램을 더 실행할 수 없는 상황이 발생할 경우를 Exception이라고 한다. 이 때 Kernel의 Exception Handler가 불러들여지므로, CPU Mode가 전환된다.
ex) Divide by Zero Error

2) System Call

CPU가 프로그램을 실행하던 중 입출력을 하고 싶으면 Kernel의 System Call Handler을 콜한다. CPU Mode의 전환이 발생한다.

(1) System Call이란, 운영체제가 application/process에게 제공하는 서비스로서, 운영체제와 application/process 간의 Interface를 의미한다.

  • CPU가 프로그램을 실행하던 중 입출력을 하고 싶으면 Kernel의 System Call Handler을 콜한다.

(2) System Call이 발생하면 CPU Mode의 전환이 일어난다.

(3) System Call Functions은 수많은 운영체제의 function들 중 application들이 직접 호출할 수 있는 function들을 의미한다.

  • 리눅스 기준 System Call 함수는 300개 이상이고, 전체 Kernel 함수는 훨씬 많다.

(4) System Call Interface란 OS와 Application 사이의 Interface를 의미한다.

  • System Call 함수를 호출할 때에는 Trap이라는 Instruction(기계어 명령)을 사용한다.
    특정 cpu 레지스터에 system call 함수마다 번호를 붙이고, 레지스터에 번호를 넣고 trap 명령을 실행하면 5번에 해당하는 system call이 호출된다.
    ex) MIPS R2000 시스템에서는 system call 기계어 명령이 'syscall'이다. CPU마다 Trap이라는 기계어 명령을 사용할 수도, syscall을 사용할 수도 있다.

(5) System Call 함수의 종류

  • 프로세스 관리제어 : 프로세스 생성, 종료, 프로세스의 이미지 로딩, 대기
  • 파일 관리 : 파일 생성, 삭제, 열기, 닫기, 읽기, 쓰기, 찾기
  • 디바이스 관리 : 입출력장치에 요청, 요청 거두기, 읽기, 쓰기
  • 정보 관리 : 시간/날짜 정보 세팅, 프로세스 파일/디바이스 속성 가져오기
  • 커뮤니케이션 : 네트워크를 통해서 연결을 생성/삭제, 메시지 보내기/받기 등




4. Privileged Instructions (특권 명령)

1) 기계어 명령의 집합

  • 컴퓨터 시스템의 CPU는 자신이 해독하고 실행할 수 있는 기계어 명령의 집합(Machine Instruction Set)을 갖는다.
  • 프로그래머가 소스 코드를 작성하고 컴파일하고 링크하면 기계어 명령 집합 내의 명령어로 번역된다. 그 기계어 코드가 CPU에서 실행된다.
  • 기계어 명령의 집합은 일부의 '특권 명령'과 대부분의 '일반 기계어 명령'으로 이뤄진다.

2) 특권 명령

특권 명령은 CPU가 Kernel 모드일 때에만 CPU에서 실행될 수 있는 기계어 명령이다.
대부분 하드웨어의 민감한 부분을 건드리는 명령들이다.
입출력 컨트롤, 타이머 관리, 인터럽트 관리, 유저 모드로의 전환 등이 해당한다.

3) 일반 기계어 명령

일반 기계어 명령들은 User Mode에서도 실행가능한 명령어이다.

0개의 댓글