본문 바로가기

시리즈/운영체제6

[운영체제] 가상 메모리 연속 메모리 할당지금까지는 메모리 내의 프로세스들이 연속적으로 배치되는 상황을 가정했습니다. 그리고 이렇게 할당하는 방식을 연속 메모리 할당 방식이라고 합니다. 프로세스들을 메모리에 연속적으로 할당할 때 무엇을 고려해야 하는지, 그리고 어떤 잠재적인 문제가 있는지 알아보겠습니다. 스와핑메모리에 적재된 프로세스들 중에서 현재 실행되지 않는 프로세스가 있을 수 있습니다. 이러한 프로세스들을 임시로 보조기억장치 일부 영역으로 쫓아내고, 그렇게 해서 생긴 메모리상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식을 스와핑이라고 합니다. 이때 프로세스들이 쫓겨나는 보조기억장치의 일부 영역을 스왑 영역이라고 합니다. 그리고 프로세스가 스왑 영역으로 옮겨지는 것을 스왑 아웃, 반대로 스왑 영역에 있는 프로세스가.. 2025. 2. 17.
[운영체제] 교착 상태 (DeadLock) 교착 상태란프로세스를 실행하기 위해서는 자원이 필요합니다. 만약 두 개 이상의 프로세스가 각자 가지고 있는 자원을 무작정 기다린다면 그 어떤 프로세스도 더이상 진행할 수 없는 교착 상태가 됩니다. 식사하는 철학자 문제 식사하는 철학자 문제는 교착 상태를 설명하기 위한 아주 고전적이고 재미있는 문제 상황입니다. 먼저 위 그림과 같이 상황을 가정하고, 아래와 같은 순서로 식사를 진행한다고 했을 때 이 철학자들은 식사를 무사히 마칠 수 있을 지에 대한 문제입니다.계속 생각을 하다가 왼쪽 포크가 사용 가능하면 집어든다.계속 생각을 하다가 오른쪽 포크가 사용 가능하면 집어든다.왼쪽과 오른쪽 포크를 모두 집어들면 정해진 시간동안 식사를 한다.식사 시간이 끝나면 오른쪽 포크를 내려놓는다.오른쪽 포크를 내려놓은 뒤 왼.. 2025. 2. 13.
[운영체제] 프로세스 동기화 동기화란운영체제의 프로세스 관리 서비스 중 가장 중요한 두 가지를 꼽자면 스케줄링과 동기화입니다. 동시다발적으로 실행되는 프로세스들은 공동의 목적을 올바르게 수행하기 위해 서로 협력하며 영향을 주고 받기도 합니다. 이렇게 협력하여 실행되는 프로세스들은 실행 순서와 자원의 일관성을 보장해야 하기에 반드시 동기화되어야 합니다. 동기화의 의미프로세스 동기화란 '작업들 사이의 수행 시기를 맞추는 것'을 의미합니다. 다시 말해 프로세스 동기화란 프로세스들 사이의 수행 시기를 맞추는 것을 의미합니다. 수행 시기를 맞춘다는 것은 크게 아래 두 가지를 일컫습니다.실행 순서 제어: 프로세스를 올바른 순서대로 실행하기상호 배제: 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기 실행 순서 제어'쓰기'와 '.. 2025. 2. 10.
[운영체제] CPU 스케줄링 CPU 스케줄링 개요모든 프로세스는 CPU를 필요로 하고 모든 프로세스는 먼저 CPU를 사용하고 싶어 합니다. 운영체제는 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는데 이를 CPU 스케줄링이라고 합니다. 프로세스 우선순위우선순위가 높은 프로세스란 빨리 처리해야 하는 프로세스들을 의미합니다. 우선순위가 높은 프로세스에는 대표적으로 입출력 작업이 많은 프로세스가 있습니다. 그 이유는 대부분의 프로세스들은 CPU와 입출력장치를 모두 사용하며 실행됩니다. 달리 말하면 프로세스는 실행 상태와 대기 상태를 반복하며 실행됩니다. 여기서 프로세스 종류마다 입출력장치를 이용하는 시간과 CPU를 이용하는 시간의 양에는 차이가 있습니다. 입출력 작업이 많은 프로세스를 입출력 집중 프로세스라고 하고, CPU 작업.. 2025. 2. 9.
[운영체제] 프로세스와 스레드 프로세스 개요보통 '실행 중이 프로그램'을 프로세스라고 합니다. 이 프로세스라는 프로그램은 메모리에 적재되고 실행되어야 프로세스라 불릴 수 있고 이 과정을 '프로세스를 생성한다'라고 표현합니다.*우리가 눈으로 볼 수 있는 공간에서 실행되는 프로세스를 포그라운드 프로세스 사용자가 보지 못하는 공간에서 실행되는 프로세스를 백그라운드 프로세스라고 합니다. 프로세스 제어 블록모든 프로세스는 실행을 위해 CPU를 필요로 하지만, CPU 자원은 한정되어 있습니다. 떄문에 프로세스는 차례대로 돌아가며 한정된 시간을 이용합니다. 그리고 운영체제에서는 이러한 실행 순서와 자원 배분을 관리합니다. 이를 위해 운영체제는 프로세스 제어 블록(이하 PCB)을 이용합니다. 프로세스 제어 블록은 프로세스를 식별하기 위해 꼭 필요한.. 2025. 2. 8.
[운영체제] 운영체제 시작하기 운영체제란프로그램 실행에 마땅히 필요한 요소들을 가리켜 시스템 자원, 혹은 자원이라고 합니다. 이런 자원을 프로그램에 적절히 할당하고 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램을 운영체제(Operating System)이라 합니다. 운영체제도 여느 프로그램과 마찬가지로 메모리에 적재되어야 합니다. 다만, 항상 컴퓨터가 부팅될 때 메모리 내 커널 영역이라는 공간에 따로 적재되어 실행됩니다. 커널 영역을 제외한 나머지 영역을 사용자 영역이라 하는데 다시 말해 운영체제는 커널 영역에 적재되어 사용자 영역에 적재된 프로그램들에 자원을 할당하고 실행을 돕습니다. 응용 프로그램(사용자 영역에서 실행되는 프로그램)을 실행되게 하려면 반드시 CPU가 필요합니다. 여기서 CPU 사용을 어떻게 배분하는지 또한, .. 2025. 2. 4.