### Synchronization Problems ### - Disabling interrupt : process가 shared data에 접근하는 동안에는 interrupt/systemcall이 걸리지 않게 비활성화 시키는 것 - Atomic instruction(test-and-set, compare-and-swap) : 값을 수정하는 동안에 다른 instruction이 수행이 되지 않게 하는 것(cpu 차원 지원-하드웨어 기반) : 다른 기법과 연관되서 사용한다. - Mutex lock : process가 critical section에 접근하면 lock을 걸어 다른 process가 접근 하지 못하게 하는 것 - Semaphore : 일반화된 mutex lock(2진 lock) + 정수..
github에서 follow한 친구들의 github한 내용들이 올라오고 있다. 그래서 어떻게 하면 보이는지 물어보고 알게되어 정리를 하게 되었습니다. but 맨 처음 repositories(public일때)를 만들때, public private 변경할 때, star, fork한 것만 뜬다고 들었습니다. 1. 만든 repositories를 눌러서 setting에 들어갑니다. 2. Manage access에 들어갑니다. 3. Manage에 들어갑니다. 4. Danger Zone에서 Change repository visibility를 변경하기 위해 Change visibility를 들어갑니다. 5. 해당 page가 뜨면 public or private로 교체를 하고 밑에 쓰라는데로 씁니다. (저같은 경우는 ..
### Mutex Lock ### : S/W수준의 synchronization tool : critical section에서 mutual exclusion을 해결하기 위해 rock변수를 사용한다. : busy waiting 문제 발생 (busy waiting - 권한을 얻을 때까지 확인하는 것(원하는 자원을 얻기 위해 기다리는 것 x) => cpu 자원 낭비) acquire() { while (!available); // busy wait available = false; } release() { // lock을 풀어주는 function available = true; } while true{ // acquire lock{ //critical section } // release lock{ // rema..
### Hardware Supprot Synchronization ### 1. : 하나의 word가 주어질때 word 확인 후 값 바꾸는 일한다 : test-and-set instruction동안에는 system call/interrupt가 발생하지 않는다. => instruction 자체가 이러한 특성을 가진다(cpu가 고정된 형태로 지원해 준다) => overhead가 없다. : 자동적으로 실행 : 전달된 parameter의 원래 value를 return한다. : 전달된 parameter의 새 값을 true로 설정한다. boolean test_and_set(boolean *target){ boolean return_value = *target; ..
### Critical Section(임계구역) ### while (true){ //entry section critical section // exit section remainder section } : 각 process 별로 포함하고 있는 code 집합(다른 process와 같이 접근 가능한 code영역) => 여러개 process가 공통의 data에 접근하기 때문에 data inconsistency 발생 : data inconsistency같은 문제 막기위한 제약조건 => process 1개가 critical section에 진입을 하여 code 수행하면 다른 process들은 critical section에 접근 불가 (2개 이상의 process가 cri..
### Producer and Consumer Problem ### producer(data 넣기), consumer(data 사용) : 컴퓨터가 가지는 상관 관계 (producer 와 consumer이 누구와 관계하고 있느냐에 따라 달라질 수 있다) : data를 공유하기 위해서 중간에 buffer을 사용한다. 1. : producer process는 consumer process에 의해 consumer되는 정보를 생성합니다. 2. : capacity가 무한한 buffer : producer가 data를 buffer에 넣을 때 대기하지 않아도 된다. : consumer인 경우 buffer에 data 없는 경우 wait해야 한다. : 이론적일 때 사용(이상적인 것) 3. : ca..
Synchronize : 현재 작업의 응답이 발생 동시에 다음 작업을 요청하는 작업이 발생하는 것 ### Synchronization Tools ### : process가 끝나기 전에 잘못된 data를 가지고 process를 실행할 경우 문제(잘못된 출력)가 발생하는데 이러한 문제를 해결하기 위한 것 1. : 여러 process가 더 나은 성능을 위해 명령을 동시에 실행하는 컴퓨팅 모델 : Cooperating process가 동시에 shared data에 접근해서 연산작업을 할 수 있는 것 (process가 data를 공유할 때 data에 대한 접근 순서가 동시에 이뤄질 수 있다.) : 협력 p..
### Multilevel Queue ### : priority queue를 수행할 때 ready queue를 여러개 두어 process 관리/검색하기 쉽다. : 구현 복잡도는 증가한다 1. : 각 입력된 process가 process에 맞는 queue에 할당이 되면 그 process가 끝날때까지 영원히 해당 queue에 대기를 타는 형식 => 융통성이 없지만 관리하기 좋다. : Process 유형에 따라 process를 별도의 queue로 분할 합니다. : Heterogeneous processes(이질 process)는 서로 다른 성능 요구사항과 일정 요구 사항을 갖습니다. : 각 대기열에는 자체 예약 정책이 있습니다. : 체계적이고 조직적인 scheduling 관리 방법 : 입력된..