본문 바로가기

운영체제2

[운영체제] CPU Scheduling Shortest-remaining-time-first (Shortest job first) Preemptive 방식의 스케줄링이다. (현재 진행중인 프로세스를 밀어내고 다른 프로세스가 끼어들 수 있다.) t1: P1이 도착하여 작업을 시작한다. t2: P2가 도착하여 P1과 잔여작업시간을 비교한다. P1은 7초, P2는 4초 남았으므로 P2의 preemption이 일어난다. t3: P3가 도착하지만 P2의 잔여작업시간이 더 기므로 P2가 지속된다. t5: P2가 종료되었고, P1, 3, 4 중에서 P4의 잔여작업시간이 가장 기므로 P4가 먼저 시작된다. t10: P4가 종료되었고, P1과 P3중 P1의 잔여작업시간이 더 짧으므로 P1이 진행된다. t17: P1이 종료되었고 마지막 P3가 진행된다. 이를 .. 2021. 6. 19.
[운영체제] Process Synchronization Process Synchronization이란 여러 프로세스들이 동작중일 때 그들을 동기화하는 것을 의미한다. 과거에는 하나의 디스켓당 하나의 프로그램을 실행하는 방식이었으나 현재는 하나의 OS에 복수의 프로세스가 실행되므로 서로간의 간섭을 대비하는 장치들이 필요하다. 생산자-소비자 문제 (producer-consumer) 공유 데이터에 두 프로세스가 동시에 접근했을 때 발생하는 간섭의 대표적인 예시이다. Producer while (true) { while (counter == BUFFER_SIZE); /* 버퍼가 꽉 차면 아무것도 하지 않음 */ buffer[in] = next_produced; in = (in + 1) % BUFFER_SIZE; // 인덱스가 버퍼 사이즈를 벗어나면 0 으로 재설정 .. 2021. 6. 18.