
운영체제는 프로세스의 할당과 반납 등 과정을 수행하기 위해 메모리 관리를 수행합니다. 그렇다면 메모리 관리란 무엇일까요? 메모리 관리란 다음 기능들을 의미합니다. 메모리의 할당 (Memory Allocation) 메모리의 보호 (Memory Protection) 메모리 재배치 (Relocation) 메모리 공유 (Sharing) 위 기능들에 대해 하나씩 알아봅시다. 메모리의 할당 (Memory Allocation) 메모리의 할당은, 물리적인 공간인 메인 메모리를 쪼개서 프로세스에게 할당하는 것을 의미합니다. 이 때, 메인 메모리를 효율적으로 사용할 수 있도록 적당한 크기의 공간을 프로세스에 할당 / 반납받아 관리하여야 합니다. 어떻게 메모리를 "쪼갤 수" 있는지, 어떻게 할당하고 반납하는 지는 뒤에 다루..

우리는 컴퓨터를 이용하면서 파일을 아주 자연스럽게 사용하고 있습니다. 이러한 파일들의 관리 역시 OS 를 통해 이루어집니다. 이에 대해 자세히 알아보도록 합시다. 파일이란 무엇이고, 운영체제는 파일을 어떻게 관리하는가? 파일이란? : 보조 기억장치에 저장되어 전원이 꺼지더라도 지워지지 않는 정보의 저장단위. 이 파일을 이용하여 우리는 정보를 읽고 쓸 수 있으며, 다른 프로그램의 입력/출력을 위해서도 사용할 수 있습니다. 파일의 종류로는 다음과 같은 것들이 있습니다. Regular File : 일반적인 파일 Directory : 우리가 아는 폴더에 해당합니다. Device File : 장치 파일, 외부 연결 기기를 추상화 한 파일입니다. Link : 우리가 아는 바로가기에 해당합니다. Socket, Pip..

이번 포스팅에서는 Concurrency 하게 프로세스를 운영하면서 생길 수 있는 데드락 문제에 대해서 알아보겠습니다. 데드락이란 무엇인가? 사전 상으로 "교착 상태" 를 의미하며, OS 에서 이르는 데드락의 의미는 둘 이상의 프로세스가 서로를 기다리며 아무것도 할 수 없는 상태를 의미합니다. 다음 그림과 같은 상황이 그렇습니다. 위 상태를, 각 프로세스의 진행상황에 따라 어떤 상황이 발생할 수 있는지 그래프로 나타내면 다음과 같습니다. 회색 구역으로 진입하는 3, 4 번의 flow 는 deadlock 입니다. 서로가 서로에게 필요한 자원을 점유하고 있기 때문에 시간이 흐르더라도 각 프로세스는 더이상 진행할 수 없습니다. 그 외의 1,2,5,6 의 상황은 각 프로세스가 원하는 자원을 즉시 받지 못할 뿐, ..

Context 의 정의 the execution environment of a program. Process Context 프로세스 컨텍스트는 두가지 부분으로 구성됩니다. User Context System Context User Context 는 프로그래머가 작성한 프로그램에 의해 생성되는 Context 입니다. Code 블럭, Data and bss 블럭, 그리고 유저 프로그램에서 호출되는 함수를 위한 User Stack 블럭으로 이루어져있습니다. System Context 는 커널 영역의 Context 입니다. 커널 내부의 함수를 호출하기 위한 Kernel Stack 과 PCB(Process Control Block) 로 이루어져있습니다. 다음 예시 코드를 살펴보며 프로세스 컨텍스트에 대해 이해해봅..