하이퍼바이저 (Hypervisor)란 ? 하이퍼바이저는 호스트 컴퓨터에서 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼을 말한다. 가상화 머신 모니터(virtual machine monitor) 또는 가상화 머신 매니저(virtual machine manager) 약어로 VMM이라고도 한다. 하나 이상의 가상 머신을 실행하는 컴퓨터가 호스트가 되고 각 가상 머신들은 게스트가 된다. 하이퍼바이저는 게스트 운영체제에 가상 운영 플랫폼을 제공하면서 게스트 운영체제를 관리한다. 시스템에서 호스트 하드웨어의 CPU, Memory 및 리소스가 있는 것처럼 보이기 때문에 가상 머신 또는 운영체제 각각은 자체 프로그램을 실행할 수 있다. 이러한 리소스들을 가상 시스템에 할당하는 것이 하이퍼바이저이다. 하이퍼바이..
가상화란 ? 하나의 물리적 리소스 위에서 여러 운영체제와 애플리케이션을 실행할 수 있도록 하는 소프트웨어 기술 가상화란 한 대의 시스템 하드웨어를 논리적으로 분할하여 가상의 시스템에 활용하는 개념이다. 가상 시스템들은 서로 독립적인 하나의 시스템으로 인지되기 때문에 주어진 하드웨어 리소스를 효율적으로 사용할 수 있다. 가상화의 핵심은 Isolation이다. 하나의 물리적 장치를 논리적으로 격리시킨다는 것이다. 제대로 격리가 이루어진다면 해당 가상 시스템 안에서 문제가 발생해도 그 밖의 영역으로는 영향을 미치지 않는다는 장점을 가진다. 과거에 쓰이던 하드웨어 가상화와는 달리 현재 쓰이는 소프트웨어적인 가상화 기술을 Hypervisor라고 한다. Hypervisor를 사용하는 가상화 프로그램으로 VMware..
출처 📌 HTTP 관련 질문 HTTP, HTTPS(TLS(SSL))/HTTP 1.1 2.0 3.0/ HTTP RESTful / HTTP 응답코드 HTTP : Hypertext Transfer Protocol, 서버와 클라이언트가 요청(Request)과 응답(Response) 형식으로 인터넷에서 데이터를 주고 받을 수 있는 프로토콜 HTTPS(TLS(SSL)) : HyperText Transfer Protocol over Secure Socket Layer, SSL/TLS 계층을 추가하여 클라이언트와 서버 사이에 오가는 모든 HTTP 프로토콜 메세지를 암호화하여 통신하는 프로토콜이다. 📌 HTTP 버전 HTTP/1.1 1. Persistent Connection : 지정한 timeout 동안 커넥션을 닫지..
def DFS(x): if x > 0: DFS(x - 1) print(x, end=' ') if __name__ == "__main__": n = int(input()) DFS(n) 다음과 같은 간단한 재귀함수가 있을 때 함수가 호출되어 리턴되는 순서는 다음과 같다. DFS(3) → DFS(2) → DFS(1) → DFS(0) DFS(0)은 x > 0을 만족하지 못하므로 종료되고 DFS(1)로 복귀한 후 stack 메모리에서 할당 해제된다. 이후 DFS(1)은 함수 내의 print()를 실행한뒤 DFS(2)로 복귀한다. DFS(2)도 마찬가지로 하단의 print()를 실행한뒤 DFS(3)으로 복귀한다. DFS(3)은 print()를 실행한뒤 처음 호출했던 main() 함수의 DFS()으로 복귀한다.
들어가기 앞서 .. 복습 ! 논리적 주소 vs 물리적 주소 논리적 주소(가상 주소) 프로세스마다 독립적으로 가지는 주소 공간 각 프로세스마다 0번지부터 시작 CPU가 보는 주소는 논리적 주소이다. 물리적 주소 메모리에 실제로 올라가는 위치 보통 메모리의 낮은 주소 영역에는 운영체제가 올라가고, 높은 주소 영역에는 사용자 프로세스가 올라간다. Address Binding (주소 바인딩) 어떤 프로그램이 메모리의 어느 위치에 즉, 어떤 물리적 주소에 load 될지를 결정하는 과정이다. 즉, 프로세스의 논리적 주소를 물리적 메모리 주소로 연결하는 작업을 말한다. 이는 binding하는 시점에 따라 분류된다. Symbolic Address → Logical Address → Address Binding → Ph..
OS는 할껀데 핵심만 합니다. 13편 가변 분할 메모리와 고정 분할 메모리, 단편화 과거에는 메모리가 정말 작았다. 요즘은 메모리가 차고 넘치지만, 프로그램도 그만큼 무거워지고 용량이 커졌다. 가령 스타2라는 게임을 플레이한다고 하자. 스타2 프로그램이 총 20GB인데, 메모 velog.io 페이징과 세그멘테이션에 대해 공부하던 중 고정 분할 방식과 가변 분할 방식의 차이점에 대해 잘 설명된 글을 찾았다. 연속 메모리 관리 프로그램 전체가 메모리에 연속적으로 할당되어야 하는 관리 기법 고정 분할 기법 : 메모리가 고정된 파티션으로 분할 → 내부 단편화 발생 동적(=가변) 분할 기법 : 파티션들이 동적 생성, 프로세스는 자신의 크기와 같은 파티션에 적재 → 외부 단편화 발생 가변 분할 방식 vs 고정 분할..