본문 바로가기

Computer Science/운영체제

(3)
[운영체제] CPU 스케쥴링(Scheduling) 오늘은 CPU스케쥴링에 대해 알아보자 하나의 프로세스만 CPU를 독점하고 있으면 어떻게 될까? 지금 우리가 여러개의 프로그램을 동시에 사용하는 것은 불가할 것이다.(사실 어느 시점의 CPU는 하나의 프로세스가 사용하고 있지만 매우 빨리 바뀌기 때문에 우리는 동시에 사용한다고 느끼는 것이다.) 그렇다면 여러 프로세스들이 CPU를 번갈아가면서 사용해야 하는데 어떤 기준을 가지고 CPU를 할당 받게 될까? 지금부터 그 기준을 알아보자 먼저 CPU 스케쥴링에는 선점(Preemptive)와 비선점(Non-Preemptive)가 있다. 단어만 들어서는 무슨 뜻인지 모르겠다. 선점이란? 선점 방식이란 예를 들어 A프로세스가 실행되고 있는데 특정한 기준에 의해 우선순위가 더 높은 B프로세스가 CPU를 요청하게 되면 A..
[운영체제] 인터럽트(Interrupt)와 컨텍스트 스위칭(Context Switching) 지난번에 정리한 멀티 프로세스 혹은 멀티 스레드 환경을 생각해보자 A라는 프로그램이 CPU를 할당받아 명령을 수행하고 있다. 하지만 어떠한 이유에서 어떠한 루틴의 실행을 목적으로 CPU를 할당받아야 한다고 해보자 그렇다면 어떻게 CPU에 대한 사용권을 얻어와야 할까? 이때 사용되는 것이 인터럽트(Interrupt)라는 것이다. 인터럽트가 발생하게 되면 A는 현재 수행중인 명령을 멈춘다. 그리고 어떠한 루틴을 수행한 다음 다시 A로 돌아와 명령을 수행하게 된다. 여기서 의문이 생긴다. 명령을 멈췄으면 다시 돌아왔을때 처음부터 실행해야 되나? 이를 위해 멈추기 전에 현재 실행상태(명령의 위치)를 저장해 놓는다. 이렇게 저장되는 자료의 구조를 PCB(Process Control Block)이라고 한다. 그렇다..
[운영체제] 프로세스(Process)와 스레드(Thread) 오늘은 프로세스와 스레드에 대해 알아보자 Process란? 간단히 말해서 실행되는 프로그램이다. 일반적으로 CPU에 할당되는 단위라고 하는데 이는 매우 위험하다. 그 이유는 최근 리눅스에서는 스레드 단위로 CPU에 할당하는 방식으로 사용하기 있기 때문이다. 따라서 조심하자!! Thread란? 이것도 간단히 말해 프로세스 내부에서의 작업단위 혹은 실행단위라고 말할 수 있다. 정의에 대해서는 간단하게 살펴보고 차이점을 알아보자 Process vs Thread 가장 큰 차이점은 메모리 공유에 있다. 프로세스들은 각각이 독립적인 존재로 서로 메모리를 공유하지 않는다. 하지만 스레드는 서로 메모리영역을 공유한다. 여기서 알아두어야 할게 있다. 스레드는 모든 메모리 영역을 공유하는 것이 아니고 Heap/Data/C..

반응형