. 'Pintos Project' 카테고리의 글 목록 (3 Page)
본문 바로가기

Pintos Project38

[PintOS, Project1] Condition Variable을 이용한 Monitor System Monitor System은 Mutex와 Busy Waiting을 동시에 관리해주는 시스템이다. 어떤 CA(임계영역)의 Mutex를 보장하기 위해서, CA에 관련되어있는 thread는 모두 재우고(Busy waiting 관리, 재운다는 정확한 의미는 차후 서술하겠다.) 오직 하나의 thread만 CA에서 작업하도록 한다(Mutex). 그리고 그 CA에서 작업이 끝나면 자고 있는 thread 중에 한 thread에 signal을 보내서, CA에서 작업하도록 한다. 즉, 어떤 thread가 한 임계영역에 대해 작업하고 있는데, 이 임계영역과 관계가 있는 thread들은 조건이 만족되기 전에는 활동하지 않는다. 이 '조건'을 이용하여 thread를 관리하는 시스템을 Condition Variable을 이용한 .. 2021. 2. 4.
[PintOS, Project1] Priority_Scheduling 과제 목표는 우선순위 스케줄링을 사용하는 것이다. 만약 CPU에 있는 스레드보다 높은 우선순위의 스레드가 들어오면 새로운 스레드가 CPU를 차지한다. 스레드 구조체에 PRI가 들어갈 것 같다. 그리고 스레드의 우선순위를 바꾸는 함수와 우선순위를 반환하는 함수가 들어간다. thread_create() : 스레드를 생성할 때, 우선순위도 지정하도록 바꾼다. unblock과 yield할 때 수정한다는 것은, ready_list에 변화가 있을 때 우선순위별로 정렬하라는 것이다. 이는 list_insert_ordered() 로 정렬한다. 우선 구현할 함수를 선언한다. @/include/threads/thread.h /*-------------------------- project.1-Alarm_Clock ----.. 2021. 2. 3.
[PintOS, Project 1] Alarm Clock 구현 2021/01/31 - [Pintos Project/Project 1] - [PintOS, Project 1] 1/30 : 공부 노트 - 각종 관련 함수들 1. Thread 자료 구조 수정 @/include/threads/thread.h struct thread { /* Owned by thread.c. */ tid_t tid; /* Thread identifier. */ enum thread_status status; /* Thread state. */ char name[16]; /* Name (for debugging purposes). */ int priority; /* Priority. */ /* Shared between thread.c and synch.c. */ struct list_elem.. 2021. 2. 1.
[PintOS, Project 1] 1/30 : 공부 노트 - 각종 관련 함수들 timer_sleep() /* Suspends execution for approximately TICKS timer ticks. */ void timer_sleep (int64_t ticks) { int64_t start = timer_ticks (); ASSERT (intr_get_level () == INTR_ON); while (timer_elapsed (start) < ticks) thread_yield (); } 목적 : (기동 중인 어떤 스레드에 대해서) 기동한 지, 일정 시간이 지나면 thread_yield를 실행한다. - assert : 지정한 조건식이 False 이면 프로그램을 중단하고, True이면 프로그램을 계속 실행한다. - timer_elapsed(start) 가 ticks 보다.. 2021. 1. 31.
[PintOS, Appendix ] Threads Thread struct thread { /* Owned by thread.c. */ tid_t tid; /* Thread identifier. */ enum thread_status status; /* Thread state. */ char name[16]; /* Name (for debugging purposes). */ int priority; /* Priority. */ /* Shared between thread.c and synch.c. */ struct list_elem elem; /* List element. */ #ifdef USERPROG /* Owned by userprog/process.c. */ uint64_t *pml4; /* Page map level 4 */ #endif #i.. 2021. 1. 30.
Lecture 5 : Process Scheduling 다중 프로그래밍 - 여러 개의 프로세스가 시스템 내 존재 - 자원을 할당 할 프로세스를 선택해야 함 : Scheduling - 자원관리 ㆍ시간 분할 (Time sharing) 관리 -> 하나의 자원을 여러 스레드들이 번갈아 가며 사용 -> 예) 프로세서 -> 프로세스 스케줄링 (Process Scheduling) : 프로세서 사용시간을 프로세스들에게 분배 ㆍ공간 분할 (Space Sharing) 관리 -> 하나의 자원을 분할하여 동시에 사용 -> 예) 메모리 스케줄링의 목적 - 시스템의 성능 향상 - 대표적 시스템 성능 지표 (index) ㆍ응답시간 : 작업 요청으로부터 응답을 받을 때까지의 시간 ㆍ작업 처리량 : 단위 시간동안 완료된 작업의 수 ㆍ자원 활용도 : 주어진 시간동안 자원이 활용된 시간 (U.. 2021. 1. 30.
Lecture 4 : 스레드 관리 (Thread Management) 스레드 - Light Weight Process (LWP) 라고도 한다. - 프로세서 활용의 기본 단위 - 제어 요소 외 코드, 데이터 및 자원들은 프로세스 내 다른 스레드와 공유 - 전통적 프로세스 = 단일 스레드 프로세스 구성요소 - Thread ID - Register set (Program Counter, Stack Pointer 등, 상위 프로세스나 타 스레드와 협업하기 위해서 필요한 것들) - Stack 장점 - 사용자 응답성 -> 일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속 처리 가능 - 자원 공유 -> 자원을 공유해서 효율성 증가 (커널의 개입을 피할 수 있음) (경제성과 같은 의미다.) - 경제성 -> 프로세스의 생성, context switch에 비해 효율적 (conte.. 2021. 1. 29.
Lecture 3 : 프로세스 관리 작업 (job) 과 프로그램 (Program) - 작업 : 실행 할 프로그램 + 데이터 - 컴퓨터 시스템에 실행 요청 전의 상태 프로세스 (Process) - 실행을 위해 시스템(커널)에 등록된 작업 - 시스템 성능 향상을 위해 커널에 의해 관리 됨 디스크 안에 있는 상태면 job, 커널에서 실행되고 있으면 Process가 된다. 실행중인 프로그램 - 커널에 등록되고 커널의 관리 하에 있는 작업 - 각종 자원들을 요청하고 할당 받을 수 있는 개체 - 프로세스 관리 블록(PCB)를 할당 받은 개체 - 능동적인 개체 : 실행 중에 각종 자원을 요구, 할당, 반납하며 진행 Process Control Blokc (PCB) - 커널 공간 내에 존재 - 각 프로세스들에 대한 정보를 관리 자원의 개념 - 커널의 관.. 2021. 1. 29.
Lecture2 : OS overview 운영체제의 역할 - 편리성 - 효율성 : HW/SW의 리소스관리 - Process (실행 주체) and Thread Management - System Management 안전 상의 이유로 사용자가 커널을 직접 조작하게 해서는 안된다. 필요 시에는 OS에 System Call Interface를 사용해서 간접적으로 커널을 조작하도록 한다. (System Call Interface : 커널이 제공하는 기능들 중에서 사용자가 사용할 수 있는 기능들) 운영체제의 구분 - 동시 사용자 수 (Single or Multi : ) 1) 단일 사용자 : 한 명의 사용자만 시스템을사용 가능 (개인용 장비 등) -> 한명의 사용자가 모든 시스템 자원 독점 -> 윈도우, 도스, 안드로이드 등 -> 자원관리 및 시스템 보호 .. 2021. 1. 28.
Lecture1 : 운영체제 강의 OS란? - 하드웨어 등의 컴퓨터 자원들을 를 효율적으로 관리하는 프로그램 하드웨어엔 크게 세 가지가 있다. 1) 프로세서 : 계산하는 장치 (CPU, GPU 등) 2) 메모리 : 저장하는 장치 3) 주변장치 : 키보드, 모니터 등의 IO장치, 네트워크 장치 1. 프로세서 - 연산을 수행 - 컴퓨터의 모든 장치의 동작 제어 레지스터 : 프로세서 내부에 있는 메모리 - 프로세서가 사용할 뎅터 저장 - 컴퓨터에서 가장 빠른 메모리 (대신에 용량을 적다) 레지스터의 종류 : - 용도에 따른 분류 : 전용 레지스터 (목적이 있음), 범용 레지스터 - 변경 가능에 따른 분류 : 사용자 가시 레지스터, 사용자 불가시 레지스터 - 저장하는 정보의 종류에 따른 분류 : 데이터 레지스터, 주소 레지스터, 상태 레지스터 .. 2021. 1. 28.