[운영체제] - 요구 페이징 (Demand Paging)
·
💻 Computer Science/운영체제
요구 페이징 (Demand Paging)프로세스가 요청할 때 필요로 하는 데이터를 메모리로 가져오는 것을 "요구 페이징(Demand Paging)"이라고 한다. 운영체제는 프로세스를 구성하는 모듈을 전부 메모리에 올리지 않고 필요한 모듈만 메모리에 올려 실행하고 필요할 때 메모리로 불러온다. 이는 "메모리를 효율적으로 관리하고 응답 속도를 향상하기" 위함이다. 이와 같이 사용자가 요구할 때 해당 페이지를 메모리로 가져오는 것을 요구 페이징이라고 한다. 반대로 앞으로 필요할 것이라고 예상되는 페이지를 미리 가져오는 것을 "미리 가져오기"라고 한다. 미리 가져오기를 한 데이터가 쓸모없게 되면 피해가 크기에 현대의 운영체제는 요구 페이지를 기본으로 사용한다.페이지 테이블 엔트리 (PTE: Page Table ..
[운영체제] - 가상 메모리 (Virtual Memory)
·
💻 Computer Science/운영체제
가상 메모리 시스템 (Virtual Memory System)가상 메모리 개념 (Concept of Virtual Memory)컴퓨터마다 실제 메모리의 크기는 다른데, "가상 메모리(Virtual Memory)" 개념은 크기가 서로 다른 물리 메모리에서 일관되게 프로세스를 실행할 수 있도록 한다. 가상 메모리의 크기는 컴퓨터 시스템이 가진 물리 메모리의 최대 크기로 한정된다. 그러나 이론적으로 가상 메모리의 크기는 무한대인데, 이는 "스왑(Swap)"으로 인해 가능하다. 스왑 영역은 하드디스크에 존재하지만 메모리 관리자가 관리하는 영역으로, 메모리의 일부이며 가상 메모리의 구성 요소 중 하나이다.  메모리 관리자는 프로세스를 실행하는 과정 중에, 물리 메모리가 부족한 상황이 생기면 부족한 부분을 스왑 영..
[운영체제] - 물리 메모리 관리 (Physical Memory Management)
·
💻 Computer Science/운영체제
메모리 관리 작업 (Memory Management)폰 노이만 구조에 따르면 프로그램은 메인 메모리에 올라와야 실행된다. 이때 메모리 관리 시스템(Memory Management System)은 여러 작업을 동시에 처리할 때 메모리를 관리하는 역할을 담당한다. 메모리 관리 작업은 크게 "가져오기", "배치", "재배치"로 구분된다.가져오기(Fetch): 실행할 프로세스와 데이터를 메모리로 가져오는 작업배치(Placement): 가져온 프로세스와 데이터를 메모리의 어떤 부분에 올려놓을지 결정하는 작업, 배치 작업 전 메모리를 어떤 크기로 분할할지 결정하는 것이 매우 중요하다. 이때, 메모리를 같은 크기로 자르는 것을 페이징(Paging), 프로세스의 크기에 맞게 자르는 것을 세그먼테이션(Segmentati..
[운영체제] - 교착 상태 (Deadlock)
·
💻 Computer Science/운영체제
교착 상태 (Deadlock)교착 상태(Deadlock)란 2개 이상의 작업이 동시에 이루어질 때, 다른 작업이 끝나기만 기다리며 더 이상 진행하지 못하는 상태를 말한다. 교착 상태는 시스템 자원을 사용하거나 잠금을 사용할 때, 발생할 수 있다. 교착 상태가 발생할 경우 강압적으로 문제를 해결해야 한다.교착 상태 필요조건교착 상태는 다음의 네 가지 조건을 동시에 만족해야 발생한다. 이 중 단 한 가지라도 충족되지 않으면 교착 상태는 발생하지 않는다. 상호 배제(Mutual Exclusion): 한 프로세스가 사용하는 자원은 다른 프로세스와 공유할 수 없는 배타적인 자원이어야 한다.비선점(Non-Preemption): 한 프로세스가 사용 중인 자원은 중간에 다른 프로세스가 빼앗을 수 없는 비선점 자원이어야..
[운영체제] - 임계구역 (Critical Section)
·
💻 Computer Science/운영체제
공유 자원 (Shared Resource)"공유 자원(Shared Resource)"이란 여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일들을 의미한다. 말 그대로 공동으로 이용되기에 누가 언제 데이터를 읽고 쓰는가에 따라 결과가 달라질 수 있다. 2개 이상의 프로세스가 공유 자원을 병행하여 읽거나 쓰는 상황을 "경쟁 조건(Race Condition)"이라고 한다. 경쟁 조건이 발생하면 공유 자원 접근 순서에 따라 실행 결과가 달라질 수 있기에 프로세스들의 공유 자원 접근 순서를 정해서 예상치 못한 문제가 발생하지 않도록 해야 한다.임계구역 (Critical Section)공유 자원 접근 순서에 따라 실행 결과가 달리지는 프로그램의 영역을 "임계구역(Critical Section)"이라고 한다. 임..
[운영체제] - 프로세스 간 통신 (IPC: Inter Process Communication)
·
💻 Computer Science/운영체제
프로세스 간 통신 (IPC: Inter Process Communication)프로세스나 쓰레드는 독립적으로 실행된다. 프로세스나 쓰레드가 협업하거나 데이터를 병렬로 처리하기 위해서는 데이터를 주고 받아야하는데, 하나의 프로세스에 속한 쓰레드끼리 데이터를 주고 받는 것은 쉽다. 그러나, 서로 다른 프로세스는 메모리 영역이 다르기에 공유된 메모리를 통하여 통신하는 것이 어렵다.  프로세스 간 통신(Inter Process Communication)은 운영체제가 제공하는 프로세스끼리 쉽게 데이터를 주고 받는 통신 방법이다. 대표적인 프로세스 간 통신의 종류는 다음과 같다.공유 메모리나 공유 파일을 이용한 통신: 가장 기본적인 프로세스 간 통신 방법으로, 일정한 메모리 영역이나 파일을 공유하고 이를 통하여 데..
[운영체제] - CPU 스케줄링 (CPU Scheduling)
·
💻 Computer Science/운영체제
CPU 스케줄링 (CPU Scheduling)스케줄링이란 여러 프로세스의 상황을 고려하여 CPU와 시스템 자원을 어떻게 배정할지 결정하는 일을 말한다. CPU 스케줄러(프로세스 스케줄러)는 프로세스가 생성된 후 종료될 때까지의 모든 상태 변화를 조정한다. CPU 스케줄러는 관리의 범주를 나누어 스케줄링을 진행하는데 규모에 따라 다음으로 분류된다.고수준 스케줄링(High Level Scheduling): 시스템 내의 전체 작업 수를 조절하는 것으로, 시스템 내에서 동시에 실행 가능한 프로세스의 총 개수를 결정한다. 또한 전체 시스템의 부하를 고려하여 작업의 시작 여부를 결정한다.저수준 스케줄링(Low Level Scheduling): 활성화된 프로세스들의 실제 진행을 담당한다.중간 수준 스케줄링(Middl..
loading