Virtual Address

Virtual Address 64-비트 가상 주소는 다음과 같은 구조이다 1 2 3 4 5 6 7 8 63 48 47 39 38 30 29 21 20 12 11 0 +-------------+----------------+----------------+----------------+-------------+------------+ | Sign Extend | Page-Map | Page-Directory | Page-directory | Page-Table | Physical | | | Level-4 Offset | Pointer | Offset | Offset | Offset | +-------------+----------------+----------------+----------------+-------------+------------+ | | | | | | +------- 9 ------+------- 9 ------+------- 9 ------+----- 9 -----+---- 12 ----+ Virtual Address 헤더 include/threads/vaddr.h, 그리고 include/threads/mmu.h는 가상 주소들에서 작동하는 이러한 함수들과 매크로들을 정의한다. (offset : 상대주소(relative address), 동일 오브젝트 안에서 오브젝트 처음부터 주어진 요소나 지점까지 변위차를 나타내는 정수형) ...

2023년 4월 30일 · 3 분 · 배준수

Pintos 2주차 컴퓨터 시스템 용어 정리

Pintos 2주차 keyword 정리 1. Process Controll Block ID : 고유 이름 State : Ready, wating, terminated 등 Program Counter : 특정 프로세스가 실행해야 하는 다음 instruction의 주소를 나타낸다. CPU Registers : 특정 프로세스가 사용하고 있는 레지스터(index register, stack pointer, general purpose register, …) Memory limits List of open files CPU scheduling information : 프로세스의 우선순위. 스케쥴링 큐를 가리키는 포인터나 다른 스케쥴링 parameter. memory management information : 특정 프로세스에 의해 사용되는 메모리에 관한 정보 ...

2023년 4월 29일 · 8 분 · 배준수

Pintos 2주차 도입

Project2 : User Program 유저 프로그램을 실행하게 하는 시스템에 대해 배운다. 유저프로그램 로딩, 실행은 이미 있으나, I/O,나 상호작용은 불가능한 상태 이 프로젝트에서 시스템 콜을 통해 운영체제와 프로그램이 상호작용 하도록 해야 한다. userprog 디렉토리에서 하면 된다. project1 위에서 진행된다. project1의 코드가 project2 코드에 영향을 끼치진 않지만 이후에도 project1 테스트는 통과해야 한다. 추가 도전과제 옵션도 있음. 옵션에서는 기초 코드 틀이 없이 완전히 작성해야함. userprog/Make.vars 를 수정해야함 Background 지금까지 Pintos에서 실행해온 코드는 운영체제 커널의 부분이였다. 즉, 시스템의 privileged parts까지 완전히 접근이 가능하였다. 운영체제 꼭대기에서 유저프로그램을 시작하면, 더이상은 힘들다. 이 프로젝트가 다룰 부분이다. ...

2023년 4월 28일 · 8 분 · 배준수

PintOS Project1-1 WIL

PintOS Project1-1 Alarm Clock 구현 개요 기간 : 2023년 4월 20일 ~ 27일 주제 : Threads 과제 Alarm Clock Priority Scheduling Advanced Scheduler 배경지식 1. interrupt 기본 개념 CPU의 명령 수행속도에 비해 I.O(입출력) 연산의 속도는 훨씬 느리다. I.O 연산을 위해 CPU가 쉬면서 기다리는 것은 낭비다. I.O 연산 중에 CPU는 다른 일을 하고 있는다. I.O 연산 결과가 나오면 CPU에게 알린다. => “Interrupt” 정의 CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외상황이 발생하여 처리가 필요한 경우에 마이크로프로세서에서 알려 처리할 수 있도록 하는 것. 하드웨어 interrupt와 소프트웨어 interrutp로 나뉜다. trap이라고도 일컬어지며 프로세서에게 최근에 실행된 코드의 중단을 요청해서 event가 때맞은 방식으로 처리될 수 있도록 하는 것. 요청이 받아들여지면, 프로세서는 최근 활동을 중단시키고 state를 저장한 후 event를 처리하기 위해 interrupt handler(ISR, interrupt service routin)라고 불리는 함수를 실행한다. 종류 ...

2023년 4월 27일 · 8 분 · 배준수

PintOS Project1-2 WIL

