OS (18) 썸네일형 리스트형 동기 VS 비동기 (+ Blocking VS Non-Blocking) 동기야~!~! 이 개념을 잘 알고 있어야 추가적으로 GCD 관련된 개념들도 잘 이해할 수 있음 .. Blocking VS Non-Blocking Blocking 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것 예를 들어서) 소깡이가 상사에게 서류를 전달하는 상황이라고 가정해보자. 이 때 이 상사의 이름이 blocking 이다. (블로킹 상사인 것.) 블로킹 상사의 경우, > 서류를 제출하면, 그 앞에서 기다리라고 한다. > 소깡이는 기다린다. > 블로킹 상사가 서류를 모두 확인하면, > 소깡이는 돌아가서 본인의 일을 한다. Non-Blocking 다른 주체의 작업에 관련없이 자신의 작업을 하는 것 위의 예시와 같은 상황이라고 생각해보자... [질문] 프로세스 스케줄링 & CPU 스케줄링 프로세스 스케줄링 관련 질문 프로세스 스케줄링이란? 프로세스 스케줄러에는 어떤 것들이 존재하나요? 사용자와 시스템 관점에서 어떤 기준을 선호하게 되나요? 1. 프로세스 스케줄링이란? 프로세스가 작업을 수행할 때 언제, 어떤 프로세스에 CPU를 할당할 것인지 결정하는 작업을 의미 기본적으로 멀티 프로그래밍과 시분할에 기반, 메모리 내에 실행 준비된 프로세스 중 하나를 선택해서 CPU 할당 2. 프로세스 스케줄러에는 어떤 것들이 존재하나요? 스케줄러란? 어떤 프로세스에게 자원을 할당할지를 결정하는 운영체제 커널의 모듈 을 지칭 세가지 종류가 존재. (장기 / 중기 / 단기 스케줄러 존재) 장기 스케줄러의 경우 어떤 프로세스를 준비 큐에 넣을 것인지 결정 중기 스케줄러는 메모리에 적재된 프로세스의 수를 관리 .. CPU 스케줄링 프로세서 스케줄링 기법 크게 선점 방식과 비선점 방식으로 나눠 볼 수 있다. 비선점 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법이다. 프로세스가 CPU를 할당 받으면 해당 프로세스가 완료될 때까지 CPU를 사용하지 않는다. 매우 공정한 방법이지만 우선순위가 높은 프로세스에 대응하기에는 비효율적인 방법이다. 비선점 스케줄링 기법의 종류는 아래와 같다. ⬇️ ⚪️ FCFS (First Come First Serve / FIFO) CPU를 먼저 요청한 프로세스가 먼저 CPU를 배정 받는 스케줄링 방법 예를 들어서 P1(24ms), P2(3ms), P3(3ms) 프로세스가 있다 가정하면, CPU 스케줄링의 결과는 다음과 같이 표현된다. 가장 간단한 방법이지만 평균 대기 시간.. 프로세스 스케줄링 스케줄링 프로세스가 생성되어서 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업을 의미 대기 시간을 최소화하고 최대한 공평하게 할당하는 것을 목적으로 한다. 메모리에 여러 개의 프로세스를 올려 놓고 (= 다중 프로그래밍) CPU의 가동시간을 적절하게 나누어 (= 시분할) 각각의 프로세스에게 CPU를 분배하여 실행되도록 한다. 스케줄링 종류 프로세스의 상태에 따라서 장기, 중기, 단기 단위로 나눌 수 있다. 장기 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정해서 준비 상태 큐 (= Ready Queue)로 보내는 작업을 의미 상위 스케줄링이라고도 하며 작업 스케줄러에 의해 수행된다. 수행 빈도는 적고 속도는 느리다. 중기 어떤 프로세스들이 CPU를 할당 받을 것인.. [질문] 프로세스, 쓰레드 프로세스 및 쓰레드 관련 질문 프로세스와 쓰레드의 차이는 무엇인가요? 프로세스는 컴퓨터에서 실행 중인 프로그램을 말하고 고유한 공간과 자원을 할당 받아서 사용한다. 반면에 쓰레드는 프로세스 안에서 실행되는 여러 흐름의 단위로 프로세스 내의 자원을 공유하고 고유한 스택만을 각자 할당 받는다. 스택을 스레드마다 독립적으로 할당하는 이유는 무엇인가요? (= 스레드가 스택만 공유하지 않는 이유는 무엇인가요?) 스택은 함수 호출시 전달되는 인자, 복귀 주소값 및 함수 내에서 선언하는 변수 등을 저장하기 위해 사용되는 메모리 공간이다. 스택 메모리 공간이 독립적이라는 것은 독립적인 함수 호출이 가능함을 의미하고 이는 독립적인 실행 흐름이 추가된다는 것을 의미한다. 그리고 쓰레드는 프로세스 내의 흐름의 단위, 작업의.. 시스템 콜과 인터럽트 시스템 콜 운영체제의 커널이 제공하는 서비스에 대해서 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스 (.. 말이 조금 어려운데 응용 프로그램이 커널의 서비스에 접근할 때 마주하는 인터페이스라고 생각하면 된다.) 기능 시스템 콜의 주요 세가지 기능은 아래와 같다. 사용자 모드에 있는 응용 프로그램이 커널에 접근하여 그 안의 기능을 사용할 수 있도록 한다. (= 운영체제 서비스에 접근할 수 있게 한다.) 시스템 호출을 하면 사용자 모드에서 커널 모드로 바뀐다. 커널에서 시스템 호출의 작업이 끝나면 사용자 모드로 돌아간다. 여기서 말하는 사용자 모드는 사용자가 프로그램 실행, 코드 작성 등을 하는 상태를 말한다. 커널 모드는 시스템 콜을 처리하는 상태를 말한다. 사용자 모드 : 사용자, 프로그램.. 프로세스 - 상태 우리가 컴퓨터를 할 때 카톡을 하면서 유튜브도 보고 게임을 할 수 있는 이유는 여러 개의 프로세스가 실행되고 있기 때문이다. (동시에 실행되고 있는 것처럼 보이지만 정확하게 동시에 실행되는 것은 아니다.) 이렇게 실행되고 있는 프로세스들은 Life Cycle은 위와 같다. new 프로세스를 생성하고 있는 단계로 커널 공간에 PCB가 만들어진 상태 ready 프로세스가 메모리에 적재된 상태로 실행하는데 필요한 자원을 모두 얻은 상태 running 프로세스가 CPU를 할당 받아 명령어를 수행 중인 상태 일반적으로 CPU가 하나이기 때문에 여러 프로세스가 동시에 실행되어도 실제로 실행 중인 프로세스는 매 시점 하나 뿐이다. blocked 현재 프로세스가 I/O 작업 등을 처리 중인 상태 *blocked? 프로.. 쓰레드 지난 시간) 프로세스는 디스크에 존재하는 프로그램이 메모리에 올라가서 CPU를 할당 받은 실행 중인 프로그램을 의미 이 프로세스와 함께 다니는 것 = 쓰레드 쓰레드란? 어떤 프로그램 내에서 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 프로세스가 CPU로부터 할당 받은 자원을 이용하는 실행의 단위이다. 🤔 실행의 단위? 하나의 일을 하는 단위를 말한다. 쓰레드가 생성되면 Stack 영역만 할당 받고 (= 공유하지 않는다.) Data, Code, Heap 영역을 프로세스의 자원과 공유하게 된다. 🤔 쓰레드는 프로세스와 어떤 차이점을 가지고 있을까? 여러 개의 프로세스가 있을 때 각각의 프로세스는 독립적인 메모리 영역을 가진다. 반면에 쓰레드는 다른 쓰레드와 프로세스의 Stack을 제외한 Data, .. 이전 1 2 3 다음