책너두 (컴퓨터 밑바닥의 비밀) 12일차 데이터, 코드, 콜백, 클로저에서 컨테이너, 가상 머신까지

요약

  • **코드, 데이터, 변수, 포인터**
  • 메모리에 코드로 구성된 명령어를 저장할 수 있음.
  • 마찬가지로 명령어가 작동하는 데 필요한 데이터도 저장할 수 있음.
    • 구조체 인스턴스, 객체, 배열 일 수 있음.
    • 별칭을 사용하여 변수를 지정할 수 있음.
    • 여러 변수가 동일한 데이터를 참조할 수 있음 → 포인터
  • **콜백 함수와 클로저**
  • 데이터 뿐만 아니라 코드도 여러 변수가 참조할 수 있음.
    • 이 함수를 일급 객체 함수(first-class function) 라고 함.
    • c언어에서는 함수가 일급 객체가 아니므로 함수에서 다른 함수를 반환할 수 없음.
    • 파이썬에서는 함수가 일급 객체이므로 함수를 일반 변수처럼 반환할 수 있음.
      • 함수가 다른 함수에 매개변수로 전달될 때 해당 함수를 콜백 함수라고 함.
  • 콜백 함수가 A에 정의되어 있고 B에서 실행된다고 하지만, 실제로 A에서 정의된 데이터 뿐만 아니라 B에서 정의된 데이터나 실행 시간 환경을 사용하게 할 수 있음.
    • 즉, 콜백 함수를 일부 데이터와 묶어 변수로 취급할 때 클로저(closure)임.
  • **컨테이너와 가상 머신 기술**
  • 프로그램이 구성, 라이브러리처럼 프로그램이 의존하는 실행 환경과 함께 묶인 것을 컨테이너(container) 라고 함.
  • 컨테이너는 운영 체제에서 제공하는 기능을 이용하여 프로세스를 격리함.
    • 또, CPU, 메모리, 디스크에 대한 접근을 제어함
    • 컨테이너에 포함된 프로세스가 전체 운영 체제 안에서 자기 자신의 프로세스만 존재하고 있다고 간주하게 함.
  • 컨테이너는 운영 체제 계층 수준에서 소프트웨어 리소스를 가상화 함.
  • 컨테이너를 넘어 좀 더 넓은 범위의 가상화 기술을 사용하면 소프트웨어 뿐만 아니라 하드웨어도 얼마든지 가상화할 수 있음.
  • 가상화 기술은 소프트웨어를 이용하여 컴퓨터의 하드웨어를 추상화하고, 하드웨어 리소스를 가상 컴퓨터 여러 개로 나눔.
    • 그 위에서 운영 체제를 실행하면 이 운영 체제는 하드웨어 리소스를 가져와 사용하게 할 수 있음.
    • 가상 머신 감시자(virtual machine monitor)가 이런 작업을 하는 소프트웨어임.
    • 하이퍼바이저(hypervisor) 라고 함.
  • 가상 머신 감시자에서 실행되는 운영 체제를 가상 머신이라고 함.
    • 컨테이너 프로세스가 자신이 운영 체제를 독점적으로 사용한다고 생각하는 것과 마찬가지로, 가상 머신 감시자에서 실행되는 운영 체제는 하드웨어 리소스를 독점한다고 간주함.
    • 이는 클라우드 컴퓨팅의 초석으로 간주 됨.

댓글

Designed by JB FACTORY