운영체제는 프로세스를 효율적으로 가동시켜 작업 효율을 늘리기 위해 스케줄링 기법을 사용한다. 스케줄링이 무엇인지 알아보자. 배경 Multiprogramming (멀티 프로그래밍) 시스템에는 소수의 프로세서에 다수의 프로세스가 존재한다. 시스템은 많은 양의 프로세스를 최대한 효율적으로 프로세서에 할당하려고 하고, 결국 프로세서의 사용률을 최대한 증가시켜야 한다. 2가지 자원을 관리하는 측면에서 이를 살펴보자. 자원 관리 시간 자원 공유 (Resources for time sharing) 다수의 프로세스가 프로세서를 시간을 할당 받아 사용한다. (이 할당 받은 시간 단위를 time quantum 또는 time slice라고 한다.) 프로세스 스케줄링의 핵심이다. 공간 자원 공유 (Resources for s..
OS
프로세스 간의 통신, IPC는 왜 필요하고 어떻게 이루어지는지에 대해 알아보고자 한다. IPC의 대표적인 모델 Message passing과 Shared memory를 알아보고, 분산 시스템에서 자주 사용되는 RPC에 대해서도 알아보고자 한다. IPC (Inter-Process Communication) 프로세스 간의 통신을 제공하는 이유 프로세스 사이에서 통신을 한다는 의미는 서로 협력하여 좋은 시너지를 낸다는 것인데, 이를 통해 아래의 이점을 얻을 수 있다. Information sharing (정보 공유): 여러 애플리케이션이 동일한 정보에 흥미를 느낄 수 있으므로, 그러한 정보를 병행적으로 접근할 수 있는 환경을 제공한다. Computation sppedup (연산 속도 증가): 만일 특정 태스크..
실행해야 하는 프로그램은 많지만 사용할 수 있는 CPU 자원은 한정적이기에 이를 해결하기 위한 방안이 필요하다. 프로세스들의 CPU 쟁탈전, 그것은 Context Switching의 무수한 반복 안에서 일어난다. Context Switching이 무엇인지 알아보자. Context Switching 실제 물리적인 CPU는 한정적이지만, 일반적으로 여러 프로그램이 동시에 실행되는 경우가 많다. 이렇게 프로그램들은 어쨌든 CPU의 자원을 사용해야 하는데, 모든 프로그램들이 원하는만큼 자원을 사용할 수 없으므로 운영체제에서 사용되는 대표적인 기법이 Time sharing이다. 예를 들어 1개의 CPU를 가진 사용자가 A, B, C 3개의 프로그램을 동시에 실행하고 싶다고 하면 단순하게 하나의 프로그램을 1ms씩..
운영체제라는 과목에서 발생하는 이벤트들의 주체는 프로세스인 경우가 많다. 그래서 프로세스라는 말이 수없이 나오게 되는데, 도대체 이 프로세스가 뭘까? 정리해보고자 한다. Process vs Job(Application) 우선 프로세스의 개념을 알아보려면, Job과 Process의 차이부터 명확하게 짚고 넘어가야 한다. Job(Application, Execution/Image file): 설치된 것(실행중이 아닌 상태) Process: 현재 실행중어서 커널에 등록된 상태 → 커널이 프로세스를 관리한다. 보다시피 Job(App)이 실행되면 커널 내부로 들어와 커널에 등록되고, Process로 불리게 된다. Process vs Processor 그런데 프로세스는 프로세서와 혼동되어 사용되기 쉽다. 확실하게 ..
운영체제의 기본 구조에서 Interrupt, Trap, System Call은 프로세서와 커널, 디바이스 간에 매 순간마다 발생하는 핵심적인 이벤트들이다. 이 3가지에 대해서 알아보고자 한다. 우선 현대의 운영체제들은 대부분 Dual mode(듀얼 모드)로 동작한다. 듀얼 모드란, User mode(사용자 모드)와 Kernel mode(커널 모드)를 아우르는데 User mode는 일반적인 애플리케이션이 동작되는 환경이고 Kernel mode는 커널이 구동되는 환경으로 이 모드에서는 OS 시스템에 영향을 줄 수 있는 명령을 내릴 수도 있다. (이것이 Dual mode를 만든 주요 원인이다. 사용자 단계에서 시스템에 함부로 접근할 수 없도록 하기 위함이다.) 일반적으로 trap과 interrupt가 발생할 ..