🌿CS/OS 18

✏️ 6. 프로세스 동기화 & 상호배제 (7) - Monitor

강의 링크 : https://www.youtube.com/watch?v=AnYN-kbCbRI&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=18 0. 들어가기에 앞서 이번 포스팅에서 다룰 내용은 Monitor입니다. 이는, 앞에서 다룬 Low-level mechanisms(SW solution, HW solution, OS supported SW solution)과는 달리, Language-Level solution으로써 프로그래밍 언어적으로 상호배제를 해결하는 방법입니다. 그 동안 한 Low-level mechanisms들은 다음과 같은 특징이 있었습니다. Flexible : 다양하게 적용 가능하다 Difficult to use : 구현이 복잡하다 Error-pron..

CS/OS 2021.05.14

✏️ 6. 프로세스 동기화 & 상호배제 (6) - Eventcount/Sequencer

강의 링크 : https://www.youtube.com/watch?v=S7l2UEXVhb0&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=17 3. Eventcount/Sequencer 은행의 번호표와 비슷한 개념 1) 용어 및 연산 (1) Sequencer 은행에서 대기표 뽑는 기계 생각하면 됨. 정수형 변수 생성 시 0으로 초기화, 감소하지 않음 발생 사건들의 순서 유지 ticket() 연산으로만 접근 가능 (2) ticket(S) 은행에서 대기표 뽑는 기계에서 대기표를 뽑는 상황 현재까지 ticket() 연산이 호출 된 횟수를 반환 Indivisible operation (3) Eventcount 은행 창구에서 현재 업무 중인 번호를 보여주는 기계 정수형 변수 ..

CS/OS 2021.05.14

✏️ 6. 프로세스 동기화 & 상호배제 (5) - Semaphore

강의 링크 : https://www.youtube.com/watch?v=CitsUz-Dx7A&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=16 2. Semaphore 1) 특징 1965년 Dijkstra가 제안 Busy waiting 문제 해결 음이 아닌 정수형 변수(S) 초기화 연산, P(), V()로만 접근 가능 P : Probern(검사) V : Verhogen(증가) 임의의 S변수 하나에 ready queue하나가 할당 됨 Spinlock과 가장 다른점 초기화 연산 S변수에 초기 값을 부여하는 연산 P()연산, V()연산 P(S) 연산 물건이 있을 때, 물건을 하나 빼고 가져감 물건이 없을 때, 대기실(ready queue)에서 기다림 V(S) 연산 대기실에 ..

CS/OS 2021.05.14

✏️ 6. 프로세스 동기화 & 상호배제 (4) - Spinlock

강의 링크 : https://www.youtube.com/watch?v=33OqgesF-mM&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=15 1. Spinlock 1) 특징 정수 변수 초기화, P(), V() 연산으로만 접근 가능 위 연산들은 indivisible(or atomic) 연산 -> preemptive 없음 (OS support로 인해) 전체가 한 instruction cycle에 수행 됨 P(S) : S는 물건의 갯수를 뜻함, P(S)는 물건을 꺼내가는 상황이라고 생각하자. V(S) : S는 물건의 갯수를 뜻함, V(S)는 물건을 반납하는 상황이라고 생각하자. 2) 로직 active는 물건의 유무를 나타내는 상태 1인 경우 물건 존재 / 0인 경우 물건..

CS/OS 2021.05.13

✏️ 6. 프로세스 동기화 & 상호배제 (3) - HW solution

1. TestAndSet(TAS) instruction Test와 Set을 한 번에 수행하는 기계어 Busy waiting Inefficient 1) 기계어 (Machine instruction) Atomicity, Indivisible 실행 중 interrupt를 받지 않음 (preemption 되지 않음) 2) TAS 명령어 target 값을 반환하면서 target 값을 true로 변경한다. 이 과정을 한 번에 진행함 (MI이기 떄문) 3) ME with TAS Instruction lock이라는 변수의 초기 값은 False TAS(lock) 기존 lock value인 false가 반환되고, lock을 true값으로 변경 CS 진입 Pj라는 프로세스 등장 TAS(lock)이 true값을 반환하기 때문..

