본문 바로가기

컴퓨터 공학/운영체제

3. 운영체제 공부를 위한 사전 지식

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 : 불완전한 소스코드, 기계어 코드 (라이브러리 함수 등의 코드)를 모두 끌어와 전체를 모두 묶어 완전히 실행 가능한 파일로 만드는 것 

  1. 컴파일 및 링킹이 모두 끝난 상태의 실행 파일 (사용자 프로그램)은 커널에 있는 함수를 호출하면 커널 모드에서만 실행 가능합니다.
  2. 사용자 프로그램에 커널 함수(system call code) linking이 안되기 때문에 시스템 콜 함수에 해당하는 모든 것들을 라이브러리 함수에 동일하게 만들어줍니다.
  3. 그러면 사용자 프로그램이 시스템 콜 함수를 직접 호출하는 것이 아니라 라이브러리 함수를 호출하여 linking을 할 수 있게 됩니다. 
  4. 그러다가 라이브러리 함수가 trap이라는 기계어 명령을 내립니다.
  5. Trap명령은 cpu의 모드를 유저에서 커널 모드로 전환한다.
  6. 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를 만들어주는 것으로 각 컨테이너간 영향을 주고 받을 수 없게 합니다. 성능 저하가 전혀 없으며 컨테이너 별 보안성도 강화할 수 있습니다. 
  • 가상화의 장점
    1. 서버의 consolidation -> 좋은 성능을 가진 한 대의 기계에 여러 운영체제를 올려 사용하여 서버를 통합하고 비용을 절감할 수 있습니다. 
    2. 하드웨어의 물리적인 개수가 감소하기 때문에 기기 관리가 단순해집니다.
    3. 가상화 환경에 오류가 발생하면 하드웨어 위에 다시 가상화 환경을 동작시키면 되기 때문에 기계 오류시 복구 기능이 향상되어 가용성 및 신뢰성이 개선됩니다.

Cloud Computing

제가 전에 클라우드 컴퓨팅을 정리해 둔 포스트 링크를 아래 첨부했습니다.

간단하게 개념을 정리해두었으니 읽어보시면 좋을 것 같습니다 :)

 

[IT지식] 퍼블릭/프라이빗/하이브리드 클라우드란?

작성자 : 김승윤

www.notion.so


이번 글에서는 운영체제 관련 배경지식에 대해 알아보았습니다.

감사합니다 :)


References

  • 성균관대학교 소프트웨어대학 엄영익 교수님 <운영체제> 수업