컴퓨터공학/운영체제 4

CPU scheduling 헷갈리기 쉬운 부분

교재 내용에서 아리까리한 부분만 따로 정리함 burst & bound burst는 해당 종류의 작업만 실행하는 구간이라고 생각하면 됨. CPU burst는 CPU에서 연산만 수행하는 구간, I/O burst는 입출력을 수행하는 구간. bound는 프로세스가 CPU/IO 중 어느 쪽에 시간을 더 많이 쓰는가 구분하는 것. 긴 CPU 작업을 처리해야 하는 프로세스는 CPU bound 프로세스가 된다. I/O bound 프로세스는 CPU 작업은 소소하고 I/O 처리에 많은 시간을 할애한다. "CPU 때문에 오래 걸리는" 프로세스가 CPU bound라고 생각해도 된다. 선점(preemtive)/비선점(non-preemptive) 선점형, 비선점형 스케쥴링은 현재 CPU가 어떤 프로세스를 실행 중이고 ready ..

멀티 어쩌구 구분하기

프로세스, 스레드 챕터를 공부하다보면 멀티프로그래밍, 멀티태스킹, 멀티코어, 멀티스레딩, ... 멀티즈도 아니고 비슷한 이름의 개념이 자꾸 등장해 우리(사실 나만)를 헷갈리게 한다. 무슨 뜻인지 간단히 알아보자. 1. 멀티코어 코어는 CPU에서 실제로 명령어를 처리하는 장치다. 하나의 CPU 안에 여러 개의 코어를 집어넣으면 동시에 여러 개 명령어를 처리할 수 있고 이런 CPU를 멀티코어라고 부른다. 반면 코어가 하나였던 이전 CPU는 싱글 코어라고 한다. 2. 멀티프로그래밍 프로그램을 실행하려면 이를 메모리에 올려 프로세스를 생성해야 하고, CPU는 한 번에 하나의 프로세스만 처리할 수 있다. 수행할 프로그램이 여러 개인데 CPU가 하나씩만 메모리에 올려서 처리한다면 어떻게 될까? 만약 그 프로세스가 ..

IPC blocking/non-blocking

IPC의 message passing 방식에서, 동기화 방법에 따른 구분(blocking/non-blocking)이 솔직히 조금 헷갈릴 수 있다. 아님 말고 blocking과 non-blocking message passing을 '파일 다운로드'에 빗대어 설명할 수 있다. 우리가 어떤 프로그램을 다운받거나 업데이트할 때, 프로그램을 설치하면서도 다른 작업이 가능해서 하던 게임을 계속 플레이할 수 있던 적도 있었고, 반면 프로그램 설치가 완료될 때까지 컴퓨터가 다른 동작을 멈춰 게임이 폭망해버린 경험도 있었을 것이다. 앞의 경우를 리눅스에서는 후면(background) 처리, 뒤의 경우를 전면(foreground) 처리라고 한다. 그리고 이 후면 처리 방식으로 진행되는 message passing을 non..

프로세스 ready&waiting state

둘이 뭐가 다른지 헷갈릴 수 있다. 분명 I/O도 인터럽트가 발생하는 걸로 알고 있는데 running에서 인터럽트가 발생하면 ready, I/O가 발생하면 waiting state로 이동한다니... 혼란하다 혼란해 ready와 waiting의 가장 큰 차이는 "당장 CPU를 할당받을(dispatch) 수 있는가"의 차이이다. 인터럽트의 일반적인 의미는 제어권, 즉 CPU 뺏기라고 할 수 있다. 일반적인 인터럽트가 발생하면 프로세스는 CPU를 반납하고 ready state로 이동한다. 이 상태에서 다시 그 프로세스에게 차례가 돌아온다면 문제없이 CPU를 할당받을 수 있다. 반면 I/O 인터럽트처럼 CPU 처리와 양립 불가능한 작업이 수반되는 이벤트가 발생하면 어떻게 될까? CPU를 반납하는 건 똑같지만, ..