CS/OS 2021.05.12

✏️ 6. 프로세스 동기화 & 상호배제 (2) - sw solutions

1. Dekker's Algorithm 데커스 알고리즘 Two process ME을 보장하는 최초의 알고리즘 flag, turn을 모두 사용함 [로직] 현재 내 flag를 true로 변경 만약 상대 flag가 True라면, 턴 값을 확인해서 누구의 턴인지 확인 만약, 상대 턴이면 내 flag를 false로 만들고 상대 턴이 끝나서 trun value가 0이 될 때까지 대기 turn이 0이 되면 flag를 true로 변경하고 CS로 진입 만약 상대 flag가 False라면, 빠로 CS로 진입 CS를 빠져나온 후, turn 값 변경 및 flag 변경 2. Peterson's Algorithm Dekker's algorithm과 다른 점은 서로 양보하는 것 [로직] 내 flag를 true로 변경 turn 값에..

CS/OS 2021.05.12

✏️ 6. 프로세스 동기화 & 상호배제 (1) - 개요

강의 링크 : www.youtube.com/watch?v=wdaf2gy83uU&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=12 다중 프로그래밍 시스템의 경우 여러 개의 프로세스들이 존재하고, 프로세스들은 서로 독립적으로 동작하며, (동시에 동작) 공유 자원 또는 데이터가 있을 때 문제가 발생할 수 있다 문제 예시 A, B가 하나의 도화지 위에 그림을 동시에 그린다면 원하지 않는 결과물이 나올 수 있음 해결 방법 A와 B가 대화를 나눈다. -> 여기서 대화라는 개념이 "동기화"가 되는 것 1. 동기화(Synchronization) 프로세스들이 서로 동작을 맞추는 것 프로세스들이 서로 정보를 공유하는 것 2. 프로세스의 특징 1) 비동기적 (Asynchronous) 프..

CS/OS 2021.05.12

✏️ 5. 프로세스 스케줄링 (4)

현 포스팅은 MLQ, MFQ를 다룹니다. 강의 링크 : https://www.youtube.com/watch?v=actKUqea6Xc Basic Scheduling algorithms FCFS (First-Come-First-Service) RR (Round-Robin) SPN (Shortest-Process-Next) SRTN (Shortest Remaining Time Next) HRRN (High-Response-Ratio-Next) MLQ (Multi-level Queue) MFQ (Multi-level Feedback Queue) 6. MLQ (Multi-level Queue) ready queue가 여러 개인 알고리즘 작업(or 우선순위)별 별도의 ready queue를 가짐 최초 배정 된 q..

CS/OS 2021.05.10

✏️ 5. 프로세스 스케줄링 (3)

현 포스팅에서는 3, 4, 5인 SPN, SRTN, HRRN을 다룹니다 강의 링크 : www.youtube.com/watch?v=keY9Wi7scEs Basic Scheduling algorithms FCFS (First-Come-First-Service) RR (Round-Robin) SPN (Shortest-Process-Next) SRTN (Shortest Remaining Time Next) HRRN (High-Response-Ratio-Next) MLQ (Multi-level Queue) MFQ (Multi-level Feedback Queue) 3. SPN Shortest-Process-Next ex 소량 계산대 실행 시간 (burst time)이 가장 작은 프로세스를 먼저 처리 FCFS의 문..

CS/OS 2021.05.10

✏️ 5. 프로세스 스케줄링 (2)

강의 출처 : https://www.youtube.com/watch?v=r1JVA7yOPAM&t=1102s Basic Scheduling algorithms FCFS (First-Come-First-Service) RR (Round-Robin) SPN (Shortest-Process-Next) SRTN (Shortest Remaining Time Next) HRRN (High-Response-Ratio-Next) MLQ (Multi-level Queue) MFQ (Multi-level Feedback Queue) 이 중 현재 게시물에서는 1, 2를 다루겠습니당 1. FCFS First-Come-First-Service 선착순 알고리즘 (먼저 오는 프로세스한테 프로세서 할당) Non-preemptive s..

CS/OS 2021.05.10