본문 바로가기

OS/쉽게 배우는 운영체제23

가상 메모리 관리 (1) 이번 단원은 '메모리가 꽉 차있을 때 프로그램을 올려야 할 때에 어떤 페이지를 스왑영역으로 옮겨야 할까' 에 대한 여러 알고리즘을 배웠다. 처음에는 '어떠한 조건이 있으면 조건을 만족하기 어려운 페이지가 아사현상에 빠지지않을까?' 하고 생각했었는데 다시 생각해보니 서로 완전히 다른 영역이였다. 그리고 LRU 페이지 교체 알고리즘과 2차 기회 페이지 교체 알고리즘이 되게 유사하다고 생각이 든다. 둘 다 시간의 흐름을 기반으로 하고 있지만 다시 사용한 페이지라면 시간의 흐름을 초기화 한다는 성질 때문인데 이건 다시 공부하며 확실히 알고 넘어가야겠다. 마지막으로 페이지 교체 알고리즘과 캐시메모리가 사용하는 알고리즘이 같지않을까 하는 궁금증도 생겼다. 사용자가 쓰지 않을것 같은 데이터와 사용할것 같은 데이터를 .. 2022. 3. 23.
가상 메모리의 기초(2) 이번단원을 공부하며 다른 단원보다 더 많은 궁금증이 생겼다. 처음보다 난이도가 많이 올라간 이유도 있겠지만 내가 조금씩 이런저런 생각을 하며 공부를 하는 것 같아 뿌듯하다. 하나의 예시로 세그멘테이션기법이 페이징 기법보다 테이블이 작다고 한다. 처음에는 같은 크기의 프로세스인데 어떻게 테이블의 크기가 차이가 날까 생각을 해봤는데 페이징기법에서는 나뉜 공간중 사용하는 공간 모두에 테이블이 필요하지만 세그멘테이션기법은 프로세스 하나에 하나의 테이블만 존재하기 때문인것 같다. 3. 세그멘테이션 기법 3-1 세그멘테이션 기법의 구현 세그멘테이션 테이블 : 세그멘테이션 기법에서의 매핑 테이블 구조 : 프로세스의 크기 (limit)와 주소 (address)로 이루어짐 → 페이징 기법과 다르게 프로세스의 크기가 서로.. 2022. 3. 21.
가상 메모리의 기초 (1) 가상 메모리의 핵심은 '메모리에 하나의 프로세스가 다 올라오지 않아도 실행할 수 있다' 는 것이다. 먼저 프로그램은 HDD와 같은 저장장치에 저장되어 실행하기 위해 RAM과 같은 메모리에 올라온다. 이것이 프로세스를 실행하기 위한 방법인데 RAM의 크기가 프로세스의 크기보다 작다면 실행할 수 없을까? 그러면 우리는 RAM의 용량에따라 실행할 수 있는 파일이 한정될까? 답은 아니다. 이러한 문제를 해결하기 위한 개념이 바로 가상메모리이다. 가상메모리는 프로그램이 저장되어있는 HDD에서 RAM으로 프로세스의 일부분만 가져온다. RAM은 이전에 배웠던 메모리 오버레이를 이용하여 일부분의 프로세스만 가지고 프로세스를 실행할 수 있다. 이렇게 일부를 하드디스크에 남기고 필요한 부분만 사용한다면 여러개의 프로세스를.. 2022. 3. 17.
메모리 관리 (2) 전 단원에서는 메모리의 기초적인 개념,용어를 배웠다면 이번 단원에는 '메모리를 어떻게 하면 효율적으로 관리 할 수 있을까'에 대해 다룬다. 이건 우리의 일상생활에서도 흔히 마주칠 수 있는 문제인데 식당에 갔을 때 손님의 수에 맞게 테이블을 제공하는 식당이 있을 수 있고, 4명이 앉을 수 있는 테이블로만 구성하는 방법도 있을 것이다. 이러한 방법은 여러 장단점이 있는데 이번 내용에서 소개하겠다. 4. 다중 프로그래밍 환경에서의 메모리 할당 4-1 메모리 분할 방식 가변 분할 방식 : 프로세스의 크기에 따라 메모리를 나누는 방식. 한 프로세스가 연속적인 메모리에 배치되기 때문에 연속 메모리 할당이라고도 한다. 장점 : 프로세스 측면에서 봤을 때 매우 편리함 단점 : 관리가 불편함/ 프로세스가 작업을 마친 후.. 2022. 3. 11.
메모리 관리 (1) 전에 친구와 컴파일러와 인터프리터의 차이에 대해 이야기 했었던 적이 있다. 그 때에는 정말 공부를 시작한지 얼마 안됬었고 인터프리터가 무엇인지도 몰라 친구가 알려주는 얘기만 들었던 것 같다. 그런데 이번에 다시한번 컴파일러와 인터프리터의 관한 이야기가 나왔고 이번에는 그 두가지의 장단점/ 왜 둘을 분류해서 사용할까와 같은 여러 의문점을 가질 수 있었다. 먼저 내가 생각했던 첫번째 의문점은 인터프리터에는 링커가 들어가지 않는다는 것 이다. 링커는 자주 사용하는 함수를 라이브러리에 보관하여 헤더에만 지정하면 쉽게 쓸 수 있는데 왜 인터프리터에서는 쓰지 않을까라는 생각을 했었는데 다시 생각해보니 인터프리터는 한줄한줄 바로 실행되는데 헤더에 지정을 한다는 것 자체가 잘못된 생각이였다는 것을 알 수 있었다. 또한.. 2022. 3. 10.
교착 상태 교착상태는 일괄 처리 시스템이 아닌 이상 어쩔 수 없이 발생하는 문제이다. CPU가 여러가지 프로세스에 시간을 할당하면서 생기는 문제인데 모든 해결법에 문제점이 하나씩 있다. 내 개인적인 생각이지만 완벽히 교착 상태를 해결할 때 쯤이면 시분할 시스템이 사라지지 않을까? 교착상태의 정의 define : 2개 이상의 프로세스가 서로 다른 프로세스의 작업이 끝나기만을 기다리며 기다리는 상황 교착상태의 발생 1. 시스템자원 2. 공유변수 3. 응용 프로그램 자원 할당 그래프 프로세스가 어떤 자원을 사용 중이고 어떤 자원을 기다리고 있는지를 그래프로 표현 원 : 프로세스 사각형 : 자원 다중자원 : 하나의 자원이 2개 이상의 프로세스를 수용할 수 있음 식사하는 철학자 문제 식사하는 철학자 문제는 교착상태의 대표적.. 2022. 3. 8.