프로그램이 실행을 위해 물리 메모리에 적재되면 CPU는 프로세스를 위한 독자적인 주소공간을 생성합니다. 이 주소를 논리적 주소(=가상 주소)라고 하고 각 프로세스마다 독립적으로 할당됩니다. CPU가 기계어 명령을 수행하기 위해서는 논리적 주소에 근거해 매핑된 물리적 메모리 위치를 확인해야 합니다. 메모리에 적재된 프로세스의 논리적 주소를 물리적 주소로 연결시켜주는 작업인 주소 바인딩에 대해 알아보겠습니다. 주소 바인딩 프로세스의 논리적 주소를 물리적 메모리 주소로 연결시켜주는 작업을 주소 바인딩이라고 합니다. 프로그램이 적재되는 물리적 메모리의 주소가 언제 결정되느냐에 따라 세 가지로 분류할 수 있습니다. 컴파일 타임 바인딩 로드 타임 바인딩 실행 시간 바인딩 컴파일 타임 바인딩 컴파일을 하는 시점에 해..
연속 할당 방식 프로그램을 메모리에 올릴 때, 물리적 메모리의 한 곳에 연속적으로 적재하는 방식으로 고정 분할 방식과 가변 분할 방식이 존재합니다. 고정 분할 방식 주어진 개수 만큼의 영구적인 분할로 미리 나누어 두고 각 분할에 하나의 프로그램을 적재하는 방식입니다. 이 분할의 크기를 모두 동일하게 할 수도 있고 서로 다르게 할 수도 있습니다. 하나의 분할에는 하나의 프로그램만 적재 가능하므로 외부 조각과 내부 조각이 발생합니다. 외부 조각 프로그램의 크기 > 분할의 크기인 경우 발생합니다. 프로그램을 적재하지 못하는 빈 메모리 공간으로 사용될 수 없는 작은 분할을 의미합니다. 내부 조각 프로그램의 크기 < 분할의 크기인 경우 발생합니다. 프로그램이 분할에 적재되고 나서 분할 내부에 사용될 수 없는 메모..
프로세스 운영체제로부터 시스템 자원을 할당받는 작업의 단위 각각 독립된 메모리 영역(Code, Data, Stack, Heap 구조)을 할당받는다. 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다. 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다. 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC)을 사용해야 한다. (Ex. 파이프, 파일, 소켓 등을 이용한 통신 방법 이용) 쓰레드 프로세스 내에서 실행되는 여러 흐름의 단위 쓰레드는 프로세스 내에서 Stack을 따로 할당받고 Code, Data, Heap 영역은 공유한다. 쓰레드는 한 프로세스 내에서 동작되는 여러 실행의 흐름으로 프로세스 내의 ..
운영체제가 하는 일 컴퓨터 시스템은 대개 하드웨어, 운영체제, 응용프로그램 및 사용자의 네 가지 구성요소로 구분된다. 운영체제는 사용자와 다양한 응용프로그램 간의 하드웨어 사용을 제어하고 조정한다. 즉, 실행중인 응용 프로그램들이 작업 수행에 필요한 CPU, 메모리, 입출력 장치 등의 하드웨어 자원을 할당하는 것을 제어한다. 컴퓨터에 대한 사용자의 관점은 사용되는 인터페이스에 따라 달라진다. 이러한 시스템은 한 사용자가 자원을 독점하도록 설계되었으며 목표는 사용자가 수행하는 작업을 최대화하는 것이다. 사용자 관점에서 운영체제는 대부분 사용의 편의성을 위해 설계된다. 그러나 일부 컴퓨터는 사용자의 개입 없이 작동하도록 설계되기도 한다. 시스템 관점에서 운영체제는 하드웨어와 가장 밀접하게 연관된 프로그램으로..
그래프란? : 정점(Vertex)와 간선(Edge)을 모아둔 것 그래프 G = (V, E) V = V(G) = {v1, v2, v3, v4} E = E(G) = {(v1, v2), (v2, v3), (v1, v3), (v3, v4)} // 방향 그래프의 경우에 각각의 간선은 순서쌍으로 들어 있다. {(v1, v2), (v2, v1), (v2, v3), (v3, v2), (v1, v3), (v3, v1), (v3, v4), (v4, v3)} // 무 방향 그래프의 경우에 양쪽으로 순서쌍을 가진다. 관련 용어 무방향 그래프 방향 그래프 완전 그래프 부분 그래프 Clique 차수 경로 DAG Tree graph 그래프의 표현 인접 행렬 인접 리스트 무방향 그래프 (v1, v2) = (v2, v1) 방향 그래프..