알고싶은점
•
전가상화와 반가상화의 차이 중 하나는 커널 코드의 수정. 따라서 커널은 어떤 역할을 하는가
운영체제의 역할
•
사용자가 시스템을 편리하게 사용할 수 있도록 인터페이스 제공
•
컴퓨터의 자원 관리 (프로세스 관리, 메모리 관리, 하드웨어 관리 등)
커널
특징
•
운영체제의 중심
•
시스템의 전반을 관리, 감독하는 역할
•
사용자와의 상호작용은 지원하지 않기 때문에 시스템 프로그램(ex: Shell)을 통함
→ 운영체제 = 커널 + 시스템 프로그램
•
컴퓨터의 물리적 자원과 추상화 자원을 관리
프로세스 관리
•
프로세스간 CPU가 이용할 시간을 분배
•
프로세스는 PID가 부여되어 이것을 통해 관리
메모리 관리
•
segment나 page로 관리
•
이용이 끝난 메모리 회수
•
메모리 영역 분배
운영체제의 구조
User Space
•
유저가 진행하는 프로그램 대부분은 User Mode에서 진행
•
직접적으로 하드웨어나 시스템 자원에 접근하는 것을 제한
System Call Interface
•
User Mode/ Kernel Mode 전환에 관여
•
Trap(넓은 의미에서 Interrupt, 소프트웨어 인터럽트)이 발생하면 전환
→ 프로그램의 오류(0으로 나눴을때, 잘못된 메모리 공간 접근 등등) 또는 System Call
Kernel Space
•
유저 프로그램이 시스템 전반을 손상시키는 것을 방지
•
시스템 호출을 통한 상호작용을 함으로써 실행 영역을 분리 시킴
→ 안정성
•
프로세스, 메모리, 파일 시스템, 프로세스 간 통신, 입출력 관리
Hardware Interface
•
Interrupt가 발생하면, 즉각적으로 커널에게 전달하여 Kernel Mode 실행
Hardware
User Mode/ Kernel Mode 전환 예제
상황
•
실행중인 쓰레드 T1(running 상태)
•
대기중인 쓰레드 T2(ready 상태)
User Mode
1.
T1 실행중, 시스템 콜 발생
3 - 1. 커널 모드에서 유저 모드로 넘어오고 T2 실행중
3 - 2. 하드웨어에서 2 - 3과정의 시스템 콜 처리에 대한 결과를 인터럽트로 알림
5.
T2 실행중, 스케줄러가 정한 실행시간이 다 지나면 인터럽트 발생
Kernel Mode
2 - 1. 시스템 콜 발생하는 순간, 커널 모드로 전환
2 - 2. T1 CPU상태 저장
2 - 3. T1에서 발생한 시스템 콜 내용이 처리되기 위해 T1이 waiting 상태로 넘어감
2 - 4. CPU 스케줄링에 의해 T2가 running 상태
4 - 1. 인터럽트 발생 직후, 커널 모드로 전환
4 - 2. T2 CPU상태 저장
4 - 3. T1은 ready 상태로 전환
4 - 4. 4 - 2의 T2 CPU상태 복원 후 다시 running
6 - 1. 인터럽트 발생 직후, 커널 모드 전환
6 - 2. T2 CPU상태 저장
6 - 3. T2 ready 상태로 전환
6 - 4. 2 - 2의 T1 CPU상태 복원 후 다시 running