OS
-
[OS] 스레싱(thrashing)OS 2021. 12. 8. 10:02
스레싱(thrashing) 안녕하세요? 장장스입니다. 프로세스가 원활하게 수행되기 위해서는 일정 수준 이상의 페이지 프레임을 물리적 메모리에 할당 받아야 합니다. 프로세스가 동작하는데 필요한 최소한의 페이지 프레임을 받지 못한다면 성능에 문제가 발생할 수 있습니다. 스레싱(thrashing) 프로세스가 집중적으로 사용하는 페이지들의 집합이 메모리에 한꺼번에 적재되지 못하여 페이지 부재율(page fault)가 많이 발생하게 되고 CPU 이용율이 급격히 떨어지는 현상을 스레싱이라고 합니다. CPU 이용율이 낮다는 것은 메모리에 올라와 있는 프로세스의 수가 너무 적어 프로세스가 모두 I/O작업을 함으로써 준비 큐가 비는 경우가 발생했다는 것입니다. 따라서 CPU 이용율이 낮으면 운영체제는 메모리에 올라가는 ..
-
[OS] 페이지 교체 알고리즘 (FIFO, LRU, LFU, NRU, NUR)OS 2021. 12. 7. 10:15
페이지 교체 알고리즘 (FIFO, LRU, LFU, NRU, NUR) 안녕하세요? 장장스입니다. 가상 메모리 기법을 구현하는 방식 중 하나인 요구 페이징 방식은 페이지 부재가 발생하게 됩니다. 페이지를 교체하는 작업은 오버헤드를 동반하므로 가능하면 페이지 교체가 적게 일어나도록 하는 것이 좋습니다. 페이지 교체가 무엇인지, 페이지 교체 페이지 부재(page fault)가 발생하면 요청된 페이지를 디스크에서 메모리로 읽어와야 합니다. 이때 물리적 메모리에 빈 프레임이 존재하지 않을 수 있습니다. 이 경우 물리적 메모리에 올라와 있는 페이지 중 하나를 선택해서 디스크의 스왑 영역으로 보내야 합니다. 이와 같은 과정을 페이지 교체라고 합니다. 페이지 교체 알고리즘 어떠한 프레임에 있는 페이지를 디스크의 스왑 ..
-
[OS] 요구 페이징(가상메모리)OS 2021. 12. 6. 09:53
요구 페이징(가상메모리) 안녕하세요? 장장스입니다. 우리가 일반적으로 사용하는 컴퓨터의 메모리는 8GB, 16GB로 그 크기가 한정되어 있습니다. 그럼에도 우리는 많은 프로그램을 동시에 띄워 사용하고 있습니다. 운영체제는 한정된 메모리 공간을 효율적으로 사용하기 위해 가상메모리 기법을 사용합니다. 가상메모리 기법은 크게 요구 페이징 방식(demand paging)과 요구 세그먼테이션 방식(demand segmentation)으로 구현이 됩니다. 요구 세그먼테이션 방식의 경우에는 페이지드 세그먼테이션 기법을 사용하는 경우입니다. 대부분의 경우에는 요구 페이징 방식을 사용합니다. 요구 페이징(demand paging) 요구 페이징은 프로그램 실행 시 프로세스를 구성하는 모든 페이지를 한꺼번에 메모리에 올리는..
-
[OS] 메모리 불연속할당 - (3) 페이지드 세그먼테이션OS 2021. 12. 2. 19:16
[OS] 메모리 불연속할당 - (3) 페이지드 세그먼테이션 안녕하세요? 장장스입니다. 실제 물리적 메모리는 크게 연속할당 방식과 불연속할당 방식으로 나뉩니다. 오늘은 메모리 불연속할당 방식중 하나인 페이지드 세그먼테이션에 대해 정리해보겠습니다. 페이지드 세그먼테이션 앞선 두 가지 포스팅을 보면 (1) 페이징 기법 (2) 세그먼테이션 각각의 장단점을 갖고 있음을 알 수 있다. 페이지드 세그먼테이션은 페이징 기법과 세그먼테이션 기법의 장점을 취하는 주소 변환 기법이다. 세그먼테이션과 마찬가지로 프로세스를 의미 단위의 세그먼트로 분할한다. 단, 세그먼테이션 처럼 불규칙한 길이가 아니라 동일한 크기의 페이지들의 집합으로 구성하는 것이다. 페이지드 세그먼테이션 테이블 하나의 세그먼트를 여러개의 페이지로 구성되므로..
-
[OS] 메모리 불연속할당 - (2) 세그먼테이션OS 2021. 12. 1. 18:37
[OS] 메모리 불연속할당 - (2) 세그먼테이션 안녕하세요? 장장스입니다. 실제 물리적 메모리는 크게 연속할당 방식과 불연속할당 방식으로 나뉩니다. 오늘은 메모리 불연속할당 방식중 하나인 세그먼테이션에 대해 정리해보겠습니다. 세그먼테이션 세그먼테이션은 프로세스의 주소공간을 의미 단위의 세그먼트(segment)로 나누어 물리적 메모리에 올리는 방법이다. 프로세스의 주소 공간은 일반적으로 코드, 데이터, 스택 등의 의미 있는 단위들로 구성이 된다. 세그먼트는 이와 같은 주소 공간 전체를 크게는 하나의 세그먼트로 보기도 한다. 일반적으로 코드, 데이터, 스택 등의 기능 단위로 세그먼트를 정의하며, 프로그램을 구성하는 함수 하나하나를 각각 세그먼트라고 정의할 수도 있다. 주의할 점은 논리적 단위로 나눈 것이기..
-
[OS] 메모리 불연속할당 - (1) 페이징 기법OS 2021. 11. 30. 15:38
[OS] 메모리 불연속할당 - (1) 페이징 기법 안녕하세요? 장장스입니다. 실제 물리적 메모리는 크게 연속할당 방식과 불연속할당 방식으로 나뉩니다. 오늘은 메모리 불연속할당 방식중 하나인 페이징 기법에 대해 정리해보겠습니다. 메모리 불연속할당 기법 불연속할당 기법은 하나의 프로세스가 물리적 메모리의 여러 위치에 분산되어 올라갈 수 있는 메모리 할당 기법을 말합니다. 페이징 기법 페이징 기법은 프로세스의 주소 공간을 동일한 크기의 페이지 단위로 나누어 물리적 메모리의 서로 다른 위치에 페이지들을 저장하는 방식을 말한다. 페이징 기법에서는 각 프로세스의 주소 공간 일부는 백킹스토어에, 일부는 물리적 메모리에 혼재시키는 것이 가능하다. 페이징 기법에서는 물리적 메모리를 페이지와 동일한 크기의 프레임으로 미리..
-
[OS] 메모리 연속할당 - 고정분할 방식과 가변분할 방식OS 2021. 11. 28. 16:24
[OS] 메모리 연속할당 - 고정분할 방식과 가변분할 방식 안녕하세요? 장장스입니다. 실제 물리적 메모리는 크게 연속할당 방식과 불연속할당 방식으로 나뉩니다. 오늘은 메모리 연속할당 방식인 고정분할 방식과 가변분할 방식에 대해 정리해보겠습니다. 메모리 연속할당 기법 연속할당 기법은 프로세스를 메모리에 올릴 때 주소 공간을 메모리의 한 곳에 연속적으로 적재하는 방식입니다. 연속 할당 방식에서는 물리적 메모리를 다수의 분할로 나누어 하나의 분할에 하나의 프로세스가 적재되도록 합니다. 연속할당 기법은 크게 고정분할 방식과 가변분할 방식으로 나뉩니다. 고정분할 방식 고정분할 방식은 물리적 메모리를 정해진 개수만큼의 영구적인 분할로 나누어두고 각 분할에 하나의 프로세스를 적재하는 방식입니다. 분할의 크기는 모두 ..
-
[OS] 메모리 스왑(스와핑) #swapOS 2021. 11. 26. 09:59
[OS] 메모리 스왑(스와핑) #swap 안녕하세요? 장장스입니다. 오늘은 메모리 스와핑에 대해 정리해보겠습니다! 스와핑 (swapping) 메모리에 올라온 프로세스의 주소 공간 전체를 디스크의 스왑 영역(swap area)에 일시적으로 내려놓는 것을 말한다. 이때 스왑 영역은 백킹스토어(backing store)라고 부르며, 디스크 내에 파일 시스템과는 별도로 존재하는 일정 영역을 말한다. 잠깐❗ 스와핑이라는 개념은 프로세스가 종료되어 그 주소 공간을 디스크로 내쫓는 것이 아니라, 특정한 이유로 수행 중인 프로세스의 주소 공간을 일시적으로 메모리에서 디스크로 내려놓는 것을 의미한다. 역할 그렇다면 스와핑의 역할은 무엇일까? 스와핑은 다중 프로그래밍의 정도(degree of multiprogramming..
-
[OS] 주소 바인딩OS 2021. 11. 24. 09:58
[OS] 주소 바인딩 안녕하세요? 장장스입니다. 오늘은 주소 바인딩에 대해 정리해보겠습니다. 주소 바인딩 프로그램이 메모리에 적재되면 해당 프로세스의 독자적인 주소 공간이 생성됩니다. 이 주소를 논리적 주소(logical address) 혹은 가상 주소(virtual address)라고 합니다. 논리적 주소는 프로세스마다 독립적으로 할당되며 0부터 시작합니다. 물리적 주소(physical address)는 실제 물리적 메모리에 올라가는 위치를 말합니다. CPU가 기계어 명령을 수행하기 위해 논리적 주소를 통해 메모리 참조를 하게 되면 해당 논리적 주소가 물리적 메모리의 어느 위치에 매핑되는지 확인해야 합니다. 이렇게 프로세스의 논리적 주소를 물리적 메모리 주소로 연결시켜주는 작업을 '주소 바인딩'이라고 ..
-
[OS] 데드락 (Deadlock) - 교착상태OS 2021. 8. 16. 15:59
데드락 (Deadlock) Deadlock (교착상태) 란? 프로세스나 스레드가 결코 일어날 수 없는 특정 이벤트를 무한정 기다리는 상태를 말한다. 👌 데드락의 발생조건 4가지 데드락에 걸리기 위해서는 4가지 요건이 필요합니다. 1. 상호 배제 조건 (Mutual exclusion condition) 프로세스는 한번에 하나의 자원만 사용 할 수 있다. 사용 중인자원을 다른 프로세스가 사용하기 위해서는 사용중인 자원이 해제될 때까지 기다려야 한다. 2. 점유와 대기 조건 (hold-and-wait condition) 자원을 최소한 하나 보유하고 다른 프로세스에 할당되어 사용중인 자원을점유하기 위해 기다려야 한다. 3. 비선점 조건(nopreemption condition) 이미 할당되어 사용중인 자원을..