반응형 Computer Science/운영체제15 Blocking / Non-Blocking & Synchronous / Asynchronous 공부를 하다가 Blocking / Non-Blocking & Synchronous / Asynchronous 내용을 접하게 되었다. 각각 대충 어떤 의미인지 가볍게 알고 있었으며 Blocking-Synchronous, Non-Blokcing-Asynchronous가 비슷한 개념?으로 알고 있었다. 하지만 당연하게도 다른 개념이니 용어를 구분하였을 것이다. 따라서 이번 기회에 한 번 공부 및 정리해보려고 한다. 우선 각 용어들의 개념과 차이에 대해서 이해하고 넘어가자. Blokcing / Non-Blocking과 Synchronous / Asynchronous는 관심사 관점으로 구분할 수 있다. 관심사 관점뿐만 아니라 입장을 통해서도 구분할 수 있다. 그리고 Async와 NonBlocking은 동작 관.. 2021. 7. 6. 프로세스 동기화(Process Synchronization)(2) 이전 글에서 임계구역 문제를 해결하기 위한 동기화 하드웨어 방법은 복잡할 뿐 아니라 응용 프로그래머가 사용할 수 없는 방법이라고 하였다. 이를 위해 운영체제 설계자들은 소프트웨어 도구들을 개발하였는데 그중 가장 간단한 도구가 바로 mutex 락이다. mutex 락 역시 lock을 사용하는 방법으로 프로세스는 임계구역에 들어가기 전에 반드시 lock을 획득해야 하고 임계구역을 빠져나올 때 lock을 반환해야 한다. mutex 락은 available이라는 변수로 락의 가용 여부를 표시한다. mutex 락을 사용하는 프로세스의 구조는 다음과 같다. acquire() 메서드를 통해 lock을 획득하고 release() 메서드를 통해 lock을 반환한다. do { acquire() //lock을 획득 --c.. 2021. 7. 5. 프로세스 동기화(Process Synchronization)(1) 프로세스는 병렬로 실행될 수 있으며 데이터를 공유할 수 있다. 만약 여러 개의 프로세스가 같은 자원을 동시에 접근한다면 어떻게 될까? 잘못된 결과가 발생할 것이다. 예를 들어 counter라는 변수가 있고 현재 5라는 값이 들어있다고 하자. 만약 프로세스 A는 counter++ 연산을, 프로세스 B는 counter-- 연산을 병행하게 실행한다면 counter의 값은 4, 5, 6 중 한 값이 될 것이다. 이와 같이 동시에 여러 개의 프로세스가 동일한 자료를 접근하여 조작하고, 그 실행 결과가 접근이 발생한 특정 순서에 의존하는 상황을 경쟁 상황(Race Condition)이라고 한다. 경쟁 상황으로부터 보호하기 위해서는 한순간에 하나의 프로세스만이 자료에 접근 및 조작이 가능하도록 보장해 줘야 한다... 2021. 7. 5. CPU 스케줄링 프로세스는 프로세스 스케줄링을 통해 적절한 CPU에 배치된다고 하였다. 프로세스들은 프로세스 스케줄러에 의해 준비 완료 큐에 놓이게 되며 CPU의 할당을 기다리고 있는다. 이후 단기 스케줄러에 의해 프로세스에게 CPU가 할당되면서 준비 상태에서 실행 상태로 변경된다고 하였다. 다중 프로그래밍의 목적은 프로세스의 CPU 이용을 최대화하여 사용되지 않는 CPU를 최소화하는 것이라고 하였다. CPU 스케줄링은 CPU 이용률을 최대화하기 위해 준비 완료 큐에 있는 프로세스에게 어떤 기준으로 CPU를 할당할 것인지를 결정하는 방법이다. CPU 스케줄링은 다양한 알고리즘들이 존재한다. 이들의 성능을 비교하는 특성은 CPU 이용률(Utilization), 처리량(Throughput), 총처리 시간(Turnaro.. 2021. 7. 5. 프로세스 스케줄링(Process Scheduling) 다중 프로그래밍의 목적은 프로세스의 CPU 이용을 최대화하여 사용되지 않는 CPU를 최소화하는 것이다. 프로세스 스케줄링이란 프로세스들을 적절한 CPU에 배치하는 것이며, 이를 수행하는 것이 프로세스 스케줄러이다. 프로세스들을 스케줄링하기 위해 스케줄링 큐(Scheduling Queues)라고 불리는 3개의 큐(Queue)를 사용하여 프로세스들을 관리한다. 잡 큐 : 프로세스가 시스템에 들어오면 놓여지는 큐로써 시스템 안의 모든 프로세스가 들어있다. 준비 완료 큐 : 주 메모리에 존재하며, 준비 완료 상태에서 CPU의 할당을 기다리는 프로세스들이 들어있다. 장치 큐 : 특정 입출력 장치를 대기하는 프로세스들이 들어있다. 프로세스들은 스케줄링 큐의 한 곳에 무조건 배치되어야 한다. 이는 스케줄러에 의.. 2021. 7. 5. 프로세스(Process) vs 스레드(Thread) 프로세스와 스레드를 많이 들어봤지만 비슷한 개념으로 대충 알고 넘어갔었다. 하지만 둘은 다른 개념이기 때문에 이번 기회에 한번 공부 및 정리해 보려고 한다. 먼저 프로세스(Process)이다. 프로세스는 간단하게 실행 중인 프로그램을 뜻한다. 일반적으로 함수의 매개변수, 복귀 주소와 로컬 변수와 같은 임시적인 자료를 가지는 프로세스 스택과 전역 변수들을 수록하는 데이터 섹션을 포함한다. 또한, 프로세스 실행 중에 동적으로 할당되는 메모리인 힙을 포함한다. 프로세스는 실행되면서 현재의 활동에 따라 상태가 변한다. 프로세스의 상태도는 다음과 같다. New : 프로세스가 생성 중인 상태 Ready : 프로세스가 스케줄러에 할당되기를 대기하는 상태 Running : 프로세스의 명령어들이 실행되고 있는 상태 Wa.. 2021. 7. 5. 이전 1 2 다음 반응형