< 글의 목적 : 딥다이브로 개념들을 정리하는 건 추후에 진행 예정이고, 일단은 각 챕터별로 필요하고, 놓치고 있던 필수개념들을 정리해보고자 한다. >
-> 시스템의 자원과 동작을 관리하는 소프트웨어로서, (프로세스, 네트워크, 저장장치, 사용자, 하드웨어) 를 관리한다.
-> CODE, DATA, HEAP, STACK 네 가지 종류가 있는데, CODE 는 소스코드가 들어가는 부분이고, DATA 는 전역변수, 정적변수가 저장되는 부분이다. HEAP 은 사용자가 직접 관리하는 영역으로, 데이터가 동적으로 할당되는 부분이고, STACK 은 함수의 호출정보, 매개변수, 지역변수 등이 저장되게 된다.
-> 프로세스는 실행 중인 프로그램을 의미하고, 스레드는 프로세스 안에서 실행되는 흐름 단위이다. 프로세스는 메모리와 CPU 를 프로세스마다 할당받아서 사용하는데, 스레드는 프로세스 안에서 다른 스레드와 메모리, CPU 를 공유해서 사용한다. (단, STACK 영역은 공유하지 않는다.)
-> 준비큐가 있는 프로세스에 대해서 CPU 를 할당하는 방법입니다. 크게 5가지가 있는데, FCFS, SJF, SRT, Priority Scheduling, Round Robin 이 있습니다.
- 비선점 : FCFS(first come first served) - 먼저 cpu 를 요청하는 프로세스를 먼저 처리하는 방식
- 비선점 : SJF(shortest job first) - 시간이 짧은 프로세스부터 먼저 처리
- 선점 : SRT(shortest remaining time) - 최단 잔여시간을 우선으로, 진행 중인 프로세스가 있어도 sleep 시키고 가장 짧은 프로세스 먼저 실행시킨다.
- 선점 : Round Robin - 모든 프로세스가 같은 우선순위를 가지고, 동등하게 각 주기별로 실행시킨다.
- 선점 : Priority Scheduling - 우선순위대로 프로세스 실행
-> 모든 프로세스에게 메모리를 할당하기에는 메모리의 크기가 한계가 있어서 사용하는 방식이다. 프로세스에서 사용하는 부분만 메모리에 올리고, 나머지는 디스크에 보관하는 방법을 가상 메모리라고 한다.
-> 데드락은 프로세스가 자원을 얻지 못해, 다음 작업을 못하는 상태이다. 예를 들어 p1 과 p2 가 각각 자원 A 와 B 를 얻어야하는데, p1은 A 를, p1 은 B 를 가지고 있어서 서로 무한정 기다리는 상태를 데드락이라고 한다. 데드락은 위 사진의 4가지 조건을 모두 만족해야 성립한다.