컴퓨터에 OS가 없다면 어떤 일이 일어날까. 이 글에서는 컴퓨터가 프로그램을 실행하기까지 어떠한 과정을 거치는지, OS는 무엇이고 어떤 역할을 하는지에 대한 내용을 다루어보았다.위 그림은 하나의 프로그램이 컴퓨터에서 어떻게 실행되는지 하드웨어적인 측면에서 그림을 그린
일반적으로 인터럽트(interrupt)는 하드웨어가 어떠한 이벤트를 CPU에게 알리기 위해서 사용하는 방법이다. 하지만 실행 중인 프로세스가 CPU 내의 인터럽트 라인을 세팅하여 인터럽트를 걸기도 한다. 전자를 비동기식 인터럽트(asynchronous interrupt
프로세스란 실행 중인 프로그램을 의미한다. 프로세스는 PC와 레지스터를 포함한 현재 상태, 텍스트(=프로그램 코드), 스택(=임시 데이터), 데이터(=전역 변수), 힙으로 이루어져 있다.위 그림은 프로세스의 상태 변화를 나타낸 그림으로 총 5가지 상태로 나눌 수 있다.
OS는 사용자에게 메모리에 대한 추상화를 제공할 뿐만 아니라 메모리 관리(memory management)를 통해 한정된 메모리 자원을 효율적으로 사용하고 메모리를 보호한다. 또한 메모리 관리는 각 프로세스들에 할당된 메모리 정보와 비어있는 메모리 공간에 대한 정보를
Memory Allocation 컴퓨터 부팅 직후에 메인 메모리는 OS를 제외하고 큰 구멍이 생긴 것처럼 보인다. 다중 프로그래밍에서는 다수의 프로그램들이 메모리에 적재되어 프로세스의 생성과 종료를 반복한다. 그렇기 때문에 한정된 메모리 공간을 여러 프로세스에게 효율적
Paging Issues 이전 글에서 다루었던 페이징의 개념에 이어 페이징과 관련된 이슈를 살펴보자. Frame Size 페이징의 문제점은 internal fragmentation이 생긴다는 것이다. 그럼 internal fragmentation 문제를 최소화하려면
Background 프로그램 전체를 메모리에 올린다고 하더라도 대부분의 프로세스는 할당된 메모리의 일부분만 사용한다. 에러 핸들링 코드나 잘 사용하지 않는 루틴들도 프로그램에 포함되어 있기 때문이다. 그렇기에 사용되는 일부분만 메모리에 올리고 남은 메모리를 다른 프로그
Frame Allocations 각 프로세스에게 얼마나 많은 프레임을 할당할 것인지, 어떤 프레임을 대치할 것인지 결정한다. Fixed Allocation Priority Allocation Global Allocation Local Allocation Thrash
병렬성(parallelism) 과 병행성(concurrency)의 개념을 헷갈려하는 사람들이 꽤 있다. 병렬성은 멀티코어 프로세서에서 각 코어에 하나의 작업을 실행시켜 특정 시간에 두 개 이상의 작업이 실행되고 있는 것을 말한다. 반면 병행성은 싱글코어를 기준으로 여러
두 개 이상의 프로세스들이 결코 일어나지 않을 사건을 위해 기다리는 상태를 교착 상태(deadlock)이라고 한다. 예를 들어, 프로세스 P1이 자원 A를 가지고 자원 B를 기다리며 프로세스 P2는 자원 B를 가지고 자원 A를 기다리는 경우가 있을 수 있다.교착 상태가
Cyclic Deadlock Monitoring Algorithm런타임에 프로세스가 lock을 획득하고 해제하는 행동을 관찰한다.Lock Graph(N, E) (Directed Graph)스레드가 lock X를 획득하면 노드 Nx를 생성한다.스레드가 lock X를 획득