본문 바로가기
반응형

cs공부/운영체제27

운영체제 - 스택 메모리, 힙 메모리 자세히 알아보기 +) args란 메모리 구조에 대해 알아보는데 문서로만 읽고서는 잘 이해가 가지 않아 실제 코드로 이해하고 싶어 게시글을 쓰게 되었다. 우리가 흔히 메모리의 구조에 대해 구글링 해보면 아래와 같은 형식이 나온다.01 코드 영역텍스트 영역이라고도 불린다. 기계어로 이루어진 명령어가 저장된다. 코드 영역에는 데이터가 아닌 CPU가 실행할 명령어가 담기기 때문에 쓰기가 금지된 read-only공간이다. 실행되는 프로그램의 코드가 저장되는 메모리 영역02 데이터 영역프로그램이 실행되는 동안 유지되어야 하는 데이터가 저장되는 공간이다. 대표적으로 전역변수와 정적 변수 등이 이영역에 해당된다. 이 변수들은 프로그램이 시작될때 할당되고 프로그램 종료시 소멸된다.03 힙 영역프로그래머가 직접 공간을 할당/해제하는 메모리 영역이다. 프.. 2024. 5. 15.
운영체제 - 페이지 교체와 프레임 할당(요구 페이징, 페이지 교체 알고리즘(FIFO,최적,2차 기회, LRU), 스래싱, 프레임 할당) 요구 페이징(Demand Paging) 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법이다. 이름 그대로 요구되는 페이지만 적재한다. 순수 요구 페이징(Pure Demand Paging) 아무런 페이지도 메모리에 적재하지 않은 채 무작정 실행부터 할 수도 있다. 이 경우 프로세스의 첫 명령어를 실행하는 순간부터 페이지 폴트가 계속 발생하게 되고 실행에 필요한 페이지가 어느 정도 적재된 이후부터는 페이제 폴트 발생 빈도가 떨어진다. 이를 순수 요구 페이징기법이라고 한다. 요구 페이징 시스템이 안정적으로 작동하려면 해결되어야할 2가지 문제 페이지 교체 요구 페이징 기법으로 페이지들을 적재하다보면 언젠간 메모리가 가득 차게 된다. 당장 실행에 필요한 페이지를 적재하려면 적재된 페.. 2024. 3. 4.
운영체제 - 페이징의 쓰기 시 복사(copy on write), 계층적 페이징 이론적인 fork() 프로세스는 기본적으로 자원을 공유하지 않는다. 그러므로 부모 프로세스가 적재된 별도의 공간에 자식 프로세스가 통째로 복제되어 적재된다. 때문에 프로세스 생성 시간이 지연되고 메모리가 낭비된다. 쓰기 시 복사(copy on write) 부모 프로세스와 동일한 자식 프로세스가 복제되어 생성되면 자식 프로세스는 부모 프로세스와 동일한 프레임을 가리킨다. 만약 쓰기 작업이 없다면 이 상태 유지된다. 부모 프로세스/자식 프로세스 둘 중 하나가 페이지에 쓰기 작업 수행 시 해당 페이지는 별도의 공간으로 복제되므로 프로세스 생성 시간 절, 메모리 절약이 된다. 프로세스 테이블의 크기는 생각보다 작지 않다. 프로세스를 이루는 모든 페이지 테이블 엔트리를 메모리에 두는 것은 큰 낭비이다. 프로세스를.. 2024. 3. 4.
운영체제 - CPU 스케줄링(우선순위, 스케줄링 큐, 선점 및 비선점형 스케줄링) CPU 스케줄링이란? 운영체제가 프로세스들에게 공정하고 합리적으로 CPU자원을 배분하는 것이다. 가장 공정한 CPU 스케줄링은 무엇일까? CPU를 사용하고 싶ㅇ하는 프로세스들에게 차례로 돌아가면 CPU를 이용하게 하는 방법이 있다. 즉 먼저 말한 프로세스 순서대로 CPU를 이용하게 하는 방법이다. 하지만 이는 좋은 방법이 아니다. 프로세스마다 우선순위가 다르기 때문이다. 예를 들어 입출력 작업이 많은 프로세스(=입출력 집중 프로세스)의 우선순위는 CPU작업이 많은 프로세스(=CPU 집중 프로세스)보다 우선순위가 높다. CPU 버스트(CPU burst)는 CPU를 이용하는 작업 입출력 버스트(I/O burst)는 입출력을 기다리는 작업이라 부른다. 즉 프로세스는 일반적으로 CPU버스트와 입출력 버스트를 반.. 2024. 1. 21.
운영체제 - 병렬처리(Parallel Loops, Parallel Invoke,Parallel Partitioning) 순차처리 한 번에 하나씩 처리하는 방식, 이는 서로 독립적으로 실행한다. 병렬처리 여러 작업을 동시에 처리하는 방식, 이는 작업을 분할하면서 동시에 실행할 수 있다. 그러므로 실행 순서가 보장 되지 않는다. Parallel 클래스 병렬처리를 위한 기능을 제공하는 클래스 public static class Parallel 01 Parallel Loops 배열 또는 컬렉션의 요소를 병렬적으로 처리한다. 작업의 실행 순서와 출력 순서가 보장되지 않는다. for public static System.Threading.Tasks.ParallelLoopResult For (int fromInclusive, int toExclusive, Action body); 매개변수 fromInclusive : 시작 인덱스(포함.. 2023. 6. 6.
운영체제 - TLS(Thread Local Storage) 게임 개발 요소 게임 로직 : 플레이어의 입력처리, 캐릭터의 움직임, 퀘스트 로직과 같은 게임의 동작 및 규칙 로직 : 게임실행하는 과정에서 발생하는 정보,경고,오류 등을 기록 데이터베이스 : 플레이어정보, 아이템 정보등 게임에서 사용되어지는 데이터의 저장과 관리 클라이언트 섹션 : UI, 그래픽, 사운드, 네트워크등 게임을 실제로 실행되는 플랫폼에서의 사용자와의 상호작용을 담당 락을 모든 부분에다가 배치하면 발생하는 모든 문제들을 간단하게 해결할 수 있겠지만 사실은 치명적인 문제가 있다. 한쪽에 몰리는 경우 처리하기가 매우 어려워진다. 예를 들어 모든 유저들이 분산되서 위치하면 좋은데 다른 지역에 몰려 있는 경우 클라이언트 세션에서 같은 게임로직에 packet을 쏘게 된다. Lock의 개념이 상호배타적.. 2023. 6. 6.
반응형