pintOS - Project 1

신승준·2022년 5월 21일
0

pintOS Assignment 해석

Introduction

  • Introduction
    • 커널 스레드 / 사용자 프로그램 로드 및 실행 / 가상 메모리 구현 / 파일 시스템 지원 구현
  • Getting Started
    • Directory structure
      • 프로젝트 1에서는 threads/, devices/를 수정할 예정이다.
    • 프로젝트 1, 소스 코드 작성 후 threads 폴더에서 make 실행

PROJECT1: THREADS

  • Introduction
    • threads/, devices/를 수정해야 한다.
    • 컴파일은 threads/에서 진행한다.
    • 부록에서 Synchronization을 읽어볼 필요가 있다.

Alarm Clock

진짜 그냥 구현?

  • 쓰레드

  • timer_sleep():

    • running -> waiting(blocked, sleep)
      • Timer interrupt가 들어오거나(할당된 시간이 끝났을 때)
      • I/O 요청과 같은 긴 시간이 걸리는 작업을 수행할 때
  • alarm clock 구현 후 idle ticks가 550정도로 바뀌는 이유는, CPU가 계속 준비된 쓰레드가 있는지 확인 안해도 되므로

  • busy waiting

  • CPU : A, ready_list : B, C 일 경우

    • A는 계속 확인하면서, CPU에 B가 올라가면 B는 또 따로다.
    • B는 4틱만큼 수행하고 레디로 간다.
    • 이 때 A가 다시 CPU로 올라가게 된다면, 깨어날 ticks가 아니면 곧바로 내려간다.
    • 2가지로 나뉘는 것 같은데? 멀티거나 단일이거나
    • A는 자기만의 쓰레도로 계속 while문을 도는거고 B가 CPU에 올라가면 B만의 쓰레드가 있는건가?
  • palloc이 뭐지?

  • yield -> do schedule -> schedule

  • priority 1단계에서는 선점형으로 바뀐다. 새로운 쓰레드가 들어오면 CPU에서 돌아가는 쓰레드의 우선순위가 더 낮을 경우 ready_list로 들어가고 새로운 쓰레드가 CPU를 차지하니까

profile
메타몽 닮음 :) email: alohajune22@gmail.com

0개의 댓글