반응형

Developer's_til/운영체제 4

프로세스의 스케줄링

✅ 스케줄링의 개요 프로세스는 생성, 준비, 실행, 대기와 같은 여러 상태를 거치며 작업이 이루어진다. CPU 스케줄러는 이러한 프로세스가 생성된 후, 종료될 때까지 모든 상태 변화를 조정하는 일을 한다. 이때, CPU 스케줄러는 관리의 범주를 나누어 프로세스를 관리한다. [ 고수준 스케줄링 ] 가장 큰 틀에서 이루어지는 CPU 스케줄링으로 장기 스케줄링 또는 작업 스케줄링이라고 한다. 고수준 스케줄링은 시스템 내의 전체 작업 수를 조절하는 것을 말한다. 이 단계에서는 어떤 작업을 시스템이 받아들일지 또는 거부할지를 결정한다. 작업 요청이 오면 스케줄러가 시스템의 상황을 고려하여 작업을 승인할지, 거부할지 결정하여 승인 스케줄링이라고도 부른다. 이를 통해 동시에 실행 가능한 프로세스의 총 개수가 정해진다..

프로세스 제어 블록과 문맥 교환

✅ 프로세스 제어 블록 프로세스를 실행하는데 필요한 중요한 정보를 보관하는 자료 구조로 TCB(Task Control Block)라고도 한다. 모든 프로세스는 고유의 프로세스 제어 블록을 가지며, 프로세스 생성 시 만들어져서 프로세스가 실행을 완료하면 폐기된다. 프로세스 제어 블록의 구성과 중요한 요소들은 아래와 같다. 포인터: 준비 상태나 대기 상태는 큐로 운영되는데, 프로세스 제어 블록을 연결하여 큐를 구현할 때 사용한다. 프로세스 상태: 생성, 준비, 실행, 대기, 보류 준비, 보류 대기 등이 있다. 프로세스가 현재 어떤 상태에 있는지를 나타낸다. 프로세스 우선순위: 프로세스의 중요도는 각각 다르다. 사용자 프로세스보다 중요도가 큰 커널 프로세스는 우선순위가 높고, 사용자 프로세스끼리 우선순위가 다..

[OS] 멀티 스레드의 동기화

앞선 포스팅에서 언급했듯이 스레드는 Stack영역을 제외한 나머지 메모리 영역을 공유합니다. 이때 공유 자원에 둘 이상의 스레드가 동시에 접근하면서 문제가 발생할 수 있습니다. 특정 스레드가 다른 스레드에서 사용 중인 변수나 자료구조에 접근하여 예상과는 엉뚱한 값을 읽어오거나 수정하는 문제로 아래와 같은 상황이 발생합니다. 이와 같이 하나의 변수에 둘 이상의 스레드가 접근하며 예상과는 다른 결과가 나올 수 있습니다. 이러한 상황을 해결하기 위한 방법이 멀티 스레드의 동기화입니다. 공유 변수에 대한 접근을 하나의 스레드로 제한함으로써 정확한 값을 리턴받을 수 있습니다. 윈도우는 다양한 동기화 관련 API를 제공하여 프로그래머가 상황에 따라 적절한 동기화 기법을 선택할 수 있습니다. 종류 용도 임계 영역 공..

[OS] 프로세스와 스레드의 특징 및 차이

프로세스란? - 컴퓨터에서 자원을 점유한 상태로 실행 중인 프로그램 - OS로부터 시스템 자원을 할당받는 작업의 단위 프로세스의 특징 1. 각각 독립된 메모리 영역 (Code, Data, Stack, Heap의 구조)을 할당받는다. 2. 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다. 3. 각 프로세스는 별도의 주소 공간에서 실행되며, 각 프로세스는 서로의 변수나 자료 구조에 접근할 수 없다. 4. 한 프로세스가 다른 프로세스에 접근하려면 IPC를 사용해야 한다. (파이프, 파일, 소켓 등) 스레드란? - 프로세스 내에서 작업을 처리하는 기능의 단위 - 프로세스 내에서 실행되는 여러 흐름의 단위 - 프로세스의 특정한 수행 경로 스레드의 특징 1. 스레드는 프로세스 내에서 Stack..

반응형