분류 전체보기

1. Scheduling AlgorithmsCPU를 공평하게 나누어 주는 것도 좋지만 사용자와 상호작용하는 작업에 CPU를 우선적으로 주는 방향으로 이루어져야 하는 것이 중요한데요 이를 위해서 CPU 스케줄링은 두 가지 정도를 고려해볼 수 있습니다.  우선 CPU burst에 들어온 프로그램들이 여럿 있는데 어떤 프로그램에게 CPU를 줄 것인가를 결정하는 문제가 있을 것입니다. 그리고 또 다른 하나는 프로그램에게 CPU를 주었을 때, 이 프로그램 작업 동안 CPU를 계속 줄지, 아니면 중간에 CPU를 뺏어서 다른 프로세스에게 CPU를 넘겨줄지에 대한 문제입니다.  만약 CPU를 한 프로그램에게 주었다면 그 프로그램이 CPU를 다 쓰고 I/O 작업을 하러 나갈 때까지 CPU를 다른 프로그램에서 사용하지 못..
스케줄러를 소개하기 앞서서 프로그램이 실행되는 단계를 간략히 살펴보겠습니다.  1. CPU and I/O Bursts in Program Execution (CPU 스케줄링 도입 배경)컴퓨터 프로그램이 실행될 때는 아래와 같은 단계를 거칩니다. CPU에서 인스트럭션을 실행하는 단계와 오래 걸리는 I/O 단계를 번갈아가며 실행하는 것이 모든 프로그램의 실행에서 거치는 path입니다. 프로그램 종류마다 다르게, I/O가 많이 끼어들지 않는 프로그램의 경우에는 CPU에서 인스트럭션을 실행하는 단계인 CPU burst가 길게 나타나고 반대로 I/O와의 상호 작용이 많은 프로그램 같은 경우에는 CPU를 연속적으로 쓰는 단계가 짧습니다.   그래서 CPU를 연속적으로 쓰는(CPU burst)를 아래와 같은 그래프로..
1. 프로세스의 생성 프로세스의 생성은 부모 프로세스가 본인과 같은 자식 프로세스를 복제하여 생성됩니다. 여기서 복제라는 것은 프로세스의 문맥을 모두 복사하는 것입니다. 즉, 부모 프로세스의 주소 공간인 code, data, stack을 그대로 복사하여 자식 프로세스를 하나 만들고, 부모 프로세스의 CPU 문맥인 프로그램 카운터(CPU에서 인스트럭션을 어디까지 수행했는지 나타내는 레지스터)도 부모 프로세스를 복제하게 됩니다.   이렇게 복제된 프로세스는 독립적인 프로세스이기 때문에, 부모 프로세스와 자원을 공유하는 것이 아니라 경쟁적으로 사용하는 것이 원칙적으로는 맞습니다.   하지만 자식 프로세스가 부모 프로세스를 복제하면 메모리에 똑같은 내용이 두 번 올라가게 되어 메모리가 낭비됩니다. 그래서 일부 ..
1. Thread 스레드란, 프로세스 내부에서 실행되는 작은 작업 단위를 말합니다. (1) Thread가 쓰이게 된 배경 프로세스가 하나 생기면 code, data, stack으로 구성된 주소 공간이 프로세스 별로 메모리에 만들어집니다. 그리고 그 프로세스 하나를 관리하기 위해서 운영 체제 내부에 PCB라는 것을 두고 있습니다. PCB에는 사진과 같이 프로세스의 상태, 식별 ID, 현재 메모리의 어느 부분을 실행하고 있는지 가르키는 program counter 등이 있습니다.  만약 동일한 일을 하는 프로세스가 여러 개 있다고 가정하면, 프로세스마다 별도의 주소 공간이 만들어져서 메모리가 낭비됩니다.   같은 일을 하는 프로세스를 여러 개 띄워놓고 싶으면, 메모리 공간만 하나 띄워놓고 각 프로세스마다 다..
1. PCB (Process Control Block)운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보를 말합니다. PCB를 구성하는 것은 사진과 같이 4가지 정도로 나눌 수 있습니다. (1) OS가 관리상 사용하는 정보Process state, Process IDScheduling information 프로세스의 상태(Ready, Blocked, Running 등), 프로세스를 식별하기 위한 ID, 그리고 프로세스에서 CPU를 주기 위한 스케줄링 정보 등이 있습니다. 앞선 포스팅에서 CPU에 queue형태로 프로세스가 대기하는 것을 볼 수 있었는데, 정확히는 먼저 온 순서가 아닌 우선순위가 높은 순서로 실행이 됩니다. (2) CPU 수행 관련 하드웨어 값Program CounterRegi..
1. 프로세스의 문맥(context)프로세스는 한 마디로 실행 중인 프로그램을 말합니다.그런데 이 프로세스를 이해하기 위해서 중요한 것이 하나가 있는데 바로 프로세스의 문맥(context)입니다.  프로세스 문맥에 대해 간단히 설명드리자면, 프로그램이 실행 중 어떤 시점에서의 정확한 상태를 규명하기 위해 필요한 요소들을 프로세스 문맥이라고 합니다. 프로그램 실행 중에 어떤 한 시점을 놓고 봤을 때, 프로세스가 어디까지 무엇을 실행을 했는지, 현재 어떤 단계까지 실행을 한 상태인지를 정확하게 나타내기 위해 사용되는 개념입니다. (맥락을 파악한다고 생각하면 이해가 쉽습니다.)  프로세스의 문맥은 크게 세 가지로 설명할 수 있습니다. 1. CPU 수행 상태를 나타내는 하드웨어 문맥Program Counter ..
동구름이
'분류 전체보기' 카테고리의 글 목록 (23 Page)