분류 전체보기 38

페이징(3)

페이지 교체 & 프레임 할당페이징에서 페이지 교체, 프레임 할당을 어떻게 하는지 알아보자. 요구 페이징 demand paging: 필요한 페이지만을 메모리에 적재하는 기법CPU가 특정 페이지에 접근하는 명령어를 실행해당 페이지가 현재 메모리에 있을 경우 (유효 비트가 1일 경우) CPU는 페이지가 적재된 프레임에 접근해당 페이지가 현재 메모리에 없을 경우 (유효 비트가 0일 경우) 페이지 폴트가 발생페이지 폴트 처리 루틴은 해당 페이지를 메모리로 적재하고 유효 비트를 1로 설정1을 수행순수 요구 페이징 pure demand paging: 아무런 페이지도 메모리에 적재하지 않은 채 실행하는 기법실행하는 순간부터 페이지 폴트가 계속 발생하고 어느 정도 페이지가 적재된 이후부터 발생 빈도가 떨어진다. 페이징 ..

운영체제 2024.07.18

페이징(2)

페이징에 대해 좀 더 알아보자. 페이지 크기와 내부 단편화외부 단편화를 해결하기 위해 페이징 기법을 사용하지만, 내부 단편화 문제가 남는다. 프로세스에게 할당하고 남는 페이지가 생긴다. 이때 메모리가 낭비되는것을 내부 단편화라 한다.  예를 들어 페이지 크기가 10KB이고 프로세스의 크기가 107KB라고 치자.그럼 마지막에 3KB만큼이 남게된다. 만약 페이지의 크기를 2KB로 줄이면? 1KB가 남게 된다. 이렇게 페이지의 크기를 줄이면 내부 단편화는 줄게 되겠지만, 전체 페이지의 수가 늘어가 페이지 테이블의 크기가 커져버려 테이블이 차지하는 공간이 낭비된다. 적당한 크기의 페이지 테이블이 만들어 지도록 조정할 필요가 있다. 대형 페이지기본적으로 설정된 페이지 보다 큰 페이지를 대형 페이지라고 한다. 대형..

운영체제 2024.07.09

페이징

페이징을 통한 가상 메모리 관리에 대해 알아보자. 가상메모리  가상 메모리는 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술이다.이를 가능케 하는 기법은 페이징이다. 페이징 기법을 통해 물리 메모리보다 큰 프로세스를 실행할 수 있으며 외부 단편화 문제도 해결 가능하다. 페이징외부 단편화의 근본적인 원인은 각기 다른 크기의 프로세스가 메모리에 연속적으로 할당되었기 때문임. 그러면 불연속적으로 적재할 수 있다면 외부 단편화는 발생할 가능성이 적어질 것이다. 페이징은 프로세스의 논리 주소 공간을 페이지라는 일정한 단위로 자르고, 메모리 물리 주소 공간을 프레임이라는 페이지와 동일한 크게의 일정한 단위로 자른 뒤 페이지를 프레임에 할당하..

운영체제 2024.07.09

연속 메모리 할당

연속 메모리 할당프로세스에 연속적인 메모리 공간을 할당하는 방식 스와핑현재 실행되지 않는 프로세스들을 임시로 보조기억장치 일부 영역으로 쫒아내고, 그렇게 해서 생긴 메모리상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식을 말한다. 스왑 영역: 프로세스들이 쫒겨나는 보조기억장치의 일부 영역스왑 아웃: 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것스왑 인: 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨오는 것 스왑 아웃 되었던 프로세스가 다시 스왑 인 될때 그 전의 물리 주소와는 다른 주소에 적재가 가능함. 스와핑을 통해 실제 메모리의 크기가 프로세스들이 요구하는 메모리 크기보다 작아도, 프로세스들을 동시에 실행할 수 있다.   메모리 할당비어 있는 메모리 공간에 프로세스를 ..

운영체제 2024.06.23

[UE5] Game Abillity System

GameAbilitySystem을 Actor에 추가하려면 AbilitySystemComponent를  추가해줘야 한다. 캐릭터 스탯등을 Attribute라고 하고 그것들을 모아둔 것을 Attribute Set이라고 하자. 그러면 Character가 ASC(Ability System Component), AS(Attribute Set)을 가지고 있어야 할까?  다음처럼 Pawn이 ASC, AS를 가지고 있다고 해보자. 만약 Pawn이 제거되면 ASC, AS 모두 제거된다. 불필요하게 객체를 제거했다 다시 생성하게 된다. Actor 대신 다른 객체가 ASC, AC를 가지고 있으면 어떻게 될까. 예상 가능한 대로 Pawn이 파괴되더라도 ASC와 AC는 계속 유지된다! Pawn만 바꿔서 연결해 주면 된다. 다음..

언리얼/GAS 2024.06.22

동기화 기법

동기화를 위한 대표적인 도구는 뮤텍스 락, 세마포, 모니터가 있다. 뮤텍스 락탈의실로 비유를 해보자.탈의실이라는 임계 구역, 사람이라는 프로세스가 있다.만약 자물쇠가 걸려 있다면 탈의실엔 사람이 있다고 판단할 것이다. 이 자물쇠 기능을 코드로 구현한 것이 뮤텍스 락:Mutex lock:MUTual EXclusive lock이다.상호 배제를 위한 동기화 도구이다. 뮤텍스 락의 단순한 형태는 하나의 전역변수와 두 개의 함수로 구현 가능하다.자물쇠: 전역 변수 lock임계 구역을 잠그는 역할: acquire 함수잠금을 해제하는 역할: release 함수acquire 함수는 프로세스가 임계 구역에 진입하기 전에 호출하는 함수release 함수는 임계 구역에서의 작업이 끝나고 호출하는 함수acquire() { w..

운영체제 2024.06.19

동기화 - Synchronization

동기화협력하여 실행되는 프로세스들은 실행 순서와 자원의 일관성을 보장해야 하기에 반드시 동기화되어야 한다.그렇다면 프로세스 동기화란 무엇일까?간단히 말해 프로세스들 사이의 수행 시기를 맞추는 것이다. 수행 시기를 맞추어 프로세스 간에 정보를 일치시키는 것이다. 수행 시기를 맞춘다엔 크게 두 가지를 말한다.실행 순서 제어: 프로세스를 올바른 순서대로 실행상호 배제: 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근실행 순서 제어를 위한 동기화 실행 순서 제어를 위한 동기화는 쉽게 예를 들 수 있다. Wirter라는 프로세스와 Reader라는 프로세스가 동시에 실행 중이다.Writer는 Book.txt 파일에 값을 저장하는 프로세스, Reader는 저장된 값을 읽어 들이는 프로세스이다.Reader 가..

운영체제 2024.06.17

[UE5] Interface

언리얼에서 인터페이스를 사용하는 방법에 대해 정리해보자. 커서를 가져다 대면 highlight 시켜주는 기능을 위해 인터페이스를 사용한다.  위 기능 구현을 위해 한번 간략하게 정리해보자.커서 아래에 뭐가 있는지를 일단 추적한다.액터가 있다면 액터의 인터페이스를 통해 highlight해준다. EnemyInterface라는 C++ 인터페이스 클래스를 만든다. // Copyright mumu#pragma once#include "CoreMinimal.h"#include "UObject/Interface.h"#include "EnemyInterface.generated.h"// This class does not need to be modified.UINTERFACE(MinimalAPI)class UEnemy..

언리얼 2024.06.15