CS

메모리는 주소를 통해 접근하는 매체입니다. 그렇기 때문에 메모리를 찾아가기 위해서 메모리별로 주소가 매겨집니다. 이 주소는 크게 2가지로 나뉩니다. 1.  논리적(Logical) 주소  vs 물리적(Physical) 주소 논리적 주소 프로그램이 실행되면 프로그램 별로 독자적인 주소 공간이 형성됩니다. 이처럼 프로그램마다 가지고 있는 주소를 논리적 주소(가상 주소)라고 합니다. 프로세스마다 0번지부터 시작하는 독자적인 주소 공간입니다.  물리적 주소 물리적인 주소는 말 그대로 실제 물리적인 메모리의 주소를 말합니다. 메모리에 실제 올라가는 위치를 의미합니다. 물리적인 메모리는 하나임으로 모든 프로그램 주소를 0번지부터 통으로 관리합니다. 그래서 물리적인 메모리 주소의 아랫부분에는 운영체제 커널, 상위에는 ..
1. Deadlock (교착 상태) 데드락이란 일련의 프로세스들이 서로가 가진 자원을 기다리면서 잠들어있는 상태를 말합니다. 위의 그림에서 자동차는 프로세스, 도로는 자원으로 생각하면 이해가 쉬운데요. 자동차(프로세스)들이 각각의 도로(자원)를 점유한 상태에서 다른 자동차(프로세스)들이 사용하고 있는 도로(자원)를 사용하기 위해 대기하고 있지만, 진행이 더 이상 되질 않는 상태를 말합니다.  다시 말해, 두 개 이상의 프로세스가 자원을 점유한 상태에서, 다른 프로세스가 점유하고 있는 자원을 요구하여 서로의 작업이 끝나기만을 기다리며 영원히 끝나지 않는 상황입니다.   프로세스가 자원을 사용하는 절차는 크게 4단계로 자원 요청 -> 자원 획득-> 자원 사용 -> 자원 반납의 단계를 거칩니다. 데드락을 각각..
이전 포스팅에서 세마포어 방식을 이용한 동기화 문제 해결법에 대해 알아보았습니다. 이번 시간에는 모니터 방식에 대해 설명드리겠습니다. 세마포어와 모니터는 둘다 프로세스 동기화 문제를 프로그래머 입장에서 좀 더 쉽게 할 수 있게 해줍니다.  세마포어 방식은 단점이 있는데, 만약 한번 실수하게 되면 모든 시스템에 치명적인 영향을 준다는 것입니다.  예를 들어 Critical section에 들어가기 전 V 연산을 하고 빠져나올 때 P 연산을 하게 된다면, 2개 이상의 프로세스가 Critical section에 들어갈 수 있어 상호 배제 원칙(Mutual exclusion)이 깨지게 됩니다.  또 한가지 경우는 P 연산 후 빠져나올 때 P 연산을 한번 더 수행한다면, Deadlock에 걸려 어느 누구도 Cri..
프로세스 동기화와 관련된 고전적인 문제는 세 가지 정도가 있습니다. Bounded-Buffer Problem (Producer-Consumer Problem)Readers and Writers ProblemDining - Philosophers Problem오늘은 이 세 가지 문제들에 대해 포스팅하겠습니다.  1. Bounded-Buffer Problem (Producer-Consumer Problem)  버퍼(Buffer)란 데이터를 임시로 저장하는 공간입니다. Bounded-Buffer Problem은 버퍼의 크기가 유한한 환경에서의 문제가 발생하는 것입니다.  위 사진에서는 버퍼가 크기가 유한한 원형 형태로 구성이 되어있습니다. 그리고 프로세스가 생산자(Producer)와 소비자(Consumer)의..
1. Semaphores (세마포어) 세마포어는 일종의 추상 자료형입니다. 여기서 추상 자료형이란, Object와 Operation으로 구성된 개념적인 모델을 말합니다. 만약 정수 추상 자료형이라고 한다면 덧셈, 뺄셈 등의 연산을 할 수 있는걸 알듯이 어떤 자료를 어떤 방식으로 다룰지에 대한 논리적인 정의, 즉 어떤 연산을 수행할 수 있는지만 알면 되는 것입니다.    여기서의 세마포어도 마찬가지입니다. Semaphore S라는 세마포어 변수 S가 있다고 하면 S에는 정수 값을 가질 수 있고, 연산은 P연산과 V연산 두 가지가 정의됩니다. P 연산은 공유 데이터를 획득하는 과정이고 V 연산은 자원을 다 사용하고 반납하는 과정입니다. 세마포어의 변수는 자원의 갯수를 나타냅니다. 만약 세마포어 변수 값이 5..
1. Critical Section(임계 영역) 프로세스 동기화 문제를 해결하는 방법에 대해 알아보기 전에, 먼저 알아야할 용어가 있습니다. Critical Section(임계 영역)에 대한 것입니다.  사진을 통해 설명드리자면, 공유 데이터인 X에 프로세스 P1과 P2가 거의 동시에 접근하는 상황에서 공유 데이터를 접근하는 코드가 Critical Section 입니다. 만약 프로세스 1이 Critical Section에 있을 때, 다른 프로세스에게 CPU 제어권을 빼앗기더라도 공유 데이터에 접근하는 Critical Section은 막아두어야 합니다. 프로세스 1이 Critical Section에 빠져나왔을 때 프로세스 2가 Critical Section에 접근할 수 있습니다.   즉,  Critical..
동구름이
'CS' 카테고리의 글 목록 (8 Page)