Backgrounds for OS
이번 글에서는 운영체제 공부를 위한 사전 지식에 대해 간단히 알아보겠습니다.
알아두면 운영체제 공부에 도움이 되는 개념들로 간단하게만 짚고 넘어간 후 정확한 이해가 필요한
개념은 추후 다시 다루도록 하겠습니다.
가벼운 마음으로 읽어주세요 :)
Dual Mode Operation
- CPU는 두가지 모드에서 동작합니다.
- user mode : CPU가 사용자 어플리케이션을 실행하고 있을 때
- kernel mode : 커널 안에 있는 프로그램을 실행하고 있을 떄 ( 이때 실행되는 기능들은 아주 중요하기 때문에 사용자 프로그램에서 접근 할 수 없음)
- Privileged Instruction 는 machine, instruction, set으로 구성된 컴퓨터 시스템 중 일부 명령을 가리키는 용어입니다.
- CPU가 항상 커널모드에 있을 때에만 실행할 수 있는 명령
- ex ) 입출력 제어, 타이머 관리, 인터럽트 관리, 유저 모드 전환 등
- Mode change는 위에서 언급한 두가지 모드 간의 전환을 의미합니다. trap이나 interrupt가 발생하면 모드 체인지 (= mode switching)이 발생합니다.
- Interrupt는 CPU 입장에서 요청 발생 시간을 예측하지 못한 즉, CPU가 아닌 디바이스 (CPU이외의 하드웨어 또는 소프트웨어)로 부터 오는 외부 이벤트를 의미합니다. 운영체제는 인터럽트가 발생하면 하던 일을 중지하도록 요청을 받고, 이 인터럽트를 처리하기 위해 커널모드로 전환합니다.
- Trap은 두가지 종류가 있습니다.
- exception : 어플리케이션 실행 중 예외 상황 발생
- system call : 정상적으로 어플리케이션이 실행되다가 필요한 기능을 운영체제에게 요청하는 것으로 커널모드로 전환됨 , 시스템 콜 함수는 프로세스 제어 (생성, 종료, 로드, 대기 등), 파일 관리(파일 생성, 제거, 열기, 닫기, read, write), 디바이스 관리, 정보 관리(날짜 시간 정보 세팅, 프로세스 파일 속성 정보 등) 의 기능을 함
System Call Handling in Unix
- compile : 작성한 소스 코드를 기계어로 번역하는 것
- Linking : 불완전한 소스코드, 기계어 코드 (라이브러리 함수 등의 코드)를 모두 끌어와 전체를 모두 묶어 완전히 실행 가능한 파일로 만드는 것
- 컴파일 및 링킹이 모두 끝난 상태의 실행 파일 (사용자 프로그램)은 커널에 있는 함수를 호출하면 커널 모드에서만 실행 가능합니다.
- 사용자 프로그램에 커널 함수(system call code) linking이 안되기 때문에 시스템 콜 함수에 해당하는 모든 것들을 라이브러리 함수에 동일하게 만들어줍니다.
- 그러면 사용자 프로그램이 시스템 콜 함수를 직접 호출하는 것이 아니라 라이브러리 함수를 호출하여 linking을 할 수 있게 됩니다.
- 그러다가 라이브러리 함수가 trap이라는 기계어 명령을 내립니다.
- Trap명령은 cpu의 모드를 유저에서 커널 모드로 전환한다.
- Trap은 무조건 system call handler를 반드시 호출하게 되는데 System call handler는 원래 사용자 프로그이 어떤 시스템 콜 함수를 호출한 것인지 찾아내 system call code에 있는 진짜 해당 함수를 찾아내어 실제로 실행되게 한다.
- 즉, linking을 할 수 없는 사용자 프로그램과 시스템 콜 함수 사이를 실제 연결한 것처럼 하고, 사용할 수 있게 하는 것이 운영체제의 역할인 것입니다.
- 커널이 하는 일은 다음과 같습니다.
- 디바이스 요청 = interrupt handling (다음 챕터에서 설명하겠습니다)
- 프로세스 요청 = system call, request handling
- ex) 프로세스가 null 값이 저장된 변수의 주소에 어떤 값을 대입하려 했을 경우와 같이 잘못된 접근을 하면 해당 interrupt, 프로세스를 아예 제거해버리는 등의 처리를 합니다 (= exception handling)
Virtualizaton
- 하드웨어 가상화 (플랫폼 가상화) 는 한대의 기계가 여러 대인것처럼 사용할 수 있는 기능을 제공하는 것으로 오늘날 많이 사용되고 있는 기술입니다.
- virtualization layer은 실제 하드웨어의 운영체제 역할을 하는 영역으로 주로 host 라고 말하며 구현 방법이 다양합니다.
- 가상 하드웨어에 올라와 있는 운영체제는 guest 라고 하며 이 계층을 기준으로 그 위의 가상 환경은 user mode, 아래 계층의 하드웨어는 커널 모드인 것입니다.
- 가상화 종류
- para-virtualizaton 반가상화 : 가상머신에 있는 프로세스가 물리적 하드웨어 직접 접근하는 것은 시스템에 위험한 일이기 때문에 제한됩니다. 따라서 물리적 하드웨어 접근할 수 있는 코드를 하이퍼바이저 코드로 변환하여 제공합니다. 그러면 게스트 운영체제는 하이퍼바이저 코드를 이용하여 하드웨어에 접근할 수 있도록 게스트 운영체제는 수정합니다. 즉, 게스트 운영체제에 하드웨어에 직접 접근할 수 있는 코드는 남아있지 않고, 간접적으로 접근할 수 있도록 게스트 운영체제를 수정하는 가상화 기법입니다.
- full-virtualization 전 가상화 : 게스트 운영체제를 수정하지 않고 그대로 사용하지만 유저 모드에서 특권 명령을 실행하면 발생하는 exception을 하이퍼바이저가 정상적인 방법으로 돌려주는 처리를 하는 가상화 기법입니다. 성능 면에서 좋지 않습니다.
- hybrid-virtualization : 전가상화와 반 가상화를 섞어 쓰는 방식으로 게스트 운영체제의 수정이 불가피한 부분만 수정하는 방식이라고만 생각하시면 됩니다.
- Hypervisor (VMM.virtual machine monitor) 하이퍼바이저의 아키텍처 종류
- type-1 (barametal) : 하드웨어 위에 하이퍼바이저가 직접 올라가고 그 위에 가상 머신이 돌아가는 형태
- type-2 (hosted) : 기존의 운영체제가 호스트로 시스템을 관리하고 하이퍼바이저가 그 운영체제 위에 게스트로 올라가는 형태
- type-3 (bybrid) : 하이퍼바이저를 기존의 운영체제 안에 넣어 이를 호스트 운영체제로 운영하는 형태
- 운영체제 가상화는 container(=jail, virtual private servers)로 instance(어플리케이션)을 묶어 독립되는 upse-space instance를 만들어주는 것으로 각 컨테이너간 영향을 주고 받을 수 없게 합니다. 성능 저하가 전혀 없으며 컨테이너 별 보안성도 강화할 수 있습니다.
- 가상화의 장점
- 서버의 consolidation -> 좋은 성능을 가진 한 대의 기계에 여러 운영체제를 올려 사용하여 서버를 통합하고 비용을 절감할 수 있습니다.
- 하드웨어의 물리적인 개수가 감소하기 때문에 기기 관리가 단순해집니다.
- 가상화 환경에 오류가 발생하면 하드웨어 위에 다시 가상화 환경을 동작시키면 되기 때문에 기계 오류시 복구 기능이 향상되어 가용성 및 신뢰성이 개선됩니다.
Cloud Computing
제가 전에 클라우드 컴퓨팅을 정리해 둔 포스트 링크를 아래 첨부했습니다.
간단하게 개념을 정리해두었으니 읽어보시면 좋을 것 같습니다 :)
이번 글에서는 운영체제 관련 배경지식에 대해 알아보았습니다.
감사합니다 :)
References
- 성균관대학교 소프트웨어대학 엄영익 교수님 <운영체제> 수업
'컴퓨터 공학 > 운영체제' 카테고리의 다른 글
5. 프로세스 동기화 (0) | 2021.02.09 |
---|---|
4 (2). 프로세스 스케줄링 : 스케줄링 기법 (0) | 2021.02.02 |
4. 프로세스 스케줄링 (0) | 2021.01.29 |
2. 운영체제의 개념, 주요 기능, 구조 (0) | 2021.01.11 |
1. 운영체제 공부를 시작하며 (0) | 2021.01.08 |