본문 바로가기
반응형

Computer Science/운영체제9

Main Memory (주기억장치) OS에서 주기억 장치를 관리하는 것에 앞서 먼저 주기억장치에서 사용되는 데이터가 어떻게 처리되는지 설명하겠습니다. 먼저 HDD에 있는 물리적 레코드(Physical Record)를 가져와서 RAM의 OS영역에 적재합니다. 그리고 실제로 프로세스에서 사용하게 되는건 RAM의 OS영역에 적재된 내용입니다. 이렇게 프로세스 에서 사용되는 레코드는 논리적 레코드(Logical Record)라고합니다. 위처럼 레코드를 사용하게 되면 주소 역시 변환이 필요합니다. 프로세스에서 논리적 레코드를 사용하게 되면서 HDD 상의 데이터에 접근하게 되는데 이때 RAM에 적재된 논리주소를 물리주소로 변환합니다. 이 과정을 Address Binding 이라고 합니다. Address binding은 다음 3가지 시기에 정해집니다... 2024. 1. 23.
Deadlock (교착 상태) 교착상태란, 이미 점유하고 있는 공유 자원에 사용 요청을 하게 됐을 때, SJF나 Priority 등에 의해 무한 대기하게 됐을 때 교착상태가 됐다고 부릅니다. 교착상태는 다음 4가지의 필요 조건을 가집니다. Mutual Exclusion (상호 배제) Hold & Wait (점유와 대기) Non - Preemption (비선점) Circular Wait (순환 대기) 교착 상태를 처리하는 방법에는 다음 4가지가 있습니다. Prevention (예방, 필요 조건 중 1가지 제거) Avoidance (회피, Banker's Algorithm) Detection & Recovery (탐지 및 회복) X 1,2는 교착 상태가 발생하기 전에 하는 방법이고, 3, 4는 교착 상태 이후 하는 방법입니다. 먼저 Pr.. 2024. 1. 22.
Semaphore (세마포) 세마포는 네덜란드 수학자 Dijkstra가 만든 동기화를 위한 도구로, Semaphore S는 정수형 변수로 취급됩니다. 단, S는 wait 연산과 signal 연산으로만 접근이 가능합니다. 여기서 wait 연산과 signal 연산은 단위 연산이므로, 원자성이 보장됩니다. EX) wait(S) { while(S 2024. 1. 22.
Critical Section (임계구역) 임계구역이란, 공유 데이터를 액세스하는 코드 부분을 의미합니다. EX) while(count == N); buffer(in) = next_produced; in = (in + 1) % N; count += 1; // 해당 부분이 임계구역에 해당 . . . while(count == 0); next_consumed = buffer(out); out = (out + 1) % N; count -= 1; // 해당 부분이 임계구역에 해당 임계구역에 해당하는 부분의 코드를 어셈블리어로 볼때 다음처럼 분리됩니다. reg1 = count; reg1 = reg1 + 1; count = reg1; reg2 = count; reg2 = reg2 - 1; count = reg2; 위 코드는 원자성이 보장되지 않으므로, 동시.. 2024. 1. 19.
반응형