728x90
반응형
728x90
반응형
출처 : https://www.youtube.com/watch?v=33OqgesF-mM&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=15 HW solution에서도 여전히 Busy waiting 문제가 남아있었다. Busy waiting 문제를 해결하고자 OS가 지원하는 SW 솔루션들이 등장하게 된다. Spinlock Spinlock은 정수형 변수(S)이다. 초기화, P(), V() 연산으로만 접근 가능 위 연산들은 indivisible (or atomic) 연산 OS가 보장해줌. 즉, P(), V() 연산이 한 번 실행되면 preemptive 되지 않고 끝까지 실행됨 전체가 한 instruction cycle에 수행 됨 P(S) 연산 : S는 물건의 갯수, P는 물..
언제나 그랬듯이 AMI로 EC2 인스턴스를 생성한다. 인스턴스의 이름을 지어주고, 키페어는 없음, 보안 그룹은 이전에 만들었던 보안 그룹을 설정하고 인스턴스 생성을 한다. 현재 퍼블릭 IP 주소는 43.200.170.55 이다. 좌측 대시보드에서 네트워크 및 보안 -> 탄력적 IP 로 들어간다. 우측 상단의 탄력적 IP 주소 할당을 클릭한다. 탄력적 IP 주소를 설정을 할 수 있다. Elastic IP는 리전 단위이기 때문에 다른 리전에서는 사용할 수 없다. 한국의 서울 리전인 ap-northeast-2를 설정하고 할당을 클릭한다. 방금 생성했던 인스턴스를 선택하고 연결을 클릭한다. 다시 인스턴스로 들어가보면 퍼블릭 IP 주소가 43.200.170.55에서 43.202.234.185 로 변경된 것을 확인..
출처 : https://www.youtube.com/watch?v=Zps0ckSvKys&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=14 SW solution 들은 비효율적이라는 문제점이 있었다. 이 문제를 해결하고자 HW를 활요해서 비효율성을 해결하는 HW solution을 알아보자. Synchronization Hardware TestAndSet(TAS) instruction Test와 Set을 한 번에 수행하는 기계어 Machine instruction Atomicity, Indivisible 실행 중 interrupt를 받지 않음 (preemptive 되지 않음) Busy waiting Inefficient 이 TestAndSet 명령들이 중간의 인터럽트 없이..
출처 : https://www.youtube.com/watch?v=lY43KR3IItw&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=13 Dekker's Algorithm Two process ME을 보장하는 최초의 알고리즘 이전에 사용했던 턴 과 깃발을 둘 다 사용하는 알고리즘 내가 도달하게 되면 깃발을 True로 만든다. 이때, 상대방의 깃발이 False라면 바로 CS에 진입한다. 만약 상대방의 깃발이 True라면, 턴이 내 턴인지, 상대방의 턴인지 확인한다. 만약 내 턴이면 CS에 진입한다. 만약 상대방의 턴이라면 깃발을 내리고 상대방의 턴이 끝날 때까지 (내 턴이 올때까지) 기다린다. 내 턴이 오면 CS에 진입하고 나온 뒤에 상대방에게 턴을 넘기고 깃발을 내린..
출처 : https://www.youtube.com/watch?v=wdaf2gy83uU&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=12 Process Synchronization (프로세스 동기화) 다중 프로그래밍 시스템 여러 개의 프로세스들이 존재 프로세스들은 서로 독립적으로 동작 (동시에 동작) 공유 자원 또는 데이터가 있을 때, 문제 발생 가능 동기화 (Synchronization) : 대화 프로세스들이 서로 동작을 맞추는 것 프로세스들이 서로 정보를 공유하는 것 Asynchronous and Concurrent P's 비동기적(Asynchronous) 프로세스들이 서로에 대해 모름 병행적(Concurrent) 여러 개의 프로세스들이 동시에 시스템에 존재 병행..
출처 : https://www.youtube.com/watch?v=actKUqea6Xc&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=11 이전 장에서 SPN, SRTN, HRRN 스케줄링 기법들을 배웠다. 이 스케줄링 기법들은 효율성, 성능을 높일 수 있었지만 Burst time을 예측 해야하고 이것이 어렵다는 문제점이 있었다. 그래서 Burst time을 예측하지 않고도 비슷한 효과를 내고자 MLQ(Multi-Level Queue), MFQ(Multi-Level Feedback Queue) 스케줄링 기법들이 등장하게 되었다. MLQ(Multi-Level Queue) : ready queue를 여러 개 둬서 작업(혹은 우선순위)를 배정해주겠다. 작업 (or 우선순위)..