Pintos Project 1-2 Priority Scheduling 구현 배경지식 1. Round Robin(RR) Scheduling 프로세스와 네트워크 스케쥴러에서 이뤄지는 알고리즘 중 하나이다. 일반적으로 time slice가 각 프로세스에서 동일한 부분만큼 순환하는 순서로 배당되어 모 프로세스들을 우선순위 없이 다룬다는 의미이다. 수행하기 간단하고 쉬우며 starvation-free(공평하게 모두 나눠가짐)가 특징이다. 2. Priority Donation(Priority Inheritance) unbounded inversion(끝없는 우선순위 도치)을 제거하기 위한 방법이다. 이 알고리즘은 우선순위가 가장 높은 프로세스 A가 있다고 가정한다면, A가 필요한 lock의 holder인 다른 프로세스의 우선순위를 A만큼 증가시키는 것이다. 그 결과 우선순위가 증가한 프로세스가 우선적으로 실행되고 hold한 lock을 release하면 프로세스 A가 실행될 수 있게 된다. 즉, A가 우선순위에 따라 가장 먼저 실행되기 위해서 필요한 것들(lock과 같은)을 확보하기 위해 다른 누군가에게 A 자신의 우선순위를 부여해 주는 것이다. ...

2023년 4월 27일 · 7 분 · 배준수

Pintos 1주차 컴퓨터 시스템 용어 정리2

컴퓨터 시스템 관련 용어 정리 Priority Donation(Priority inheritance) priority inheritance는 무한한(unbounded) 우선순위 도치(inversion)을 제거하기 위한 방법이다. 이 프로그래밍 방식을 쓰는 프로세스 스케쥴링 알고리즘은 A가 resourece lock이 되어있는 어떤 자원을 기다리는 다른 프로세스들의 우선순위 중 최댓값으로 A의 우선순위를 증가시킨다. priority inheritance protocol의 기본 아이디어는 한 작업이 더 높은 우선순위의 작업에게 가로막혔을 때, 그 작업이 원래의 우선순위를 무시하고 상승한 우선순위 수준에서 1(임계 영역)을 수행하는 것이다. critical section(임계 영역)을 수행하고 lock을 release하고 나면, 포로세스는 원래의 우선순위 수준으로 돌아간다. ...

2023년 4월 22일 · 7 분 · 배준수

Pintos 1주차 Synchronization

Synchronization 쓰레드간 자원 분배 : 조심히 다뤄야 한다. A cooperating process는 시스템에서 다른 프로세스가 실행됨으로써 영향을 주거나 받을 수 있는 것을 의미한다. cooperating process는 직접적으로 논리적 주소(code, data 둘다)를 공유할수도, 파일이나 메세지를 통해서만 데이터를 공유하도록 허용될수도 있다. 공유 데이터로의 동시적(concurrent) 접근은 data 모순(inconsistency)를 야기할 수 있다. 논리적인 주소 공간을 공유하는 협동 프로세스들의 순차적 실행을 확보하여 데이터 동일성을 유지하는 메커니즘에 대해 논해보자. (Producer Consumer Problem에 이어짐.) Disabling Interrupts 가장 기초적인 방법 : CPU가 interrupts에게 반응하는 것을 일시적으로 막는 것 ...

2023년 4월 21일 · 15 분 · 배준수

Pintos 1주차 컴퓨터 시스템 용어 정리

컴퓨터 시스템에 관한 용어 정리 1. Interrupt, interrupt handler trap이라고도 일컬어지는 interrupt는 프로세서에게 최근에 실행된 코드를 중단을 요청해서 event가 때맞은 방식으로 처리될 수 있도록 하는 것이다. 만약 요청이 받아들여지면, 프로세서는 최근 활동을 중단시키고 state를 저장한 후 event를 처리하기 위해 interrupt handler(ISR, interrupt service routine라고도 함)라고 불리는 함수를 실행한다. 이 개입은 보통 일시적이며 비록 interrupt가 치명적인(fatal) error를 표시하는 방법이 있을지라도, interrupt handler가 일을 마친 후 소프트웨어가 평범한 활동을 재개하도록 해준다. interrupt는 시간과 관련된 감지능력이 필요한 전기적, 물리적 상태 변화를 나타내기 위해 보통 하드웨어 장치에서 사용된다. 또한 공통적으로 실시간 컴퓨팅(real-time computing)같은 컴퓨터 멀티태스킹 수행에 사용된다. 그러한 방식들로 interrupt를 사용하는 시스템은 interrupt-driven이라고 일컬어진다. ...

2023년 4월 21일 · 5 분 · 배준수