분류 전체보기
-
KOCW 운영체제_이화여대_반효경 교수님 강의OS/운영체제 강의정리 2021. 12. 30. 15:01
운영체제 강의 정리 시작 운영체제 강의로 유명한 이화여대 반효경 교수님 강의! 목차 1. Introduction to Operating Systems 운영체제란 무엇인가, 운영체제의 목적, 운영체제의 분류, 운영체제의 예, 운영체제의 구조 2. System Structure & Program Execution 1 컴퓨터 시스템 구조, Mode bit, Timer, Device Controller, 입출력(I/O)의 수행, 동기식 입출력과 비동기식 입출력, 시스템콜(System Call), 인터럽트(Interrupt) 2-2. System Structure & Program Execution 2 컴퓨터 시스템 구조, 인터럽트(Interrupt), 동기식 입출력과 비동기식 입출력, 시스템콜(System Ca..
-
Project1 : Thread - Priority Scheduling(3)OS/Pintos 2021. 12. 30. 11:19
Priority inversion Problem 개요 과제 목표 Priority donation 구현 Multiple donation 구현 Nested donation 구현 개념 1. Priority donation : 우선순위가 높은 쓰레드가 우선순위가 낮은 쓰레드를 기다리는 현상 해결방법 수정 함수 void lock_acquire (struct lock *lock) lock을 점유하고 있는 스레드와 요청 하는 스레드의 우선순위를 비교하여 Priority donation을 수행하도록 수정 lock_release(struct lock *lock) donation list에서 스레드를 제거하고, 우선순위를 다시 계산하도록 remove_with_lock(), refresh_priority() 함수를 호출 v..
-
Project1 : Thread - Priority Scheduling(2)OS/Pintos 2021. 12. 30. 11:14
Priority Scheduling and Synchronization 동기화 기본 연산 스케쥴링 방식 수정 여러 스레드가 semaphore, lock, condition variable을 얻기 위해 기다릴 경우 우선순위가 가장 높은 CPU를 점유하도록 구현 현재 Pintos는 semaphore를 대기 하고 있는 스레드들의 List인 waiters가 FIFO로 구현되어있다. ready_list : 실행되기를 기다리기위한 thread들 waiters : sema-down에서 sema →value==0 즉, 사용불가 상태, 다른 사람이 쓰고있는데 waiter에서 blocked된 상태로 자고 있음 다시 sema-up 하면 깬다 Semaphore Priority Scheduling을 적용하기 위해서는 공유 자원..
-
Project1 : Thread - Priority Scheduling (1)OS/Pintos 2021. 12. 30. 11:07
개념 Priority Scheduling (우선순위 스케쥴링) : 우선순위가 제일 높은 CPU에게 주겠다 ✅ 스레드가 현재 실행 중인 쓰레드보다 우선순위가 높은 준비 목록에 추가되면 현재 스레드는 즉시 프로세서를 새 스레드에 넘겨야 한다. ✅ 마찬가지로 스레드가 lock, semaphore 또는 condition 변수를 기다릴 때 가장 높은 우선순위를 가진 기다리던 스레드가 먼저 활성화되어야 한다. 스레드는 언제든지 자신의 우선순위를 올리거나 낮출 수 있지만, 더 이상 높은 우선순위를 갖지 않도록 우선 순위를 낮추면 CPU를 즉시 양보한다. 스레드의 우선순위 범위는 PRI_MIN(0)부터 PRI_MAX(63)까지이다. 낮은 숫자는 낮은 우선순위! 숫자가 높을수록 우선순위가 높은것! 초기 스레드의 우선순위..
-
Project1 : Thread - introductionOS/Pintos 2021. 12. 30. 11:03
Threads - Introduction 프로그램 프로그램과 프로세스의 차이 프로그램 : 생명이없음. 보조기억장치(하드디스크, SSD)에 존재하며 실행되기를 기다리는 명령어(코드)와 정적인 데이터 묶음 프로세스 : 프로그램의 명령어와 정적데이터가 메모리에 적재되어 생명이 생김! 즉, 실행중인 프로그램 프로세스의 구성 PCB(Process Control Block) 안에 프로세스에대한 정보를 담고 있음 PID : 운영체제가 각 프로세스를 식별하기위해 부여된 프로세스 식별번호(Process IDentification) 프로세스 상태 : CPU는 프로세스를 빠르게 교체하면서 실행하기에 실행중인 프로세스도 있고, 대기중인 프로세스도 있음. 이러한 상태를 저장함 프로그램 카운터 : CPU가 다음으로 실행할 명령어..
-
Project1. Alarm clockOS/Pintos 2021. 12. 28. 00:22
alarm : 호출한 프로세스를 정확한 시간 후에 다시 시작하는 커널 내부 함수 핀토스에서는 알람 기능이 busy waiting을 이용하여 구현 → sleep / wake up 다시 구현 busy waiting : thread가 CPU를 점유하면서 대기하고 있는 상태, CPU자원이 낭비되고, 소모 전력이 불필요하게 낭비될 수 있다. 💡 컨셉! 깨어날 시간이 아니면 양보, 애초에 양보할 일을 안만들면 되지 않을까? → 별도의 리스트를 마련해서 CPU가 잠자고 있는 애들 모아놓기! ✅ 수정해야 할 주요 파일 : include/threads/thread.h, threads/thread.c, devices/timer.c ✅ 수정 및 추가해야할 함수 void timer_sleep (int64_t ticks) /*..
-
[WEEK08]OS시작 마음가짐SW정글 2021. 12. 23. 23:58
벌써 8주차라니 믿기지가않는다..! 파이썬의 p도 모르던 내가 4주간 파이썬으로 알고리즘 문제도 풀어보고, 3주간 C언어를 배우며 RBtree, MallocLab, 웹서버 구현까지 정말 많은 공부가 지나온것같다. 정글의 생활은 매일매일이 벅차서 여기까지 어떻게 왔는지 모를정도로 시간이 사라져버렸다. 그러고나니 그렇게 걱정하고 기대하던 Pintos 프로젝트가 시작되었다. 블로그를 적어야한다는 생각은 항상있었지만, 매일매일의 벅참으로 작성하지 못한 나를 반성한다. 지금부터라도 이제 OS시작하는 오늘부터라도 꾸준히 오늘 배운 내용을 정리해야겠다. 오늘부터의 블로그는, 매일매일의 기록이자, 매일매일의 일기를 기록해보려한다. 겁나지만, 차근차근 오늘 하루에 집중하는 생활을 하며 Pintos를 성공적으로 마치고 싶다.
-
[WEEK01] 특별한 과제SW정글 2021. 11. 19. 09:48
📢 찬찬히 나를 돌아보는 시간 지나온 과거에 대한 성찰, 5개월 동안 내가 어떤 것을 얻어가고 싶은지, 어떤 자세로 임하고 싶은지, 정글이 끝난 후 나의 모습은 어땠으면 좋겠는지 등을 생각해보고, 정글에 들어온지 6일차이다. 아직 1주일도 채 되지않았지만, 체감은 한달은 넘게 보낸 기분이다. 그동안 내가 얼마나 나태하게살았는지, 지금껏 내가 몰입이라고 생각하고 공부했던 순간들은 몰입이아니였구나를 깨닫게 된 정글에서의 첫 시작이였다. 나는 하루 8시간을 자야하는 사람이야, 라는 생각을 했는데 하루 4~5시간 자며 1주일을 보내도 살아갈 수 있구나, 남은 시간 집중하고 잠자는 시간도 기절해서 잘 수 있다는것을 알게 되었다. 정글에 오기전 '주 100시간의 몰입도를 경험해보세요. '라는 문구를 보며, 주 6일..