메모리 불연속 할당(Noncontiguous memory allocation) 메모리 불연속 할당은 하나의 프로세스가 메모리의 여러 위치에 분산되어 올라갈 수 있는 메모리 할당 기법을 말한다. 들어가며 이전 게시글에서 운영체제 메모리 할당 방식과 스와핑, 스레싱, 페이지폴트와 같은 개념을 알아보았다. https://brightstarit.tistory.com/16 운영체제(OS) 메모리 관리 - (1) 연속 메모리 할당 가상 메모리 가상 메모리는 메모리 관리 기법의 하나로 컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화하여 이를 사용하는 사용자들에게 매우 큰 메모리로 보이게 만드는 것을 말한다. 이 brightstarit.tistory.com 이번 포스팅에서는 메모리 불연속 할당 중 페이징 방식에 대해..
가상 메모리 가상 메모리는 메모리 관리 기법의 하나로 컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화하여 이를 사용하는 사용자들에게 매우 큰 메모리로 보이게 만드는 것을 말한다. 이때 가상적으로 주어진 주소를 가상 주소(logical address)라고 하며, 실제 메모리상에 있는 주소를 물리 주소(physical address)라고 한다. 가상 주소는 메모리관리장치(MMU)에 의해 실제 주소로 변환되며, 이 덕분에 사용자는 실제 주소를 의식할 필요 없이 프로그램을 구축할 수 있게 된다. 물리 메모리를 사용하는 최소 크기 단위를 프레임(frame)이라고 하고 가상 메모리를 사용하는 최소 크기 단위를 페이지(page)라고 한다. 스와핑(Swapping) 만약 가상 메모리에는 존재하지만 실제 메모리인 RA..
캐시란? 캐시(cache)는 데이터를 미리 복사해 놓는 임시 저장소이자 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리를 말한다. 이를 통해 데이터를 접근하는 시간이 오래 걸리는 경우를 해결하고 무언가를 다시 계산하는 시간을 절약할 수 있다. 실제로 메모리와 CPU 사이의 속도 차이가 너무 크기 때문에 그 중간에 레지스터 계층을 둬서 속도 차이를 해결한다. 이렇게 속도차이를 해결하기 위해 계층과 계층사이에 있는 계층을 캐싱 개층이라고 한다. 예를 들어 캐시 메모리와 보조기억장치 사이에 있는 주기억장치를 보조기억장치의 캐싱 계층이라고 할 수 있다. 지역성의 원리 캐시 계층을 두는 것 말고 캐시를 직접 설정할 수 있다. 이는 자주 사용하는 데이터를 기반으로 설정해야 한다. 그렇다..
메모리 계층 구조(Memory Hierarchy)란? 메모리 계층 구조는 메모리를 속도, 용량, 비용간의 절충 관계를 고려하여 필요에 따라 여러 가지 종류로 나타낸 구조를 의미합니다. 계층 구조에서 위쪽으로 올라갈수록 CPU 코어에 가까워지기 때문에 CPU가 메모리에 더 빨리 접근할 수 있지만, 그만큼 비용이 많이 들며 저장 용량이 적습니다. 레지스터 CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 기억장치이다. 프로세서에 위치한 고속 메모리로, 프로세스가 바로 사용할 수 있는 데이터(소량의 데이터, 처리 중인 중간 결과)를 담고 있는 영역이다. 컴퓨터에서 4대 주요 기능(기억, 해석, 연산, 제어)을 관할하는 장치이다. CPU는 자체적으로 데이터를 저장할 방법이 없으므로 메모리로 직접 데..
운영체제(OS) 운영체제는 컴퓨터의 자원들을 효율적으로 관리하며 사용자가 컴퓨터를 편리하고 효율적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임이다. 운영 체제는 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록 제공해 준다. 운영체제의 구조 커널 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것으로, 자동차가 운영체제라고 한다면 엔진이 커널에 해당한다. 세단, 스포츠카, SUV 등 자동차의 종류는 다양한 것처럼 운영체제의 종류는 다양하지만 성능을 결정하는 것은 커널이 좌우한다. 컴퓨터와 전원을 켜면 운영체제는 이와 동시에 수행된다. 소프트웨어가 컴퓨터 시스템에서..
critical section의 동기화 문제를 해결하기 위해서는 세 가지 조건을 만족해야 한다. mutual exclution (상호 배제) bounded wating (한정된 대기) prograss(진행의 융통성) 2023.04.22 - [백엔드/운영체제] - 경쟁 조건(Race Condition)과 임계 구역(Critical Section) 경쟁 조건(Race Condition)과 임계 구역(Critical Section) 프로세스 간 메시지를 전송하거나, 공유메모리를 통해 공유된 자원에 여러 개의 프로세스가 동시에 접근하면 임계 구역(Critical Section) 안에서 경쟁 조건(Race Condition)이 생길 수 있다. 이를 해결하 brightstarit.tistory.com critica..
프로세스 간 메시지를 전송하거나, 공유메모리를 통해 공유된 자원에 여러 개의 프로세스가 동시에 접근하면 임계 구역(Critical Section) 안에서 경쟁 조건(Race Condition)이 생길 수 있다. 이를 해결하기 위해 데이터를 한번에 하나의 프로세스만 접근할 수 있도록 제한을 두는 동기화 방식을 취해야 한다. 동기화 도구에는 대표적으로 뮤텍스(Mutex)와 세마포어(Semaphore)가 있다. 이들은 모두 공유된 자원의 데이터를 여러 스레드/프로세스가 접근하는 것을 막는 역할을 한다. 경쟁 조건 (Race Condition) 경쟁 조건(race condition)은 2개 이상의 프로세스가 공유 자원을 병행적으로 읽거나 쓰는 상황을 말하며, 공유 자원 접근 순서에 따라 실행 결과가 달라지는 상..
프로세스(Process) Process is a program in execution 프로세스란 실행 중에 있는 프로그램을 의미한다. 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 객체)이며 스케줄링의 대상이 되는 작업(task)과 같은 의미로 쓰인다. 하드디스크에 있는 프로그램을 실행하면, 실행을 위해서 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라가게 된다. 이 순간부터 프로세스라 불린다. 특징 각 프로세스는 별도의 주소 공간에서 실행되며, 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다. Code : 프로그램을 실행시키면 실행파일 내에 존재하는 명령어가 메모리상에 올라가야 프로그램을 동작시킬 수 있다. 이 명령어들을 위해..