[운영체제(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 스케줄..
[운영체제(OS)] CPU 스케줄링 - (1) CPU 스케줄링의 개념
2022. 2. 17. 21:40
CS/운영체제
0.🚶들어가며 이전 글에서는 프로세스와 스레드에 대해 알아보았었습니다. 프로세스가 CPU에 할당을 받아야 작업을 수행한다고 했었죠. 이때 여러 프로세스 중 누가 CPU의 할당을 받을 것인지에 대한 내용을 다룬 CPU 스케줄링에 대해 글을 작성해보겠습니다. 1.⏰CPU 스케줄링이란? 이전 글에서 알아봤듯 프로세스는 생성되고 난 뒤 여러 상태를 거치게 됩니다. 운영체제의 CPU 스케줄러는 Ready 상태의 프로세스 중에서 어떤 프로세스에게 CPU를 할당할지 결정합니다. 이를 CPU 스케줄링이라 하는 것이죠. 또한 Dispatcher는 CPU 제어권을 CPU 스케줄러에 의해 선택된 프로세스에게 넘깁니다. 이를 Context Switch라고 합니다. CPU 스케줄링은 규모에 따라 장기, 중기, 단기 스케줄링으로..
[운영체제(OS)] 프로세스와 스레드 - (3) 스레드
2022. 2. 14. 20:26
CS/운영체제
0. 🚶들어가며 프로세스와 스레드 3편입니다. 이번 글에서는 프로세스와 항상 같이 나오는 개념인 스레드(Thread)에 대해 알아보겠습니다. 1. 📕스레드의 개념 1) 스레드의 정의 스레드는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위이다. 이전 글에서 살펴보았듯 CPU를 할당받은 프로세스는 작업을 수행합니다. 이때 CPU가 처리하는 작업 단위가 프로세스로부터 전달받은 스레드(lightweight process)입니다. 집을 짓는 작업을 프로세스로 비유하면 스레드는 집을 짓는 세부 작업들인 설계, 공사, 인터레어 정도로 비유할 수 있습니다. 위 글만 보면 프로세스와 스레드가 어떤 차이인지 감이 잘 오지 않습니다. 따라서 프로세스와 스레드의 차이점에 대해 더 살펴보겠습니다. 2) 프..
[운영체제(OS)] 프로세스와 스레드 - (2) 프로세스 제어 블록과 문맥 교환
2022. 2. 14. 01:36
CS/운영체제
0. 🚶들어가며 프로세스와 스레드 2편입니다. 이번 글에서는 1편에서 개념만 소개했던 프로세스 제어 블록, PCB에 대해 좀 더 알아보고 시분할 방식과 관련된 개념인 문맥 교환(Context switch)에 대해서 알아보겠습니다. 1. 📕프로세스 제어 블록과 문맥 교환 1) 프로세스 제어 블록(PCB) 프로세스 제어블록(PCB)는 CPU가 프로세스를 실행할 때 필요한 중요 정보들을 보관하는 자료구조입니다. 운영체제 커널의 Data 영역에서 관리되고 있죠. 1편에서 살펴본 바와 같이 모든 프로세스는 고유의 PCB를 가집니다. 또한 PCB는 프로세스 생성 시 만들어져 실행이 완료된 후 폐기됩니다. 그렇다면 PCB에 저장되는 정보는 무엇인지, 각 정보는 무슨 역할을 하는지에 대해서 알아보겠습니다. (1) 프로..