WinCNT

메모리 본문

데이터파일

파일은 메모리에 올라간다

(파일 --> 리소스 --> 메모리에 적재)

 

그럼 리소스를 어떻게 관리해야 할까?

프로그래머는 플레이 진행 상태만 파일 형태로 저장할 수 있다

(정확히는 DB지만 DB도 결국엔 파일과 다를 것이 없다)

그렇기 때문에 구조와 규칙을 먼저 만들 필요가 있다

 

그에 대해 필요한 것이 보통 DB와 그에 따른 SQL이다

SQL
Structured Query Language

몽고DB(NoSQL의 분류)
이미지 등의 리소스를 대용량으로 저장하고 빠르게 가져오게 하기 위한 DB(페이스북 등)

레디스(Redis)
메모리 DB - 메모리에 잔뜩 데이터를 적재해두는 것

결국은 설계다!!

 

메모리

메모리는 다음의 영역을 가진다

스택 영역, 힙 영역, 데이터 영역, 코드 영역

 

메모리 할당

프로세스가 기동이 되었을 때 OS가 디폴트 힙을 만들어준다

https://wincnt-shim.tistory.com/136

 

Memory and Object Pool

제프리 리처의 Windows via C/C++(복간판)을 참고하며 정리한 문서입니다. 메모리는 모든 영역 전반에 걸쳐서 있다 네트워크 또한 시스템의 하부로 볼 수도 있지? 않을까? Object Pool 오브젝트 = 객체,

wincnt-shim.tistory.com

 

General Architecture of a Operating System

운영 체제 링(개념도)

 

http://cis2.oc.ctc.edu/oc_apps/Westlund/xbook/xbook.php?unit=04&proc=page&numb=1 

 

Operating Systems Architecture

An operating system is a program that acts as an interface between a user of a computer and the computer resources. The purpose of an operating system is to provide an environment in which a user may execute programs. The hardware consists of the memory, C

cis2.oc.ctc.edu

 

커널과 운영 체제

Difference Between Microkernel and Monolithic Kernel (https_techdifferences.com)

왼쪽은 커널 영역이 작은 OS(Server는 기능을 제공하는 의미의 서버)

 

오른쪽은 시스템 콜을 하면 바로 커널 영역의 것을 바로 수행하지만

왼쪽은 그 서비스를 제공하는 프로세스와 통신할 확률(...)이 높다

 

하이브리드 커널

마이크로 커널과 모노리딕 커널 아키텍처라는 양면을 합쳐 놓은 커널 구조

 

Context Switch는 언제 발생하는가?

멀티태스킹, 인터럽트 핸들링, 사용자 모드와 커널 모드 간의 전환까지, 크게 3가지가 존재한다.

멀티태스킹(Multitasking)

실행 가능한 프로세스들이 운영체제의 스케줄러에 의해 조금씩 번갈아가며 수행되는 것을 말한다.
번갈아 가며 프로세스가 CPU를 할당 받는데 이때 Context Switching 한다.
사용자가 체감하기 힘든 속도로 Context Switching되며 프로세스가 처리되기 때문에 동시에 처리되는 것처럼 느껴진다.

인터럽트 핸들링(Interrupt handling)

인터럽트란 컴퓨터 시스템에서 예외 상황이 발생했을때 CPU에게 알려 처리할 수 있도록 하는 것을 말한다

인터럽트가 발생하면 Context Switching한다

I/O request : 입출력 요청

time slice expired : CPU 사용시간이 만료

fork a child : 자식 프로세스 생성

wait for an interrupt : 인터럽트 처리 대기

사용자와 커널 모드 전환(User and kernel mode switching)

사용자와 커널 모드 전환은 Context Switch가 필수는 아니지만 운영체제에 따라 발생할 수 있다

 

POSIX

이식 가능 운영 체제 인터페이스의 약자

(나름 멀티 플랫폼)

유닉스 계열 외에 MS 윈도우 NT는 POSIX 1.0에 준하는 POSIX 서브 시스템을 탑재하고 있으며,

POSIX 응용 프로그램을 서브 시스템에서 실행할 수 있다

 

정리

1. 메모리를 관리하는 것은 운영체제

 

2. 메모리 가상 주소 공간의 주소를 부여하는 것, 가상 주소 공간과 물리 메모리 간의 매핑이 필요하다

 

3. 프로세스마다 부여하는 공간 중

--> 힙 영역에서 관리되는 주소 공간이 존재한다

--> 기본 메모리 주소 공간

--> VirtualAllock : chunk단위로 메모리 제공(윈도우즈에서 제공하는 API)

--> chunk를 구획화해서 만들어진 힙 공간 = block

--> 프로그래머가 new(혹은 malloc)을 호출하면 주어진 기본 힙 공간에서 할당

--> 제공된 API 사용하면 프로그래머가 힙을 만들고 그 힙에서 할당도 가능함

 

4. 메모리 할당과 해제 비용, 그리고 메모리 단편화염두에 두어야 한다

 

5. 물리 메모리가상 주소 공간매핑페이징 기법이 사용된다

페이징이 되는 메모리를 페이징 메모리

페이징이 되지 않는 메모리를 NP 메모리라고 한다

어떤 프로세스가 메모리를 얼마나 사용하는가

 

6. 컨텍스트 스위칭은 언제 발생하는가를 염두에 둬야 한다

 

SSS