협력적(cooperating) process는 시스템 내에서 실행 중인 다른 process의 실행에 영향을 주거나 영향을 받는 process이다. 공유 데이터를 사용하는 process(예를 들면 thread)들이 공유 데이터에 동시에 접근한다면, 공유 데이터는 일관성을 유지할 수 없을 것이다. 이를 해결하기 위한 다양한 메커니즘이 있다. 1. Background동기화가 필요한 상황을 살펴보기 위해 생산자-소비자 문제를 예로 들자. 생산자와 소비자 코드는 아래와 같다. * Producer code item nextProduced; while( true ) { /* Produce an item and store it in nextProduced */ nextProduced = makeNewItem( . . ..
Real-time system은 task 처리에 걸리는 시간을 일관되게 유지할 수 있냐가 중요한 성능의 척도이다. Real-time system의 목표는 실시간 성능 보장에 있다. * Soft real-time systems: task 처리 시간이 달라지면 성능이 감소하는 경우 (streaming video 등) * Hard real-time systems: task 처리 시간이 달라지면 실패하는 경우 (자동차의 air-bag 등) 1. Minimizing LatencyReal-time system은 사건-중심의 특성을 가지고 있어서, 일이 발생하면 빠르게 처리되어야 한다. 따라서 Latency를 최소화 해야한다.Event Latency는 event가 발생하고 system이 응답하기까지의 시간이다. 아래..
이전 글인 Scheduling Algorithms에서 process scheduler를 다뤘다. process scheduler는 오직 kernel thread의 scheduling을 다룬다. 이번 글은 user thread가 어떻게 thread 라이브러리에 의해 kernel thread에 사상(mapping)되는지 살펴볼 것이다. (무슨 말인지 모르겠다면 Multi Thread Programming 글의 Multithreading Models 항목을 보자) 1. Contention ScopeMany-to-One, Many-to-Many 모델을 구현하는 시스템에서는 동일한 process에 속한 user thread들끼리 CPU를 경쟁하기 때문에 Process-Contention Scope(PCS)가 발생..
CPU scheduling은 short-term scheduler가 ready queue에 존재하는 process 중 어느 process에게 CPU를 할당할 것인지를 결정하는 문제를 다룬다. 이 과정은 process scheduler 또는 dispatcher에 의해 수행된다. 1. First-Come, First-Served Scheduling (FCFS)CPU를 먼저 요청하는 process가 CPU를 먼저 할당받는 scheduler이다. 따라서 선입선출(FIFO) queue로 쉽게 관리할 수 있다. FCFS Scheduling은 non-preemptive scheduler이기 때문에 시분할 시스템(대화형 시스템)에서는 사용하지 못한다.선입선처리 방식이기 때문에 구현하기는 쉽지만, process의 평균 ..
1. 기본 개념다중 프로그래밍의 목적은 CPU 이용률을 최대화하기 위해 항상 실행 중인 프로세스가 존재하도록 하는 것이다. 다중 프로그래밍을 달성하기 위해선 process를 CPU에 할당하는 작업인 Scheduling이 필수이다. 사실 process가 아니라 kernel thread를 scheduling 하는 것인데, 일반적으로 process scheduling과 thread scheduling은 같다고 여겨진다. 2. CPU-I/O burst cycleCPU가 수행되는 구간을 CPU burst, I/O때문에 block되는 구간을 I/O burst라고 한다. 아래 그림 1처럼, process는 CPU burst와 I/O burst의 cycle로 구성된다. CPU burst 크기가 크면 CPU intens..
1. 선택 정렬 (Selection Sort) n개의 요소를 가지고 있는 배열을 돌며, 가장 작은 요소의 인덱스를 찾아서 타겟 인덱스의 요소와 바꿔줌. n-1, n-2, ... , 1 까지 반복하므로 시간 복잡도 O(n^2), 배열 하나 써서 공간 복잡도 O(n) int arr[] = { 6, 5, 3, 1, 8, 7, 2, 4 }; for(int i = 0; i arr[j]) min_idx = j; } int temp = arr[min_idx]; arr[min_idx] = arr[i]..
Spring boot와 MySQL을 이용해 게시판을 제작했다. Mybatis, JDBC를 이용해 Google Cloud Platform에 올려둔 MySQL을 이용했다. * 참고 (예제들)http://huskdoll.tistory.com/792 http://forest71.tistory.com/2?category=537814 http://addio3305.tistory.com/72 A 컨트롤러에서 받은 객체 사용한 뒤 B로 넘길 때 멤버 처리https://stackoverflow.com/questions/25027801/how-to-set-thymeleaf-thfield-value-from-other-variablehttps://stackoverflow.com/questions/13629653/using-..
- Total
- Today
- Yesterday
- mybatis
- @Qualifier
- Linux
- 클로저
- npm
- JavaScript
- spring batch
- Express
- @Component
- MySQL
- Tasklet
- Closure
- Bin
- thymeleaf cannot resolve
- Bean
- spring
- thymeleaf 변수 인식
- Check point within polygon
- @Bean
- chunk
- Barycentric coordinates
- nodejs
- unity
- @Autowired
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |