Search
Duplicate
🍎

[운영체제] CPU 가상화(1)- 제한적 직접 실행

간단소개
CPU 가상화를 구현하는 저수준 기법에 대해 알아 봅시다!
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
운영체제
태그
운영체제
Scrap
8 more properties
“운영체제 : 아주 쉬운 세가지 이야기”를 읽으면서 핵심 내용을 정리하였습니다. 이화여대 반효경 교수님의 운영체제 강의를 듣고 복습 차원에서 책 한권을 완독해보고자 합니다.

제한적 직접 실행(Limited Direct Execution)

CPU 가상화를 구현하기 위한 핵심적인 기법

1. 직접 실행만으로는 부족한가?

직접 실행 시 운영체제가 하는 일
1.
실행하려는 프로그램을 프로세스 리스트에 추가한다.
2.
프로그램을 위한 메모리를 할당한다.
3.
프로그램을 메모리에 탑재(load)한다.
4.
argv를 사용자 스택(프로세스의 스택메모리)에 저장한다.
a.
argv : main 함수의 인자
5.
레지스터 내용 삭제
6.
call main() 실행
7.
프로그램이 종료되면 프로세스 메모리 반환
8.
프로세스 목록에서 항목 제거
직접 실행이란 프로그램을 CPU 상에서 바로 실행시키는 것을 말하는데 여기에는 크게 2가지 문제점이 있다.
문제점 1 : 제어권
어떤 프로그램이 운영체제가 원치 않는 일을 하지 않는다는 보장을 할 수 있는가?
한 프로세스가 컴퓨터 하드웨어 자원은 마음대로 조작하는 경우를 방지 할 수 없음.
문제점 2 : 프로세스간 전환
CPU에서 어떤 프로세스가 실행 중이라는 것은 운영체제는 CPU를 가지고 있지 않다는 것이다. (운영체제 또한 프로세스 이므로)
특정 프로세스가 무한 루프에 걸리면 운영체제는 어떻게 CPU제어권을 다시 가지고 올 수 있을까?
→위의 2가지 중요 문제 점을 해결하기 위해서 “제한적” 이라는 키워드가 등장 하였다.

2. 제어권 문제 해결 : User mode , Kernel mode

CPU는 2가지 실행 모드를 제공하여 제어권 문제를 해결하였다. → CPU 설계에 따라 다르지만 보통 mode bit라는 것을 활용해 2가지 모드를 구분 할 수 있다. → ex ) mode bit = 0 이면 커널 모드 , mode bit = 1이면 사용자 모드

1) User Mode

응용 프로그램의 하드웨어 자원에 대한 접근 권한이 일부 제한됨

2) Kernel Mode

운영체제가 컴퓨터의 모든 자원에 접근할 수 있게 됨
특권명령어를 실행 할 수 있음
→즉, Kernel Mode 로 전환이 되었을 때 시스템을 제어 할 수 있게 됨 (운영체제 만이 하드웨어에를 컨트롤할 권리를 가짐)

3) User mode와 Kernel mode 사이를 전환하는 방법

응용 프로그램에서 시스템 콜을 호출하면 시스템콜 함수 안에 어셈블리어로 구현 되어있는 trap 명령어가 실행 되어 커널 모드로 상향 조정하게 되며 운영체제의 특정 코드 부분을 실행 하게 한다.
부팅 시, 커널은 trap table을 만들고 trap table 안에는 trap handler가 들어 있다. 운영 체제는 CPU에게 trap handler의 위치를 알려 주게 되고 특정 trap에 맞는 명령어를 CPU가 실행 할 수 있게 된다.

4) 실행 프로토콜

3. 프로세스간 전환 문제 해결 : Timer Interrupt

실행 중인 프로세스를 Timer Interrupt를 통해 다른 프로세스로 전환 시킬 수 있게 되었다.
타이머 장치 : 수 밀리초 마다 인터럽트를 발생 시키는 장치 (하드웨어)
인터럽트가 발생하면 현재 실행 중인 프로세스가 중단되고 인터럽트 핸들러가 실행된다.
→ 타이머 인터럽트 덕분에 프로세스간 전환이 가능하게 되었고 프로세스들은 자신만의 CPU를 가지고 있는 것 처럼 느낄 수 있게 되었다. (CPU가상화)
A 프로세스에서 B 프로세스로 전환되는 것을 문맥교환(context switch)이라고 한다.
프로세스를 전환 시킬지 말지 결정하는 정책스케쥴링이라고 한다.
실행 프로토콜
문맥교환에 걸리는 시간?? - lmbench 라는 도구를 통해 시간 측정이 가능하다. - 현대에 와서 2~3Ghz 프로세서의 경우 1마이크로초 미만이 걸리지만 운영체제의 많은 연산과정이 메모리를 접근하는 연산이기 때문에 프로세서가 좋아 진다고 해서 시간이 극적으로 줄어들지는 않는다.
참고 자료