본문 바로가기

Computer Science/Operating System20

메모리의 주소 공간, 물리적 주소와 논리적 주소 메모리를 관리하며 가장 중요한 점은 무엇일까? 다음 질문에 대해 고민해 보자. ❓ 한정된 메모리 공간을 어떻게 하면 효율적으로 관리할 수 있을까? CPU가 직접적으로 접근할 수 있는 저장 장치는 메모리이지만, 메모리의 공간은 한정적이다. 여러 개의 프로그램을 실행해야 하는 운영체제에서는, 협소한 메모리 공간을 최대한 효율적으로 관리해서 CPU가 필요한 데이터를 빨리 끌어올 수 있도록 하는 것이 목표이다. CPU는 메모리에 접근할 때 ‘주소값’을 이용한다. 메모리의 주소 공간에 대해 살펴보자. 주소 공간, Address Space 메모리의 주소 공간은 아래와 같이 표현한다. 위 그림에서 오른쪽 박스는 메모리 공간을 나타내고, 각 칸마다 왼쪽에 해당 칸의 메모리 주소값이 적혀있다. CPU는 이 주소값을 통해.. 2024. 4. 17.
컴파일(Compile), 링킹(Linking), 로딩(Loading), 런타임(Runtime) 메모리 주소 바인딩에 대해 공부하기 전 알아야 하는 개념들에 대해 먼저 살펴보자. 컴파일, 링킹, 런타임, 로딩에 대해 하나 하나 살펴볼 것이다. 컴파일, Compile 컴파일이란 원시 코드를 컴퓨터가 이해할 수 있는 언어로 번역하는 과정을 말한다. 컴퓨터는 0과 1만 이해할 수 있다. 우리가 흔히 사용하는 Java, C++은 고급 프로그래밍 언어로, 컴퓨터 입장에서는 외계어와 같다. 따라서 우리가 짠 소스코드를 컴퓨터가 이해할 수 있는 언어로 번역하는 과정이 필요한데, 그 과정을 컴파일이라 한다. 단계별 역할 컴파일을 단계별로 정리하면 다음과 같다. 위 과정에 대해 하나씩 정리해보자. Preprocessor, 전처리기 ‘#’으로 시작하는 부분, 즉 #include, #define과 같은 부분을 소스 코.. 2024. 4. 17.
DeadLock, 교착상태 DeadLock, 교착 상태 두 개 이상의 프로세스나 스레드가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태로, 무한히 다음 자원을 기다리게 되는 상태를 말한다. 이는 시스템적으로 한정된 자원을 여러 군데에서 사용하려고 할 때 발생한다. 마치 외나무 다리의 양 끝에서 서로가 비켜주기를 기다리고 있는 것과 같다. Deadlock이 일어나는 경우 프로세스 1과 2가 자원 1, 2를 모두 얻어야 한다고 가정해보자. t1 : 프로세스1이 자원 1을 얻음, 프로세스 2가 자원 2를 얻음 t2 : 프로세스1은 자원 2를 기다림, 프로세스 2는 자원 1을 기다림 현재 서로 원하는 자원이 상대방에게 할당되어 있어서, 두 프로세스는 무한정 wait 상태에 빠진다. 이것이 바로 Deadlock! 주로 발생하는 경.. 2024. 4. 17.
Race Condition, Mutex와 Semaphore Race Condition ❓ Race Condition, 경쟁 조건 Race condition이란 두 개 이상의 프로세스가 공통 자원을 병행적으로(concurrently) 읽거나 쓰는 동작을 할 때, 공용 데이터에 대한 접근이 어떤 순서에 따라 이루어졌는 지에 따라 그 실행 결과가 같지 않고 달라지는 상황을 말한다. 즉, 간단히 말하면 Race라는 의미 그대로 두 개의 스레드가 하나의 자원을 놓고 서로 사용하려고 경쟁하는 상황을 말한다. 이처럼 공유 자원이 존재하는 경우에는 자원을 사용할 수 있는 프로세스를 제한하는 식의 상호 배제 기법을 활용할 수 있다. Mutual exclusion, 상호 배제 Race condition을 막기 위해서는 두 개 이상의 프로세스가 공용 데이터에 동시에 접근하는 것을 .. 2024. 4. 16.