"운영체제 : 아주 쉬운 세가지 이야기"를 읽으면서 핵심 내용을 정리하였습니다.
이화여대 반효경 교수님의 운영체제 강의를 듣고 복습 차원에서 책 한권을 완독해 보고자 합니다.
잘못된 정보가 있다면 댓글 남겨주시면 감사하겠습니다!
1. 제한적 직접 실행 (Limited Direct Execution)
- CPU 가상화를 구현하기 위한 핵심적인 기법
1.1. 직접 실행만으로는 부족한가?
프로세스가 CPU에 올라가서 실행되는 것을 직접 실행이라고 하는데, 어떤것이 부족해서 직접 실행에 '제한' 이라는 키워드가 붙게 되었을까? 우선 "직접 실행" 시 운영체제가 하는 일에 대해서 먼저 알아보자.
- 직접 실행 시 운영체제가 하는 일
- 실행하려는 프로그램을 프로세스 리스트에 추가한다.
- 프로그램을 위한 메모리를 할당한다.
- 프로그램을 메모리에 탑재(load)한다.
- argv를 사용자 스택(프로세스의 스택 메모리)에 저장한다.
- 레지스터 내용을 삭제 한다.
- main() 함수 실행
- 프로그램이 종료되면 프로세스 메모리 반환
- 프로세스 목록에서 항목제거
상기 과정 중에는 크게 2가지 문제점이 있는데 이는 아래와 같다.
- 문제점 1 : 제어권
- 어떤 프로그램이 운영체제가 원치 않는 일을 하지 않는다는 보장을 할 수 없음
- 한 프로세스가 컴퓨터 하드웨어 자원을 마음대로 조작하는 경우를 방지 할 수 없음
- 문제점 2 : 프로세스간 전환
- CPU에서 어떤 프로세스가 실행 중이라는 것을 운영체제는 CPU를 가지고 있지 않다는 것임
- 특정 프로세스가 무한 루프에 걸리면 운영체제는 어떻게 CPU제어권을 다시 가지고 올 수 있을까?
→ 제어권, 프로세스간 전환 이라는 2가지 문제 점을 해결하기 위해 "제한적"이라는 키워드가 등장하였다
1.2. 제어권 문제의 해결 : User mode, Kernel mode
CPU는 User mode, Kernel mode 라는 2가지 실행 모드를 제공하여 제어권 문제를 해결 하였다.
- CPU 설계에 따라 다르지만 보통 mode bit를 통해 2가지 모드를 구분할 수 있다.
- ex) mode bit == 0 이면 커널 모드, mode bit == 1이면 사용자 모드
- User mode
- 응용 프로그램의 하드웨어 자원에 대한 접근 권한이 제한됨
- Kernel mode
- 운영체제가 컴퓨터의 모든 자원에 접근 할 수 있게 됨
- 특권 명령어를 실행 할 수 있음
→ 즉, Kernel mode 로 전환이 되었을 때 시스템을 제어 할 수 있게 됨 (운영체제만 하드웨어를 컨트롤 할 권리를 가짐)
그렇다면 응용 프로그램이 하드웨어의 지원이 필요할 경우 User mode와 Kernel mode 사이를 어떻게 전환 할 수 있을 까? 이는 시스템 콜 호출을 통해 전환이 가능하다.
- 응용프로그램에서 시스템콜을 호출하면 시스템콜 함수 안에 어셈블리어로 구현 되어 있는 trap 명령어가 실행된다.
- trap 명령어는 user mode를 kernel mode로 상향 조정하게 되고 운영체제의 특정 코드 부분을 실행 하도록 한다.
- 부팅시, 커널은 trap table을 만들고 trap table안에는 trap handeler가 들어 있다.
- 운영체제는 CPU에게 trap handler의 위치를 알려 주게 되고 특정 trap에 맞는 명령어를 CPU가 실행 할 수 있게 된다.

1.3. 프로세스간 전환 문제의 해결 : Timer Interrupt
특정 프로세스에서 다른 프로세스로 전환이 필요할 때, 타이머 장치를 통해(하드웨어의 지원) Timer Interrup를 발생 시켜 프로세스간 전환을 가능하게 한다.
- 타이머 장치 : 수 밀리초 마다 인터럽트를 발생 시키는 장치
- 인터럽트가 발생하면 현재 실행 중인 프로세스가 중단되고 인터럽트 핸들러가 실행된다.
A 프로세스에서 B 프로세스로 전환되는 것을 문맥교환(context switch)라고 한다.
프로세스를 전환 시킬지 말지 결정하는 정책을 스케쥴링이라고 한다.
→ Timer Interrupt로 인한 프로세스간 전환 덕분에 프로세스들은 자신만의 CPU를 가지고 있는 것 처럼 느낄 수 있게 되었다. (CPU 가상화)

문맥 교환에 걸리는 시간
- imbench라는 도구를 통해 시간 측정이 가능하다
- 현대에 와서 2 ~ 3Ghz 프로세서의 경우 1마이크로초 미만이 걸리지만 운영체제의 많은 연산과정이 메모리를 접근하는 연산이기 때문에 프로세서가 좋아 진다고 해서 시간이 극적으로 줄어들지는 않는다.
참고 자료
'Computer Science > Operating System' 카테고리의 다른 글
메모리 가상화 - 주소 변환의 원리 (0) | 2023.02.06 |
---|---|
CPU 가상화(3) - 스케줄러 (2) (0) | 2023.01.30 |
CPU 가상화(2) - 스케줄러(1) (0) | 2023.01.29 |
프로세스 관련 API (0) | 2023.01.21 |
운영체제 개요 (1) | 2023.01.17 |