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