본문 바로가기

운영체제

(5)
Priority Inversion Priority Inversion은 선점형 우선 스케쥴링(preemptive priority scheduling) 방식에서 발생하는 작업의 우선 순위가 역전되는 현상이다. 예를 들어, 우선 순위가 높고 낮은 작업인 H와 L이 있다. 각각은 배타적으로 접근해야 하는 공유 자원 R을 사용하고 있다. 만약, H가 R에 대한 접근을 L의 접근 이후에 한다면, H의 작업은 L이 R의 소유권을 놓을 때까지 지연된다. 우선 순위가 높은 H가 낮은 L을 기다리는 상황이 되는 것이다. 이러한 상황을 피하기 위해 L이 R의 소유권을 즉시 양도(relinquish)하도록 시스템을 설계하기도 한다. 하지만, 도중에 중간 우선 순위를 가지며 R을 사용하지 않는 작업 M이 작업 큐에 들어온다면, L보다 우선 순위가 높으므로 M이..
Race Condition Race condition은 공유자원을 얻기 위해 경주하는 상황을 일컫는 용어로, multi-proccesing 모듈에서 여러개의 process나 thread가 공유하고 있는 메모리에 동시에 접근할 때 발생한다. 이 상황이 발생하는 부분을 critical section이라고 하며, critical section에서는 보통 공유 자원을 검사 후 행동(check-then-act)을 취하는 일련의 과정이 진행되는데, 이 공유 자원에 대한 아무런 제어가 없다면 원하는 결과를 보장받을 수 없다. 다음 코드는 x라는 공유 자원의 조건 검사 후에 그 값을 이용해 다른 변수의 값을 갱신한다. if (x == 1)// Check { y = x + 1;// Act } process나 thread의 실행 순서는 schedu..
Memory Layout of a Program(Process) Text Text segment(혹은 Code segment)는 실행가능한 명령어를 포함하고 있는 메모리 영역이다. 이 영역은 Heap이나 Stack 영역보다 아래에 위치하는데, 이는 두 영역으로부터 덮어씌어지는 것을 방지하기 위함이다. 텍스트 영역은 공유가능하기 때문에 메모리에 한번의 복사로 프로세스를 동작시킬 수 있다. 이 역역은 read-only로 프로그램에 의해 명령어가 변경되지 않는다. Data Data segment는 초기화 된 data segment로서, 프로그래머에 의해 초기화된 전역(global)변수와 정적(static)변수를 포함하고 있다. 이 공간은 런타임에 변경이 가능하므로 not read-only이지만, 정확히 말하면 read-only 공간과 read-write 공간이 분리되어 있..
Process와 Thread의 비교 및 차이 Program(혹은 Application)은 어떠한 일을 수행하는 명령어의 집합으로, 프로그래밍 언어로 생성되어 컴퓨터에서 실행가능한 형태로 디스크나 비휘발성 메모리에 저장되어 있다. Process는 실행 중인 program을 의미하며 명령 수행에 필요한 메모리와 자원을 할당받아 동작한다. Process는 상호배타적으로 분리된 메모리 공간을 할당받아 실행되어서 다른 process에 직접적인 영향을 주지 않는다. Thread는 process의 실행 단위로 경량화된 process이며, process가 시작되면 이 역시 메모리와 자원을 할당받는다. 하나의 process는 여러개의 thread를 생성할 수 있으며, 이 경우에 각각의 thread는 자신만의 레지스터와 스택을 할당받고 process 내부의 나머지 ..
WHAT HAPPENS WHEN YOU TURN A COMPUTER ON? 컴퓨터 전원을 켜자마자 일어나는 과정은 부팅(Booting)으로, 컴퓨터를 사용 가능한 상태로 만든다. 부팅 과정은 BIOS(Basic Input/Output System, 펌웨어로 마더보드의 ROM 칩에 저장된 프로그램)를 실행하는 것부터 시작한다. 이 프로그램은 컴퓨터의 주변 장치들이 사용 가능한 상태인지 확인하는 POST(Power On Self Test)를 진행하게 된다. 문제가 없다면 장치들을 초기 상태로 세팅을 하며, 다음 단계로 메모리에 적재할 OS를 찾아 실행한다. 이와 관련된 것이GRUB(GRand Unified Bootloader)으로, GRUB은 총 두 단계로 나뉘어 있다. Stage 1은 Stage 2를 실행하기 위한 아주 작은 프로그램이며, MBR(Master Boot Record..