pintos 4

[WIL] Copy On Write

Copy On Write 📌copy on write 개념 Copy-on-Write은 메모리 관리 기술 중 하나로, 데이터를 공유 하면서 수정이 발생하면 복사본을 생성해 데이터의 일관성을 유지하면서 리소스를 절약하는 기법 📌copy on write가 적용되지 않았을때 그림과 같이 포크를 할 때마다 부모 프로세스가 사용중인 프레임의 수 만큼 카피 프레임을 생성하여 사용한다면 완전히 같은 데이터를 가지고 있는 데이터 프레임이 중복되어 사용될텐데 이는 메모리 공간을 낭비로 볼 수 있다. 📌copy on write가 적용 후 copy on write은 이렇게 메모리 공간 내 동일한 데이터를 가진 프레임이 중복되어 존재하는 것을 줄이는 기법으로 포크를 할 때 일단 부모와 자식이 프레임을 공유하여 카피 프레임의 생성..

pintos 2023.10.24

[WIL]Project3: Virtual Memory

Project3: Virtual Memory 당신의 OS는 여러 개의 쓰레드를 알맞게 동기화해서 적절히 핸들링할 수 있고, 여러개의 유저 프로그램을 한번에 로드할 수 있다. 그러나, 돌릴 수 있는 프로그램의 개수와 사이즈는 머신의 메인 메모리 크기에 맞춰 제한되어있다. 이번 과제를 통해 무한의 메모리의 환상을 만들어서 그 제한을 제거해보자. 1. Background 배경 1-1) Source Files 소스파일 이번 프로젝트에서는 vm 디렉토리에서 작업하게 될 것이다. Makefile은 DVM을 setting하도록 되어있다.⇒ Makefile에서 VM에 대해 define 해준다는 말이다. 코드 중간에 ifdef VM으로 감싼 부분이 활성화된다. 엄청난 양의 템플릿 코드를 제공합니다. 반드시 주어진 템플릿..

pintos 2023.10.11

[WIL] PROJECT1 - Alarm Clock

Alarm Clock 🙈 devices/timer.c 에 있는 timer_sleep()을 다시 구현해봅시다. 📌현재 핀토스에 구현되어있는 timer_sleep() 현재 프로세스는 알람을 울려줘야 하는 시간이 됐는지 여부를 확인하기 위해, ready 상태와 running 상태태를 왔다갔다 하게 된다. 그 결과, 두 상태 사에에서 왔다갔다 하면서 소모적인 cpu cycle을 반복하게 된다. 쓰레드가 running 상태일 때, alarm을 호출하면, 준비리스트의 가장 맨 마지막으로 다시 들어가고, 결국 다시 실행된다. 따라서, 현재 구현된 방식으로 준비 리스트를 기반으로 한 루프를 계속 돌게 되는 것이다. ready_list -> running -> yield -> ready_list 💡구현 아이디어 👉🏻bl..

pintos 2023.10.03

[PROJECT 1 : THREADS]과제 설명

PROJECT 1 : THREADS introduction 소개 👉🏻이 과제에서 최소한의 기능을 갖춘 스레드 시스템이 주어진다. 우리의 임무는 이 시스템의 기능을 확장하여 동기화 문제에 대한 더 나은 이해를 얻는것, 이 과제에서 주로 스레드 디렉토리에서 작업하게 될텐데, 옆에 devices 디렉토리에서도 작업을 해야한다. 컴파일은 주로 스레드 디렉토리에서 해야한다. 이 프로젝트에 대한 설명을 읽기 전에 동기화에 관한 자료를 최소한 훑어보는 것이 좋다. Background ✏️Understanding Threads 쓰레드 이해하기 🤔 먼저 과제에서 제공되는 쓰레드 시스템 코드를 읽고 이해합시다. Pintos에는 이미 쓰레드 생성, 쓰레드 종료, 쓰레드 간에 스위치를 하는 간단한 스케쥴러, 그리고 동기화 함..

pintos 2023.09.21