OS

메모리는 주소를 통해 접근하는 매체입니다. 그렇기 때문에 메모리를 찾아가기 위해서 메모리별로 주소가 매겨집니다. 이 주소는 크게 2가지로 나뉩니다. 1.  논리적(Logical) 주소  vs 물리적(Physical) 주소 논리적 주소 프로그램이 실행되면 프로그램 별로 독자적인 주소 공간이 형성됩니다. 이처럼 프로그램마다 가지고 있는 주소를 논리적 주소(가상 주소)라고 합니다. 프로세스마다 0번지부터 시작하는 독자적인 주소 공간입니다.  물리적 주소 물리적인 주소는 말 그대로 실제 물리적인 메모리의 주소를 말합니다. 메모리에 실제 올라가는 위치를 의미합니다. 물리적인 메모리는 하나임으로 모든 프로그램 주소를 0번지부터 통으로 관리합니다. 그래서 물리적인 메모리 주소의 아랫부분에는 운영체제 커널, 상위에는 ..
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..
1. 데이터의 접근 프로세스 동기화에 대한 설명 이전에 컴퓨터 시스템 안에서 데이터가 접근되는 패턴에 대해 간단히 짚고 넘어가겠습니다. 컴퓨터 시스템 어떤 위치에 있던 데이터에 접근하는 방식은 아래와 사진과 같은 패턴을 가집니다.  우선 데이터가 저장된 위치가 있을 것이고, 그 저장된 데이터를 읽어와 연산해서 다시 원래의 저장된 위치에 저장하는 방식을 거치게 됩니다. 여기서 저장된 위치에서 읽어와 연산 후 다시 반영을 하기 때문에 동기화의 문제가 생길 수 있습니다. 만약 데이터를 읽기만 하면, 누가 읽든, 누가 읽던 도중에 다른 프로세스가 읽든 별로 문제가 되지 않습니다.  그러나 데이터를 수정해야 한다면, 누군가 수정할 때 다른 곳에서 수정이 동시에 진행되는 상황 등이 있다면, 어떤 값을 연산 결과에 ..
1. 프로세스의 생성 프로세스의 생성은 부모 프로세스가 본인과 같은 자식 프로세스를 복제하여 생성됩니다. 여기서 복제라는 것은 프로세스의 문맥을 모두 복사하는 것입니다. 즉, 부모 프로세스의 주소 공간인 code, data, stack을 그대로 복사하여 자식 프로세스를 하나 만들고, 부모 프로세스의 CPU 문맥인 프로그램 카운터(CPU에서 인스트럭션을 어디까지 수행했는지 나타내는 레지스터)도 부모 프로세스를 복제하게 됩니다.   이렇게 복제된 프로세스는 독립적인 프로세스이기 때문에, 부모 프로세스와 자원을 공유하는 것이 아니라 경쟁적으로 사용하는 것이 원칙적으로는 맞습니다.   하지만 자식 프로세스가 부모 프로세스를 복제하면 메모리에 똑같은 내용이 두 번 올라가게 되어 메모리가 낭비됩니다. 그래서 일부 ..
1. Thread 스레드란, 프로세스 내부에서 실행되는 작은 작업 단위를 말합니다. (1) Thread가 쓰이게 된 배경 프로세스가 하나 생기면 code, data, stack으로 구성된 주소 공간이 프로세스 별로 메모리에 만들어집니다. 그리고 그 프로세스 하나를 관리하기 위해서 운영 체제 내부에 PCB라는 것을 두고 있습니다. PCB에는 사진과 같이 프로세스의 상태, 식별 ID, 현재 메모리의 어느 부분을 실행하고 있는지 가르키는 program counter 등이 있습니다.  만약 동일한 일을 하는 프로세스가 여러 개 있다고 가정하면, 프로세스마다 별도의 주소 공간이 만들어져서 메모리가 낭비됩니다.   같은 일을 하는 프로세스를 여러 개 띄워놓고 싶으면, 메모리 공간만 하나 띄워놓고 각 프로세스마다 다..
동구름이
'OS' 태그의 글 목록 (3 Page)