PCB란? PCB는 운영 체제에서 프로세스를 관리(Process Management) 하기 위해 사용되는 데이터 구조이다. 운영체제는 하드웨어 자원을 관리하고 프로그램들을 지원해주는 역할을 한다. 커널은 이 운영체제의 핵심으로 프로그램과 하드웨어의 중간다리 역할을 한다. 위의 그림을 보게 되면 커널에는 Data Structure for Hardware(하드웨어의 데이터 구조)와 PCB가 있는 것을 알 수 있다. 그리고 프로세스와 하드웨어를 관리하기 위한 데이터가 담겨있는 이런 데이터 구조체를 통틀어 metadata(메타데이터)라고 부른다. PCB는 각 프로세스에 대해 운영 체제가 생성하고 유지하며, 해당 프로세스에 대한 정보를 저장한다. PCB가 가지는 정보 PCB가 가지는 정보는 아래와 같다. PCB를..
CPU 스케줄러는 CPU 스케줄링 알고리즘에 따라 프로세스에서 해야 하는 일을 스레드 단위로 CPU에 할당한다. 이 때 어떤 프로그램에 CPU 소유권을 줄 것인지 결정하는 것이 바로 CPU 스케줄링 알고리즘이다. CPU 스케줄링 알고리즘은 다음과 같이 나눌 수 있다. Non Preemptive (비선점형) 비선점형 방식은 프로세스가 스스로 CPU 소유권을 포기하는 방식으로 강제로 프로세스를 중지하지 않는다. FCFS (First Come First Served) 큐에 가장 먼저 도착한 순서대로 CPU 할당 실행 시간이 짧은 게 뒤로 가면 평균 대기 시간이 길어짐으로 준비 큐에서 오래 기다리는 현상인 'Convoy Effect' 가 발생한다 SJF (Shortest Job First) 수행시간이 가장 짧다..
교착 상태란? 교착 상태는 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태이다. 예를 들어 하나의 사다리가 있고, 두 명의 사람이 각각 사다리의 위쪽과 아래쪽에 있다고 가정한다. 이때 아래에 있는 사람은 위로 올라 가려고 하고, 위에 있는 사람은 아래로 내려오려고 한다면, 두 사람은 서로 상대방이 사다리에서 비켜줄 때까지 하염없이 기다리고 있을 것이고 결과적으로 아무도 사다리를 내려오거나 올라가지 못하게 되는 상태가 그러하다. 교착 상태의 원인으로는 다음 4가지가 존재한다. 1. 상호 배제 (Mutual Exclusion): 한 프로세스가 자원을 독점하고 있으며 다른 프로세스들은 접근이 불가능하다. 2. 점유 대기 (Hold and W..
공유 자원은 시스템 안에서 각 프로세스, 스레드가 함께 접근할 수 있는 메모리, 파일, 데이터 등의 자원이나 변수를 의미한다. 이런 상태의 자원을 두 개 이상의 프로세스가 동시에 읽거나 쓰는 상황을 경쟁 상태라고 한다. Race Condition (경쟁 상태) 경쟁 상태는 공유 자원에 대해 여러 프로세스가 동시에 접근할 때, 결과값에 영향을 줄 수 있는 상태를 말한다. 이런 상태는 동시 접근 시 일관성을 해치는 결과가 나타날 수 있다. 경쟁 상태가 발생하는 경우는 다음과 같다. 공유 데이터 접근: 여러 스레드 또는 프로세스가 공유된 메모리나 파일 등의 데이터에 동시에 접근하고 수정하려고 할 때 경쟁 상태가 발생할 수 있다. 예를 들어, 한 스레드가 데이터를 수정하는 도중에 다른 스레드가 같은 데이터를 읽..
프로세스 프로세스는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 우리가 작업 관리자에 들어가 보았을 때 보이는 것들이 바로 프로세스라고 할 수 있다. 위의 사진에서 알 수 있는 것은 프로세스가 앱과 background 프로세스로 나누어져 있다는 것이다. 앱은 다른 말로 foreground 프로세스라고 할 수 있다. 하나의 프로세스에 할당되는 총 메모리 공간을 크게 커널 영역과 사용자 영역으로 나눌 수 있다. 커널 영역에서는 많은 프로세스가 CPU를 필요로 할 때 자원을 배분하는 PCB(Process Control Block, 프로세스 제어 블록)가 생성된다. 사용자 영역에는 프로그램이 동작하기 위한 각각 독립된 4가지의 메모리 영역을 가진다. (Code, Data, Stack, Heap..
운영체제는 응용 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 프로그램이다. 운영체제는 하드웨어와 응용 프로그램 사이에서 다른 응용 프로그램들이 유용한 작업을 할 수 있도록 환경을 제공한다. 다르게 표현하자면, 하드웨어를 감추고 겉으로 다른 프로그램들을 지원해준다고 생각할 수 있다. 이는 프로그램을 사용하는 사람이 편하게 쓸 수 있게 각종 기반 작업을 지원한다는 것으로 이해할 수 있다. 운영체제를 공부해야 하는 이유 사실 이 질문에 대한 대답은 한번이라도 오류 메시지를 접해 보았다면 쉽게 답할 수 있다. 대다수의 오류 메시지들이 운영체제로부터 발생한다. 우리가 작성한 코드가 하드웨어에서 실행되지 못한다면 운영체제는 오류 메시지를 띄워주게 된다. 프로그래밍 문법만 배워서는 해결할 ..