[운영체제(OS)] 가상 메모리 - (3) 요구 페이징(Demand Paging)
2022. 3. 2. 21:22
CS/운영체제
0.🚶들어가며 지난 글들에서 살펴보았던 페이징과 세그멘테이션 기법은 MMU의 역할 중 배치(Placement)에 대한 내용이었습니다. 이번 글에서는 가져오기(Fetch) 정책에 대한 내용을 다뤄보도록 하겠습니다. 1.📖Demand Paging (요구 페이징)이란? 이전 글에서도 살펴보았듯 프로세스는 자신이 필요한 모든 데이터를 메모리 위에 올려두지 않는 경우가 많습니다. 가상 메모리 시스템을 사용하여 메모리와 스왑 영역을 가지고 작업을 진행시키죠. 이러한 방식으로 얻을 수 있는 장점들에 대해서는 아래 글에서 다루어 보았습니다. [운영체제(OS)] 가상 메모리 - (1) 가상 메모리와 페이징 기법 0.🚶들어가며 이번 글에서는 가상 메모리가 무엇인지에 대해 알아보고 가상 메모리를 구현하는 방법 중 하나인 페..
[운영체제(OS)] 가상 메모리 - (2) 세그멘테이션 기법과 세그멘테이션-페이징 혼용 기법
2022. 3. 1. 18:20
CS/운영체제
0.🚶들어가며 지난 글에서 가상 메모리와 페이징 기법에 대해 알아보았습니다. 이번 시간에는 세그멘테이션 기법과 세그멘테이션-페이징 혼용 기법에 대해 알아보도록 하겠습니다. 1.📖세그멘테이션 기법 세그멘테이션 기법은 가변 분할 방식을 이용한 가상 메모리 관리 기법으로, 물리 메모리를 프로세스 크기에 따라 가변적으로 나누어 사용합니다. 세그멘테이션 기법의 구현과 주소 변환은 어떤 방식으로 이루어지는지 알아보겠습니다. 1) 세그멘테이션 기법 구현 위 사진은 세그멘테이션 기법과 세그멘테이션 테이블에 대해 보여주고 있습니다. 세그멘테이션 테이블에는 limit 값과 address 값이 존재합니다. address값은 페이징 테이블의 프레임과 비슷한 개념입니다. 페이징 테이블에는 없었던 limit 값은 세그먼트가 메..
[운영체제(OS)] 가상 메모리 - (1) 가상 메모리와 페이징 기법
2022. 3. 1. 18:19
CS/운영체제
0.🚶들어가며 이번 글에서는 가상 메모리가 무엇인지에 대해 알아보고 가상 메모리를 구현하는 방법 중 하나인 페이징 기법에 대해 알아보도록 하겠습니다. 1.💻가상 메모리..? 컴퓨터마다 메인 메모리(물리 메모리)의 크기가 다릅니다. 그렇다면 크기가 3GB인 프로세스를 2GB의 메모리만 가지고 있는 컴퓨터에서 실행하고 싶을 때는 어떻게 해야 할까요? 크기가 다른 물리 메모리에서도 일관되게 프로세스를 실행할 수 있게 도와주는 것이 바로 가상 메모리 기술입니다. 물리 메모리의 크기와 상관없이 메모리를 이용할 수 있도록 지원해주는 기술이죠. 가상 메모리 기술 덕분에 프로그래머는 물리 메모리 크기에 구애받지 않고 편하게 프로그램을 만들 수 있게 되었습니다. 현대 메모리 관리의 가장 큰 특징은 물리 메모리의 크기와 ..
[운영체제(OS)] 물리 메모리 관리 - (2) 멀티 프로그래밍 환경에서의 메모리 할당
2022. 2. 28. 17:01
CS/운영체제
0.🚶들어가며 지난 글에서는 메모리 관리와 관련된 개념과 단일 프로그래밍 환경에서의 메모리 할당에 대해 배웠습니다. 이번 글에서는 멀티프로그래밍 환경에서의 메모리 할당에 대해 알아보겠습니다. 한 번에 한 프로세스만 실행되는 메모리 구조에서는 오버레이와 스왑 정도로 메모리 관리가 충분할 수도 있습니다. 하지만 메모리에 여러 프로세스가 동시에 올라오면 문제가 조금 달라집니다. 훨씬 복잡한 환경으로 변하는 것이죠. 또한 프로세스들은 서로 크기가 달라 메모리에 어떤 방식으로 적재할지도 고민해봐야 합니다. 이와 관련된 내용에 대해 알아보도록 하겠습니다. 1.📚메모리 분할 방식 메모리 분할 방식에는 크게 가변 분할, 고정 분할 방식이 있습니다. 아래 그림을 살펴보도록 합시다. 1) 가변 분할 방식 가변 분할 방식은..
[운영체제(OS)] 물리 메모리 관리 - (1) 메모리 관리에 대하여.
2022. 2. 28. 16:59
CS/운영체제
0.🚶들어가며 모든 프로그램은 메인 메모리에 올라와서 실행됩니다. 메모리는 한정된 자원으로 이를 활용하는 방법에 따라 성능에 큰 영향을 줄 수 있습니다. 오늘날 시분할 시스템에서 운영체제를 포함한 여러 프로그램들이 메모리에 올라와 실행되기 때문에 이를 관리하는 일은 쉬운 개념이 아닙니다. 메모리에 올라가는 프로세스 입장에서는 자신의 작업이 편리해지길 원하며 메모리를 관리하는 관리자 입장에서는 관리의 편리함을 원하죠. 프로세스와 메모리 관리자 각각의 상충되는 요구를 어떻게 타협해나가며 오늘날의 메모리 관리 시스템을 만들어 나아가는지에 대해 알아보도록 하겠습니다. 1.📖메모리 관리자 (MMU) 메모리 관리는 메모리 관리자가 합니다. 메모리 관리자는 MMU(Memory Manage Unit)이라는 하드웨어입니..
[운영체제(OS)] 데드락(Deadlock) - (2) 데드락 해결 방법
2022. 2. 27. 22:47
CS/운영체제
0.🚶들어가며 이전 글에서 데드락이 무엇인지에 대해 알아보았습니다. 이번 글에서는 데드락을 해결하는 방법에 대해 알아보겠습니다. 데드락을 해결하는 방법을 크게 네 가지로 나눠 소개해볼 예정입니다. 데드락 예방 데드락 회피 데드락 검출과 회복 데드락 무시 위 네 가지 방법이 각각 무엇인지, 장단점은 무엇인지를 위주로 설명드리도록 하겠습니다. 1.🤚데드락 예방 (Deadlock prevention) 이전 글에서 데드락을 일으키는 조건에는 네 가지가 있다고 했습니다. 네 가지 중 하나라도 충족하지 않으면 데드락은 발생하지 않는 것이죠. 데드락 예방은 네 가지 조건 중 하나라도 충족시키지 못하게 하여 데드락이 발생하지 않도록 하는 해결방법입니다. 각 조건을 하나씩 보면서 내용을 알아보도록 하죠. 1. 상호 배제..
[운영체제(OS)] 데드락(Deadlock) - (1) 데드락 개념과 발생 조건
2022. 2. 27. 20:02
CS/운영체제
0.🚶들어가며 프로세스 동기화에 대해 배우다 보면 나오는 개념 중 상호 배제라는 개념이 있습니다. 공유 자원에 대한 상호 배제 메커니즘을 구현하다 보면 발생하게 되는 문제가 있습니다. 바로 데드락이죠. 이번 글에서는 데드락이 무엇인지와 어떤 조건하에 데드락이 발생하는지에 대해 알아보도록 하겠습니다. 1.💀데드락이란? 위 사진의 교통체증이 보이시나요? 이번 글에서 설명할 데드락은 현실세계에서 위와 같은 상황에 빗대어 볼 수 있습니다. 데드락이 무엇인지에 대해 알아보도록 하죠. 프로세스들이 서로가 가진 자원을 기다리며 작업을 더이상 진행하지 못하는 상태를 데드락이라고 합니다. 여기서 자원이라 함은 시스템 자원, 공유 변수 같은 소프트웨어, 하드웨어적인 자원 모두를 말합니다. 이전 글에서 소개한 사진의 일부인..
[운영체제(OS)] 프로세스 동기화 - (2) Critical Section 처리
2022. 2. 26. 03:08
CS/운영체제
0.🚶들어가며 이전 글에서는 동기화란 무엇인지, 동기화와 관련된 개념인 경쟁 조건과 임계 영역에 대해 알아보았습니다. 이번 글에서는 Critical Section에서 생길 수 있는 문제를 어떤 방법으로 해결하는지에 대해 알아보도록 하겠습니다. 기본적으로 Critical Section 처리는 다음과 같은 구조를 가지고 있습니다. Critical Section을 entry section과 exit section으로 감싸고 입구(entry)에서는 다른 프로세스가 들어오지 못하도록 Lock을 출구(exit)에서는 Unlock을 해주는 방식입니다. 이러한 구조를 구현하는 방식은 다양한데 이에 대해 알아보도록 하겠습니다. 1.😀Low-Level Synchronization (Busy Waiting) 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 스케줄..