C언어/Pintos5 WIL3 (1) 핀토스에는 힙이 없음 페이지 디렉토리와 페이지 테이블 페이지로 구성된 2단계 페이징을 가지며 매핑됨 프로세스가 실제로 시작될 때 text와 data는 실제 disk에 있 virtual address 구현은 프로세스가 물리 메모리 주소를 직접 사용하는게 아닌가상 주소 공간을 사용하는 방식으로 전환을 의미 1. Demand Paging 및 Swapping 활성화Demand Paging은 프로그램 전체를 한 번에 메모리에 로드하지 않고 필요한 페이지만 로드Swapping은 메모리가 부족할 때, 사용하지 앟는 페이지를 디스크로 보내고 나중에 다시 부름 구현 방법1. 페이지 폴트 처리 :프로세스가 아직 로드 안된 페이지 접근하면 페이지 폴트이때 커널이 디스크에서 해당 페이지 읽어와 물리 메모리 로드 후 페이지 .. 2024. 10. 10. WIL 목표 :우선순위가 높은 스레드가 먼저 CPU를 점유할 수 있도록 Priority Scheduling을 구현한다. 스레드들은 각 우선순위에 따라 ready list에 추가현재 실행 중인 스레드의 우선순위보다 높은 우선순위의 스레드가 추가되면,현재 실행 중인 스레드는 바로 CPU 양도스레드는 언제든지 자신의 우선순위를 변경할 수 있다.우선순위를 낮추어 가장 높지 않으면 즉시 양도대기하고 있는 스레드가 여러 개면, 가장 높은 스레드가 깨야 한다새로운 thread의 우선순위가 높으면 선점기존 pintos에서는 ready_list에 새로운 thread가 삽입 되어도 선점xpintos는 ready list에 삽입된 순으로 thread가 CPU 점유 WIL :설명만 듣는것 하고 직접 구현은 차원이 다른 문제였다.한.. 2024. 10. 1. Understanding Threads 쓰레드 생성, 쓰레드 종료, 쓰레드 간에 스위치를 하는 간단한 스케줄러, 동기화 함수가 구현 되어있음- semaphores, locks, condition variables, and optimization barriers 어떤 함수를 실행하고자 하는 경우, thread_create() 의 인자로 실행하고자 하는 함수를 넣으면 됨.미니 프로그램처럼 thread_create()하면 main()이 실행 되는 것처럼 쓰레드에 전달된 함수가 실행됨. 언제나 하나의 쓰레드만 실행되고 나머진 비활성화. 다음이 없으면 idle()로 실행. 기다려야 할 때 문맥교환 강제 진행.문맥교환 방식은 threads/thread.c 의 thread_launch() 에 정의되어 있다.이는 현재 실행중인 쓰레드의 상태를 저장하고, 스.. 2024. 9. 25. Synchronization 스레드들 간 자원 공유하는것은 주의를 요함.pintos는 이를 위한 다양한 synchronization 함수들을 제공함 Disabling Interrupts 인터럽트 비활성화synchroniztation을 하는 가장 단순한 방법은인터럽트(CPU의 실행을 잠시 멈추고, 특정 작업을 처리한 후 실행하던 작업으로 복귀)를 불가능하게 하는 것.인터럽트가 꺼지면, 다른 스레드는 진행중인 스레드를 선점 불가.스레드 선점은(preempt)은 timer interrupt에 의해 이뤄지기 때문. 암튼, pintos는 '선점가능한(preemptible) 커널' 임.선점 가능한 커널은 더 명시적인 동기화가 필요함 인터럽트를 비활성화 시키는 주된 이유는 외부의 인터럽트 핸들러와 커널 스레드를 동기화 시키기 위해서임. 몇가지.. 2024. 9. 25. 개요 Pintos란?x86-64 아키텍쳐에서 동작하는 간단한 OS 프레임워크kernel - threadsloading and running user programsfile system위 3개를 강화할 예정 가상 메모리구현 소스트리 둘러보기threads/ : 프젝1에서 수정을 시작할 base kernel 소스 코드userprog/ : 프젝2 에서 수정을 시작할 user program loader의 소스코드vm/ : 프젝3 에서 가상 메모리 구현filesys/ : 기본적인 file system의 소스코드. 프젝2 부터 씀devices/ : (키보드, 타이머, 디스크 등) I/O 장치 interfacing을 위한 소스코드. (프젝1 에서 타이머 수정)lib/ : (라이브러리, Pintos커널과 (프젝2)user p.. 2024. 9. 25. 이전 1 다음