프로세스 스케줄러(Process Scheduler)는 OS의 핵심 기능으로서 동시에 실행되는 프로세스의 실행순서와 우선순위를 관리하는 역할을 한다. 조금 더 자세히 말하자면 여러 프로세스가 시스템의 리소스에 접근할 때 필연적으로 경쟁상태에 놓이게 되는데, 프로세스 스케줄러는 이 경쟁상태를 적절히 조율해서 리소스의 사용 효율성과 짧은 응답시간, 처리량과 처리율 등을 극대화시키기 위해 다양한 알고리즘을 이용해 프로세스의 스케줄을 관리한다. 이와 같은 프로세스 스케줄링 알고리즘은 크게 아래의 두 가지로 나뉘며, 선점형 스케줄링 특정 프로세스가 CPU를 점유하고 있더라도 우선순위가 높은 다른 프로세스가 실행되면 강제로 기존 프로세스를 중단시키고 새로운 프로세스를 실행시키는 방식이다. 우선순위 기반, 라운드 로빈..
목차 한동안 WebFlux로 개발을 하면서 제목에 쓰인 것들에 대해 몸으로 배울 수 있었다. 그러나 여전히 막연한 부분이 있고, 비동기와 논블로킹이 헷갈릴 때도 있어서 오랜만에 최대한 간결하게 핵심만 정리하고 넘어가기. Synchronous execution, Asynchronous 요약부터 하고 들어가자면, 둘의 차이는 결괏값 리턴 순서가 요청 순서를 지키느냐(동기) 아니냐(비동기) 하는 것이다. 조금 덜 직관적으로 말하자면 둘의 차이는 호출된 요청의 결과를 어느 쪽에서 처리하느냐 하는 데 있다고 볼 수도 있다. 결과는 당연히 호출한 쪽에서 신경 써야 하는 거 아닌가? 싶지만 아니다. 위 그림을 보면 알 수 있듯이, 동기 처리의 경우 B메서드를 호출한 A가 작업 완료 여부를 처리한다. 따라서 여러 작업..
목차 Program, Process, Thread 프로그램, 프로세스, 그리고 스레드는 모두 컴퓨터에서 실행되는 코드를 가리킨다. 하지만 당연하게도 중요한 차이점들이 있는데, 짧게 정리하면 아래와 같다. 프로그램 프로그램은 실행 가능한 코드와 데이터의 집합이다. 실행 파일이나 라이브러리 형태로 디스크에 저장되며 실행되기 전에 디스크에서 메모리로 로드되는데, 이를 '프로그램 인스턴스'라고 한다. 프로세스 위에서 말한 '프로그램 인스턴스'가 바로 프로세스이다. 다시 한번 정리하자면 프로그램이 실행되어 운영체제에 의해 메모리상에 올라가면 이를 프로세스라 부른다. 따라서 운영체제로부터 자원을 할당받는 작업의 단위라 볼 수 있으며, 프로세스 사이에는 자원이 공유되지 않는다. 이 때문에 Context Switchi..
목차 Multi Process 멀티 프로세스란 말 그대로 두 개 이상의 프로세스가 동시에 실행되는 것을 말한다. 이때 프로세스를 진행 중인 CPU는 하나일 수도, 여러 개일 수도 있으며 이는 전에 알아본 동시성, 병렬성과 같은 차이를 만든다. 다시 언급하자면 하나의 CPU는 한 번에 하나의 작업만을 수행할 수 있기 때문에, 여러 개의 작업이 동시에 실행될 경우 짧은 시간 동안 번갈아가며 동시성을 구현한다(이를 시분할 환경이라 한다). 반면 두 개 이상의 CPU가 멀티 프로세스를 진행할 경우 프로세스를 나눠 처리하며 병렬성을 구현한다. 주로 작업 사이의 독립적인 운영과 안정성이 중시될 때 사용되며, 아래와 같은 장단점을 갖는다. 장점 각 프로세스가 완전히 독립적이기 때문에 안정적이다 ↔ 개별 프로세스의 문..
목차 Deadlock 교착 상태(Deadlock)는 다중스레드 환경에서 설계 미스 등으로 발생하는 무한 대기 상태를 말한다. 조금 더 구체적으로는 두 개 이상의 스레드가 서로 상대방이 들고 있는 락의 해제를 기다리며 상황이 더 이상 진행되지 않는 상태를 말하는데, 이를 해결하는 일반적인 방법은 아직 없다고 한다. 때문에 현대의 OS는 언제나 교착 가능성을 염두에 두고 있으며, Unix와 윈도우의 경우 드물게 발생하는 교착 상태를 무시하는 방법과 교착이 예측되는 구역에 자원을 더 할당하는 식으로 이를 회피하고 있다. 이어서 교착 상태의 발생 조건은 아래와 같으며, 상호 배제(Mutual Exclusion) - 임계 영역의 락은 한 스레드만 획득할 수 있음 점유 대기(Hold and Wait) - 자원을 점..
Process ⊃Thread 프로세스 OS로부터 자원을 할당받는 작업의 단위 여기서 자원이란 파일, 메모리, 코드, 스택, 힙 등을 모두 포함 위와 같은 특성상(메모리 공유 X) 프로세스 사이의 Context Switching(정보 교환) 이 어려워 여러 여러 개의 프로세스를 가진 프로그램의 동시 작업 수행 어려움 → 소프트웨어의 복잡도가 증가할수록 발목을 잡는 요인 독립적인 작업이기 때문에, 한 프로세스의 강제종료가 다른 프로세스에 영향을 주지 않는다. 이와 같은 배경에서 탄생한, 프로세스보다 작은 단위가 바로 스레드 스레드 프로세스의 자원을 사용하는 실행의 최소 단위 독립 실행을 위해 각자의 PC Register, 스택을 가지며 프로세스 내부의 힙 메모리, 데이터, 코드는 공유 때문에 생성 및 처리속..
공부를 하고 프로젝트를 하면서 노드라는 단어를 참 많이 듣기도 했고 쓰기도 했다. 그래도 그림자를 따라다니는 기분을 지울 수가 없어서, 내가 사용하는 범위 안에서만 정리하고 가자. 시작하기 전에, 노드는 맥락과 분야에 따라 굉장히 다양한 의미를 가지며, 내가 정리한 것은 오로지 내가 현재 관심 있는 분야에 한정된 자료에 불과하다. Node - Data Structure 자료 구조를 배울 때, 특히 링크드 리스트나 트리, 더 일반적으로는 그래프에 대해 배울 때 노드라는 단어를 처음 만난다. 자료구조에서의 노드란 추상적으로 말하면 구조의 기본 단위, 트리나 그래프로 치면 정점이라고 할 수 있으며 덜 추상적으로 말하면 메모리 곳곳에 흩어져 있는 데이터의 조각, 혹은 그 기본적인 단위를 가리킨다. 추가로 링크드..
- Total
- Today
- Yesterday
- 스프링
- 여행
- Python
- 자바
- 지지
- 맛집
- 유럽여행
- Algorithm
- 면접 준비
- 세계일주
- 리스트
- 백준
- a6000
- RX100M5
- spring
- BOJ
- 알고리즘
- 남미
- 기술면접
- 야경
- 유럽
- 세모
- 칼이사
- 스트림
- Backjoon
- 파이썬
- 중남미
- java
- 세계여행
- 동적계획법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |