2024/09 3

Docker & 가상화

도커란 ? 애플리케이션을 패키징할 수 있는 툴, 컨테이너라고 불리는 하나의 작은 소프트웨어 유닛 안에 어플리케이션과 그에 필요한 시스템 툴,  환경설정, 모든 Dependencies를 하나로 묶어서 다른 서버, 다른 pc 그 어떤 곳에도 쉽게 배포하고 안정적으로 구동할 수 있게 도와주는 툴 ->어플리케이션이 구동하는데 필요한 모든 것들을 도커 컨테이너에 담아놨다고 볼 수 있다. VM vs 컨테이너(도커)  VM는 하드웨어 Infrastructure 위에 vmware나 VirtualBox와 같은 이런 Hypervisor 소프트웨어를  이용해서 각각의 가상의 머신을 만들 수 있다. 한 운영체제 위에서 동일한 어플리케이션을 각각의  고립된 다른 환경에서 구동하기 위해서는 이 VM을 이용해서 어플리케이션을 구동..

운영체제 2024.09.13

Sync/Async & Blocking/Non-Blocking

Synchronous : 요청이 들어온 순서에 맞게 하나씩 처리하는 것Asynchronous : 하나의 요청이 끝나기 전에, 다른 요청을 동시에 처리할 수 있는 것Blocking : 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것NonBlocking : 다른 추제의 작업에 관련없이 자신의 작업을 하는 것 동기(Synchronous), 비동기(Asynchronous)둘의 차이는 한 작업이 다른 작업을 호출하는 경우, 호출되는 것의 작업 완료 여부를 누가 신경쓰는 지에 따라 나뉜다.  Synchronous는 호출하는 함수가 작업 완료 여부를 확인한다. Synchronous의 뜻은 '동시 발생하는'으로 컴퓨터 공학에서 동기는 현재 작업의 응답..

운영체제 2024.09.01

상호 배제 / 동기화 (Mutex, Semaphore, Monitor)

동기화(synchronization)를 위한 상호 배제(Mutual Exclusion) 앞서 얘기했듯 공유자원에 대해 다수의 프로세스 혹은 스레드가 접근할 때 경쟁조건이 발생하여 의도하지 않은 동작이 발생할 수 있다. 따라서 프로세스나 스레드를 동기화 해야한다. 이때, 동기화란 공유자원에 동시에 접근하지 못하도록 접근 순서를 제어하는 방법을 의미한다.프로세스/스레드 간 동기화는 일반적으로 상호배제를 통해 구현할 수 있다. 상호배제(Mutual Exclusion)란? 동시 프로그래밍에서 공유 불가능한 자원의 동시 사용을 피하기 위해 사용되는 알고리즘으로, 임계구역으로 불리는 코드 영역에 의해 구현된다. 하나의 프로세스가 순차적으로 파일을 읽는 작업을 하는 도중에 다른 프로세스가 파일의 내용을 변경해 버리면..

운영체제 2024.09.01