분류 전체보기 228

[운영체제] CPU Scheduling (1) - What is CPU Scheduling?

CPU 내에서 하나의 core에서는 한 번에 단 하나의 process만 실행이 가능합니다. 그 말인즉슨 하나의 process가 실행되고 있으면, 다른 process는 실행이 되고 싶어도 사용 가능한 core가 생길 때까지 대기를 해야 한다는 뜻입니다. 만약 CPU에 진입한 process의 실행이 모두 완료가 되어야 다음 process가 CPU를 차지할 수 있다고 가정해봅시다. Process는 실행 중에 입출력 요청이 완료되기를 기다릴 때가 있습니다. 이러한 상황에서 CPU는 아무 작업도 실행하지 못하며 시간과 자원을 낭비하는 결과를 초래합니다. 또는 꼭 지금 수행해야 하는 process가 있는데 앞에서 수행 중인 process의 작업이 너무 길어서 한참을 대기해야 하는 경우에도 비효율적인 결과가 만들어집..

[운영체제] Thread (2) - Multithreading Model, Implicit Threading, and Other Issues

지난번 글에 이어서 오늘도 thread에 관하여 공부해보고자 합니다. 오늘은 thread의 종류와 다중 thread의 몇 가지 모델에 대해서 먼저 알아본 뒤, thread에 관한 여러 이슈들을 다뤄볼까 합니다. 1. User thread vs. Kernel thread 지난 글에서는 thread를 그냥 일반적인 의미에서의 thread로 간주하고 공부를 했습니다. 하지만 사실 thread에도 두 가지 종류가 존재합니다. 바로 user thread (사용자 쓰레드)와 kernel thread (커널 쓰레드)입니다. 당연히 사용자 레벨에서 사용되는 thread가 user thread이고, kernel 영역에서 사용되는 thread가 kernel thread입니다. User thread는 kernel과 관계없이..

[운영체제] Thread (1) - Definition, Implementation, and Multicore

지금까지 살펴보았던 process는 모두 process 하나가 하나의 thread를 가지고 있다고 가정하고 공부를 하였습니다. 즉 하나의 process는 한 번에 하나의 작업만 수행한다고 가정을 했었다는 것이죠. 하지만 실제로는 하나의 process는 여러 개의 thread를 가질 수 있으며 이 thread들을 통해 process 하나로도 병렬적인 작업 수행이 가능합니다. 1. Thread란? 우선 thread의 정의를 알아보자면 process내에서 실행되는 흐름의 단위를 말합니다. 즉, 여러 개의 thread가 있다면 여러개의 작업의 흐름을 가질 수 있는 것이죠. 이렇게 말하면 너무 추상적인데, 예를 들어 설명하자면, 지금까지 배운 process의 개념에서는 하나의 thread만 가지고 있다고 가정했기..

[운영체제] Processes (3) - Interprocess Communication (IPC)

Process 파트의 마지막 내용으로 Interprocess Communication, 즉 process 간 통신에 대해 알아보겠습니다. Process들은 운영체제 내에서 병렬적으로 수행되기 때문에 서로 독립적이면서도 상호 협력적인 관계에 있습니다. 이러한 Process들 간의 협력을 통해 우리는 몇 가지 이득을 취할 수 있습니다. 1. 정보 공유 (Information Sharing): 여러 응용 프로그램들이 동일한 정보에 흥미를 가질 수 있기 때문에 병행적으로 접근이 가능한 것이 좋다. 2. 계산 가속화 (Computation Speedup): 작업을 빨리 끝마치기 위해서는 작업을 서브 작업들로 분할하여 여러 process들에서 병렬적으로 수행하는 것이 좋다. 3. 모듈성 (Modularity): 시..

[운영체제] Processes (2) - Process Creation & Termination

지난 글에 이어서 오늘도 Process에 대해 알아보려고 합니다. 오늘은 Process가 어떻게 생겨나는지부터 차근차근 하나씩 공부해나가고자 합니다. 원래는 process 스케쥴링에 관한 내용이 앞에 조금 나오지만 이 부분은 나중에 훨씬 자세하게 다룰 기회가 있으니 그때로 미뤄놓도록 하겠습니다. 1. Process Creation 모든 process는 자신만의 정수 값으로 표현되는 number를 가집니다. 이를 Process Identifier, 줄여서 PID라고 부릅니다. 참고로 최초에 존재하는 process는 swapper라고 불리며 pid는 0입니다. 하지만 swapper는 사용자 모드가 아닌 kernel의 일부로 페이징을 담당하기 때문에 보통 root parent process로 취급하지 않고, ..

[운영체제] Processes (1) - Process State, PCB

이번에 알아볼 내용은 바로 Process에 관한 내용입니다. 사실상 운영체제에 대한 공부가 본격적으로 시작되는 시점입니다. 1. Process란? Process는 "실행되고 있는 프로그램(A program in execution)"이며, 경우에 따라서는 job, task 등으로 바꿔 부르기도 합니다. Process는 프로그램의 실행에 대한 하나의 작업 단위로 볼 수 있고, 하나의 프로그램을 여러 번 실행시키면 여러 개의 process가 실행되게 됩니다. Process는 program code, execution state (thread info.), process state, process ID 등의 정보를 담고 있습니다. 각각의 Process는 자신의 virtual memory를 가지며, 이 virtu..

[운영체제] Interrupt

이전 글에서 System call이 발생하면 interrupt를 통해서 user mode에서 kernel mode로 변경시킨다는 내용을 언급한 적이 있었습니다. 이번 글에서는 이 interrupt의 발생에 대해 조금 더 자세히 알아보고자 합니다. 1. Interrupt란? 우선 interrupt라는 게 무엇인가에 대해 먼저 알아야 합니다. Interrupt란 CPU가 어떤 작업을 실행하고 있을 때 어떠한 이유 때문에 우선적으로 처리가 필요한 작업이 생겨 이를 CPU에 알리는 행위를 말합니다. Interrupt가 발생하면 바로 CPU는 하던 작업을 멈추고 interrupt handler라는 것을 실행하게 됩니다. 2. Interrupt의 발생 원인은? Interrupt를 발생시키는 요인은 두가지로 분류할 ..

[운영체제] Introduction & Operating System Structure

운영체제에 대한 공부를 시작하면서 우선은 운영체제가 무엇인지, 무슨 일을 하는지와 같은 운영체제에 대한 기본 지식을 공부해볼까 합니다. 1. 운영체제란? 컴퓨터 시스템은 위의 그림과 같은 형태로 이루어져 있습니다. 하드웨어는 중앙 처리 장치(CPU), 메모리, 입출력 장치와 같은 물리적 장치를 뜻합니다. 그리고 응용 프로그램은 우리가 사용하는 Kakao Talk, MS Word, Visual Studio과 같은 실제 프로그램들을 말하죠. 그 사이를 이어주는 것이 운영체제라는 것인데요, 즉, 운영체제는 하드웨어와 응용 프로그램 사이에서 중개역할을 하는 프로그램으로, 사용자 프로그램들을 실행하고, 문제점들을 쉽게 해결하며, 컴퓨터 시스템을 사용하기 쉽게 만들어주고, 효율적인 방법으로 컴퓨터 하드웨어를 사용할..