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 분 · 배준수

malloc을 구현하는 방법

메모리 구조 프로그램 실행 시 운영체제에 의해 마련되는 메모리의 구조는 다음과 같다. 코드 영역(code Area) 실행할 프로그램의 코드가 저장되는 메모리 공간. CPU는 코드 영역에 저장된 명령문들을 하나씩 가져가서 실행한다. 데이터 영역(Data Area) 전역 변수와 static 변수가 할당된다. 프로그램의 시작과 동시에 메모리에 할당되어 프로그램 종료 시까지 남아있다. main 함수가 호출되기 이전에 데이터 영역이 먼저 초기화되고, (return문이 실행되어) 프로그램이 종료된 이후에 운영체제에 의해 할당된 메모리 공간 전체를 반환하는데, 이때가 전역 변수가 소멸하는 시점이다. ...

2023년 4월 12일 · 6 분 · 배준수

동적 메모리 할당 이론

메모리 구조 프로그램 실행 시 운영체제에 의해 마련되는 메모리의 구조는 다음과 같다. 코드 영역(code Area) 실행할 프로그램의 코드가 저장되는 메모리 공간. CPU는 코드 영역에 저장된 명령문들을 하나씩 가져가서 실행한다. 데이터 영역(Data Area) 전역 변수와 static 변수가 할당된다. 프로그램의 시작과 동시에 메모리에 할당되어 프로그램 종료 시까지 남아있다. main 함수가 호출되기 이전에 데이터 영역이 먼저 초기화되고, (return문이 실행되어) 프로그램이 종료된 이후에 운영체제에 의해 할당된 메모리 공간 전체를 반환하는데, 이때가 전역 변수가 소멸하는 시점이다. ...

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

C에서 동적 메모리 할당에 관한 질문 10개

C에서 동적 메모리 할당에 관한 10개의 질문 커리어의 시작에서 많은 개발자들은 동적 메모리 할당을 사용하는 것을 두려워 한다. 이 기사에서, 나는 동적 메모리 할당에 관한 10개의 면접 질문을 설명할 것이다. 만약 만약 당신이 C의 동적 메모리 할당에 관한 면접 질문이나 C에서 메모리 할당과 관련된 함정 질문들을 찾고 있다면, 잘 찾아왔다. C 관련 면접에서 면접관에게 들을 수 있는 10개의 C 동적 메모리 할당에 관한 문제와 답을 만들었다. 그래서 나는 C의 동적 메모리 할당에 관한 면접 질문들이 당신에게 도움이 되길 바란다. 행운을 빈다. ...

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

C에서 1,2 차원 배열에 동적으로 메모리를 할당하는 법

C에서 1,2차원 배열에 동적으로 메모리를 할당하는 법 우리는 C에서 정적, 동적 배열을 모두 만들 수 있다. 이러한 배열은 1차원 혹은 다차원이다. 정적으로 할당된 배열 문제는 우리가 배열의 크기를 구체화해야 한다는 것이다. 그래서 문제는 앞으로 필요한 배열의 크기를 모를때 발생한다. 우리는 이 문제를 동적 메모리 할당으로 해결할 수 있다. 동적 메모리 할당의 이점은 실행동안 힙에 할당된다는 것이다. C 언어는 실행 중 메모리를 요청하는 함수들을 제공한다. 아래 프로그램에서, 1차원과 2차원 메모리에 동적 메모리를 할당하기 위해 malloc 함수를 사용할 것이다. ...

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

malloc과 calloc의 차이

malloc과 calloc의 차이 malloc 함수와 calloc 함수의 기본적인 차이는 calloc()은 두개의 변수를 취하고 모두 0이라는 bits로 공간이 만들어지는 반면, malloc은 한개의 변수만 취하고 공간의 값이 결정되지 않았다는 것이다(indeterminate). malloc과 calloc은 메모리를 동적으로 할당하기 위해 사용하는 메모리 관리 함수이다. C언어에서, calloc()이 0으로 초기화된 buffer를 제공하고 malloc()은 메모리를 초기화되지 않은 채로 둔다. malloc과 callo의 차이를 보기 전에 기두 함수에 대한 기본적인 정보들을 보자. malloc function in C malloc은 실행중에 메모리를 할당하는 메모리 관리 함수이다. 값이 정해지지 않고 크기에 의해 구체화된 크기를 가진 객체를 위한 공간을 할당한다. ...

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

C에서 동적 메모리 할당

출처 : https://aticleworld.com/dynamic-memory-allocation-in-c/ C에서 동적 메모리 할당 이 기사에서, 저장기간이 아닌 동적 메모리 할당과 실행기간동안 메모리를 할당하는데 사용되는 함수에 관해 얘기할 것이다. 동적 메모리 할당이 가진 각각의 장단점도 살펴볼 것이다. C 표준에 따르면, 4개의 저장기간(storage duration)이 있다. : static, thread(C11), automatic, allocated. 저장기간은 객체의 일생(lifetime)을 결정한다. 일생은 객체가 살아있는 시간(저장이 보존된 시간)이며 이전에 저장된 값이 유지되는 시간이다. 객체의 일생 범위 밖에 접근하려는 행동은 정의되지 않았을 것이다. C언어에서, 우리가 프로그램을 실행할 때 얼마나 메모리가 필요한지 모른다면 작동 시간에 변수가 된다. 예를 들어, 서버통신에서 우리는 반응 데이터(response data)의 정확한 크기를 모르기 때문에 두 가지 해결책을 준비한다. 하나는 충분한 크기의 buffer를 만드는것이고 또 하나는 실행할 때 메모리를 할당하는 것이다. ...

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