본문 바로가기

CS/운영체제4

Sync / Async, Block / Non-block 차이점 Sync, Async와 Block, Non-block이 얼핏 보면 비슷해보여 계속 헷갈려서 정리한다.. ✔ Sync / Async - 호출된 함수의 완료 여부를 누가 신경쓰는가 Synchronous 호출된 함수의 수행 결과 및 종료를 호출한 함수가 신경씀 호출한 함수가 호출된 함수의 작업이 끝나서 결과값을 반화하기를 기다리거나, 지속적으로 호출된 함수에게 확인 요청 Asynchronous 호출하는 함수가 호출된 함수의 완료 여부를 신경쓰지 않음 호출된 함수의 수행 결과 및 종료를 호출된 함수 혼자 직접 신경 쓰고 처리함(callback) ✔ Block / Non-block - 호출된 함수가 바로 제어권을 넘기는가 Block 호출된 함수가 자신이 할 일을 모두 마칠 때까지 제어권을 계속 가지고서 호출한 함.. 2022. 1. 18.
Thread-Safe란 무엇일까? ✔ Thread-Safe 멀티 쓰레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 쓰레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 뜻한다. 하나의 함수가 한 쓰레드로부터 호출되어 실행 중일 때, 다른 쓰레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 쓰레드에서의 수행 결과가 올바르게 나오는 것으로 정의한다. 멀티쓰레드 환경에서 동작해도 원래 의도한 형태로 동작하는 코드를 "Thread-Safe"하다고 한다. ✔ Thread-Safe 보장 방법 Re-entrancy 어떤 함수가 한 쓰레드에 의해 호출되어 실행 중일 때, 다른 쓰레드가 그 함수를 호출하더라도 그 결과가 각각에게 올바로 주어져야 한다. Thread-local storage 공유 자원의 사용을 최대.. 2022. 1. 17.
동기화 문제의 해결책 (Mutex, Semaphore) 동기화 문제 동기화 : 한정적인 시스템 자원에 여러 스레드가 동시에 접근해서 사용하면 문제가 발생할 수 있다. 이 문제를 방지하기 위해 여러 스레드에게 하나의 자원에 대한 처리 권한을 주거나 순서를 조정하는 기법이다. 임계 영역 (Critical Section) 동일한 자원을 동시에 접근하는 작업(ex. 공유 변수)을 실행하는 코드 영역을 임계영역 (Critical Section)이라고 한다. 동기화 기법 유저 모드의 동기화 커널의 힘을 빌리지 않는 동기화 기법(커널의 코드가 실행되지 않음.) 성능상 이점이 있으나 기능상의 제한이 존재. 임계 구역 기반의 동기화, 인터락 함수 기반의 동기화. 커널 모드의 동기화 커널에서 제공하는 동기화 기능을 이용하는 방법. 커널 모드로의 변경이 필요하고 이는 성능 저하.. 2021. 12. 13.
Process/Thread 정리, 차이점 프로세스(Process) 프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU 의 할당을 받을 수 있는 것을 말한다. 운영체제로부터 주소 공간, 파일, 메모리 등을 할당받으며 이것들을 총칭하여 프로세스라고 한다. 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체) 운영체제로부터 시스템 자원을 할당받는 작업의 단위 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받음 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다. 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다. Code : 코드 자체를 구성하는 메모리 영역(프로그램 명령) Data : 전역변수.. 2021. 12. 4.