본문 바로가기

OS12

[OS] Buffering [Buffer 란?] - Process 간에 Data가 이동하는 동안, Data를 잠시 보유하는데 사용하는 Memory 영역. - Buffer는 보통 Data 수신 속도(Received)와 처리 속도(Processed) 사이에 차이가 발생할 때 사용. - Buffer를 없애면 Data 손실이 발생하거나 대역폭 사용률이 낮아짐. [Buffering 이란?] - 통신이 직간접적이든 뭐든 간에, 메시지는 Temporary Queue 를 통한 Process 통신 과정을 거침. - 생산자와 소비자의 속도 차이에서 오는 비효율 극복 - 서로 다른 자료 전송 사이즈가 다른 상황을 극복 - Data 입출력의 의미를 명확하기 하기 위해 - Data를 보내거나 받기 전, 기기가 Data를 복사할 수 있게 도움. - Sem.. 2022. 8. 8.
[OS] Cache - Cache 는 다음 3가지 포맷으로 사용된다. * Memory * File * CDN [Memory] - 메인 Memory와 CPU 간의 data 속도 향상을 위한 중간 buffer 역할을 하는, CPU 내외에 있는 고속 Memory ==> 전체 System 성능 개선 - 실제 Memory 와 CPU 사이에서 빠른 전달을 위해 미리 data를 저장해두는 Memory ==> 본래 Memory 가 가지고 있던 data 일부를 가져와 빠르게 실행하기 위해 쌓아둔 것 === Cache Memory - 저장된 data가 언제든 지워질 수 있으므로, 그걸 전제로 서버를 설계해야함. - request 빈도가 높지만, data 량이 많지 않은 것으로 cache 하면 유용함. [File] - web server 와 .. 2022. 8. 7.
[OS] Deadlock 예제 코드 (with Java, C++) [Example 1 in Java] public class DeadLock { public static void main(String[] args) throws InterruptedException { Thread mainThread = Thread.currentThread(); Thread thread1 = new Thread(new Runnable() { @Override public void run() { try { mainThread.join(); } catch (InterruptedException e) { e.printStackTrace(); } } }); thread1.start(); thread1.join(); } } // https://stackoverflow.com/questions/1.. 2022. 7. 24.
[OS] Deadlock (데드락) - 사용자 A,B라는 2명과 연장 도구 '망치', '스패너' 총 2개 있다.두 사용자는 망치&스패너를 모두 써서 작업해야 한다. 먼저 사용자 A는 망치를 사용하고, B는 스패너를 쓴다. 그러다 사용자 A는 스패너가 필요하기에 망치를 쥐고 기다린다. 사용자 B도 자신의 작업을 마쳐 망치가 필요로 하지만 A를 배려하여 기다린다. ==> 사용자 A,B는 각자의 tool을 가진 채로 한 쪽이 먼저 주겠거니... 하며 영원히 기다린다(loop). - 다수의 process들 사이에서 resource가 공유되며 발생하는 문제 - 공유된 resource 는 Files, Database Tables, Memory, Peripherals(마우스, 프린터 등 주변기기), Network 등이 있음 - deadlock 은 Th.. 2022. 7. 21.