:하드웨어를 관리하고, 컴퓨터 시스템의 자원들을 관리하며, 응용 프로그램과 하드웨어 간의 인터페이스로써 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다.
(종류 : Windows, Linux, UNIX, macOS, MS-DOS 등이 있다.)
즉, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어
: 운영체제의 심장
사용자 모드에서 자원을 접근하려면 ?
사용자 모드로 실행되는 프로그램이 자원에 접근하는 운영체제 서비스를 제공받기 위해서 커널모드로 전환되어야한다.
커널모드로 전환하기 위해서System call(시스템 콜)
요청이 필요하다.
System call(시스템 콜)
: 운영 체제 서비스를 제공 받기 위한 요청
-시스템 콜은 일종의소프트웨어 Interrupt
이다.
운영체제는 Interrupt Driven
Interrupt는 어디서 발생 ?
→ 하드웨어나 소프트웨어 에서 발생된 인터럽트를 운영체제가 감지해서 처리하는 역할을 수행함
Interrupt하는 이유 ?
하드웨어(키보드, 마우스 클릭)가 발생시키는 인터럽트로, CPU가 아닌 다른 하드웨어 장치가 cpu에 어떤 사실을 알려주거나 cpu 서비스를 요청해야 할 경우 발생시킨다.
소프트웨어(주로 프로그램 내부)가 발생시키는 인터럽트이다. 소프트웨어(사용자 프로그램)가 스스로 인터럽트 라인을 세팅한다.
종류:예외 상황
, system call
인터럽트를 발생시키기 위해 하드웨어/소프트웨어는 cpu내에 있는 인터럽트 라인
을 세팅하여 인터럽트를 발생시킨다.
cpu는 매번 명령을 수행하기 전에 인터럽트라인이 세팅되어있는지를 검사한다.
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 값을 복원하여 이전 실행 위치로 복원한다.