[운영체제] 운영체제, 커널&사용자 모드 그리고 인터럽트(Interrupt)

James·2023년 6월 22일
0

운영체제

목록 보기
1/13
post-thumbnail

운영체제란?


운영체제(OS, Operating System)

:하드웨어를 관리하고, 컴퓨터 시스템의 자원들을 관리하며, 응용 프로그램과 하드웨어 간의 인터페이스로써 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다.
(종류 : Windows, Linux, UNIX, macOS, MS-DOS 등이 있다.)

즉, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어

운영체제 역할


1. 프로세스 관리

2. 자원 접근 및 할당

  • CPU 스케쥴링
  • 메모리 (페이징, 스와핑..)
  • 입출력 장치

3. 파일 시스템 관리


이중 모드 ( Dual Mode )


1. 커널 모드(Kernel Mode)

: 운영체제의 심장

[커널 모드 특징]

  • 운영체제 서비스를 제공받을 수 있는 실행모드
  • 자원 접근 가능

사용자 모드에서 자원을 접근하려면 ?

사용자 모드로 실행되는 프로그램이 자원에 접근하는 운영체제 서비스를 제공받기 위해서 커널모드로 전환되어야한다.
커널모드로 전환하기 위해서 System call(시스템 콜) 요청이 필요하다.

System call(시스템 콜)
: 운영 체제 서비스를 제공 받기 위한 요청
-시스템 콜은 일종의 소프트웨어 Interrupt이다.

2. 사용자 모드(User Mode)

[사용자 모드 특징]

  • 운영체제 서비스를 제공받을 수 없는 실행모드
  • 커널 영역의 코드를 실행할 수 없는 실행모드
  • 자원 접근 불가

인터럽트


운영체제는 Interrupt Driven

Interrupt는 어디서 발생 ?

→ 하드웨어나 소프트웨어 에서 발생된 인터럽트를 운영체제가 감지해서 처리하는 역할을 수행함

Interrupt하는 이유 ?

  • Maxmization CPU use (CPU를 busy상태로 사용하기 위해)
  • 입출력연산이 CPU 명령 수행속도보다 현저히 느리기 때문에

인터럽트 2가지


1) 하드웨어 인터럽트

하드웨어(키보드, 마우스 클릭)가 발생시키는 인터럽트로, CPU가 아닌 다른 하드웨어 장치가 cpu에 어떤 사실을 알려주거나 cpu 서비스를 요청해야 할 경우 발생시킨다.

2) 소프트웨어 인터럽트

소프트웨어(주로 프로그램 내부)가 발생시키는 인터럽트이다. 소프트웨어(사용자 프로그램)가 스스로 인터럽트 라인을 세팅한다.

종류:예외 상황, system call

인터럽트를 발생시키기 위해 하드웨어/소프트웨어는 cpu내에 있는 인터럽트 라인을 세팅하여 인터럽트를 발생시킨다.

cpu는 매번 명령을 수행하기 전에 인터럽트라인이 세팅되어있는지를 검사한다.

인터럽트 과정(Interrupt Process)


process A 실행 중 디스크에서 어떤 데이터를 읽어오라는 명령을 받았다고 가정해보자.

  • process A는 system call을 통해 인터럽트를 발생시킨다.
  • CPU는 현재 진행 중인 기계어 코드를 완료한다.
  • 현재까지 수행중이었던 상태를 해당 process의 PCB(Process Control Block)에 저장한다. (수행중이던 MEMORY주소, 레지스터 값, 하드웨어 상태 등...)
  • PC(Program Counter, IP)에 다음에 실행할 명령의 주소를 저장한다.
  • 인터럽트 벡터를 읽고 ISR 주소값을 얻어 ISR(Interrupt Service Routine)로 점프하여 루틴을 실행한다.
  • 해당 코드를 실행한다.
  • 해당 일을 다 처리하면, 대피시킨 레지스터를 복원한다.
  • ISR의 끝에 IRET 명령어에 의해 인터럽트가 해제 된다.
  • IRET 명령어가 실행되면, 대피시킨 PC 값을 복원하여 이전 실행 위치로 복원한다.
profile
의미있는 성장의 태도, 긍정적인 사고를 지닌 Deveolper

0개의 댓글