[운영체제(OS)] 가상 메모리 - (5) 스레싱과 프레임 할당
2022. 3. 3. 03:14
CS/운영체제
0.🚶들어가며 이전 글에서 페이지 교체 알고리즘에 대해 알아보았습니다. 이번 글에서는 스레싱이 무엇인지, 프로세스에게 프레임 할당하는 방식은 어떤 것이 있는지에 대해 알아보도록 하겠습니다. 1.📖스레싱 가상 메모리 시스템에서는 프로세스들이 프레임을 할당받습니다. 만약 많은 수의 프로세스들이 실행 중이라 각각 프로세스들에게 충분한 수의 프레임을 할당하지 못한다면 어떻게 될까요? 페이지 부재가 많이 발생하여 계속해 스왑 영역을 다녀오는 상황이 생길 것입니다. 이런 상황이 벌어지면 하드디스크 입출력이 너무 잦아져 작업이 멈춘 것 같은 상태가 되어버립니다. 이를 스레싱이라고 합니다. 스레싱은 메모리의 크기가 일정할 경우 멀티프로그래밍 정도에 밀접한 관계가 있습니다. 멀티 프로그래밍 정도가 너무 높으면 스레싱이 ..
[운영체제(OS)] 가상 메모리 - (4) 페이지 교체 알고리즘
2022. 3. 3. 01:08
CS/운영체제
0.🚶들어가며 [운영체제(OS)] 가상 메모리 - (3) 요구 페이징(Demand Paging) 0.🚶들어가며 지난 글들에서 살펴보았던 페이징과 세그멘테이션 기법은 MMU의 역할 중 배치(Placement)에 대한 내용이었습니다. 이번 글에서는 가져오기(Fetch) 정책에 대한 내용을 다뤄보도록 하겠 kjhoon0330.tistory.com 지난 글에서는 요구 페이징, 페이지 부재, 지역성 등에 대한 개념을 살펴보았습니다. 이번 글에서는 페이지 부재를 최소화하기 위해서 사용하는 페이지 교체 알고리즘의 개념과 종류를 알아보도록 하겠습니다. 1.📖페이지 교체 알고리즘이란? 프로세스가 요구한 페이지가 메모리에 없을 경우 페이지 부재가 발생합니다. 만약 메모리까지 꽉 차있는 상황이라면 대상 페이지를 정하고 이를..
[운영체제(OS)] 가상 메모리 - (3) 요구 페이징(Demand Paging)
2022. 3. 2. 21:22
CS/운영체제
0.🚶들어가며 지난 글들에서 살펴보았던 페이징과 세그멘테이션 기법은 MMU의 역할 중 배치(Placement)에 대한 내용이었습니다. 이번 글에서는 가져오기(Fetch) 정책에 대한 내용을 다뤄보도록 하겠습니다. 1.📖Demand Paging (요구 페이징)이란? 이전 글에서도 살펴보았듯 프로세스는 자신이 필요한 모든 데이터를 메모리 위에 올려두지 않는 경우가 많습니다. 가상 메모리 시스템을 사용하여 메모리와 스왑 영역을 가지고 작업을 진행시키죠. 이러한 방식으로 얻을 수 있는 장점들에 대해서는 아래 글에서 다루어 보았습니다. [운영체제(OS)] 가상 메모리 - (1) 가상 메모리와 페이징 기법 0.🚶들어가며 이번 글에서는 가상 메모리가 무엇인지에 대해 알아보고 가상 메모리를 구현하는 방법 중 하나인 페..
[운영체제(OS)] 물리 메모리 관리 - (2) 멀티 프로그래밍 환경에서의 메모리 할당
2022. 2. 28. 17:01
CS/운영체제
0.🚶들어가며 지난 글에서는 메모리 관리와 관련된 개념과 단일 프로그래밍 환경에서의 메모리 할당에 대해 배웠습니다. 이번 글에서는 멀티프로그래밍 환경에서의 메모리 할당에 대해 알아보겠습니다. 한 번에 한 프로세스만 실행되는 메모리 구조에서는 오버레이와 스왑 정도로 메모리 관리가 충분할 수도 있습니다. 하지만 메모리에 여러 프로세스가 동시에 올라오면 문제가 조금 달라집니다. 훨씬 복잡한 환경으로 변하는 것이죠. 또한 프로세스들은 서로 크기가 달라 메모리에 어떤 방식으로 적재할지도 고민해봐야 합니다. 이와 관련된 내용에 대해 알아보도록 하겠습니다. 1.📚메모리 분할 방식 메모리 분할 방식에는 크게 가변 분할, 고정 분할 방식이 있습니다. 아래 그림을 살펴보도록 합시다. 1) 가변 분할 방식 가변 분할 방식은..
[운영체제(OS)] 프로세스 동기화 - (1) 프로세스 동기화 개념
2022. 2. 26. 00:16
CS/운영체제
0.🚶들어가며 프로세스 동기화에 대한 내용을 다뤄보려 합니다. 첫 번째 주제로는 동기화가 무엇인지, 동기화가 왜 필요한지, 관련 개념은 어떤 것이 있는지에 대해 소개해보도록 하겠습니다. 1.❓동기화란 무엇인가❓ 동기화 필요성에 대한 이해를 돕기 위해 한 예시를 들어보겠습니다. 동시에 실행되고 있는 두 코드가 있다고 가정해봅시다. 언뜻 보면 전혀 문제가 없어 보이는 코드입니다. 하지만 다음과 같은 순서대로 실행된다면 문제가 발생합니다. 좌측 코드 라인1 > 우측 코드 라인1 > 우측 코드 라인2 > 좌측 코드 라인2 (물약 먹는 코드 + 공격받는 코드)를 실행시켰을 시, health의 최종 값은 기존보다 40(50 - 10) 증가되어있음을 기대하는데 위와 같은 순서대로 실행된다면 health는 50이 증가..
[운영체제(OS)] CPU 스케줄링 - (2) 스케줄링 알고리즘
2022. 2. 25. 13:42
CS/운영체제
0.🚶들어가며 지난 글에서는 CPU 스케줄링이 무엇인지에 대해 알아보았습니다. 이번 글에서는 CPU 스케줄링 성능을 측정할 때 척도는 무엇이 있는지, 스케줄링 알고리즘은 어떤 것들이 있는지에 대해 알아보겠습니다. 1.⏰CPU 스케줄링 성능 척도 스케줄링 알고리즘에 대해 알아보기 전, 각 알고리즘의 성능은 어떤 기준으로 측정할 것인지에 대해 먼저 알아보겠습니다. CPU 스케줄링의 성능은 시스템 입장에서의 성능과 사용자 입장에서의 성능, 두 가지로 나누어 고려해볼 수 있습니다. 시스템 입장에서는 CPU를 쉬지 않고 최대한 많이 돌리는 것이 중요하고, 사용자 입장에서는 자신이 요청한 작업이 빨리 처리되는 것이 중요합니다. 하지만 두 입장 모두를 만족시키는 것이 쉽지 않습니다. 따라서 상황에 맞게 CPU 스케줄..
[운영체제(OS)] 운영체제란 무엇인가?
2022. 2. 11. 22:57
CS/운영체제
1. 운영체제란 무엇인가? 운영체제 공부를 시작하며 우선 운영체제가 무엇인지에 대한 글을 정리해보려 합니다. 운영체제는 윈도우, 맥, 안드로이드, IOS 등과 같이 실생활에서도 자주 들어볼 수 있는 단어와 밀접한 관계가 있습니다. 운영체제는 컴퓨터를 동작시키는 데 도움을 주는 소프트웨어인데 사실 운영체제가 없어도 컴퓨터를 동작시킬 수 있습니다. 하지만 컴퓨터 사용자가 하드웨어 자체를 다룬다는 것은 쉽지 않은 일이기 때문에 기본적으로 컴퓨터에 운영체제를 탑재하는 것입니다. 운영체제는 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어로 하드웨어 + 운영체제를 컴퓨터 시스템이라고도 부릅니다. 우리가 사용하는 각종 소프트웨어들은 바로 이 컴퓨터 시스템 위에서 작동하게 됩니다. 2. 운영체제의 역할은 무엇인가? 운..