종류에 관계없이 운영체제가 제공하는 핵심 기능은 비슷하며, 운영체제의 핵심 기능을 담당하는 부분을 커널(Kernel)이라고 함
graph TD
1[운영체제] --> 2(큰 그림)
2(큰 그림) --> 3(커널)
2(큰 그림) --> 4(시스템 콜)
1[운영체제] --> 5(프로세스 및 스레드 관리)
5(프로세스 및 스레드 관리) --> 6(프로세스와 스레드)
5(프로세스 및 스레드 관리) --> 7(동기화와 교착 상태)
1[운영체제] --> 8(자원 할당 및 관리)
8(자원 할당 및 관리) --> 9(CPU 관리 : CPU 스케줄링)
8(자원 할당 및 관리) --> 10(메모리 관리 : 가상 메모리)
8(자원 할당 및 관리) --> 11(파일/디렉터리 관리 : 파일 시스템)
<aside> <img src="/icons/info-alternate_blue.svg" alt="/icons/info-alternate_blue.svg" width="40px" />
즉, “자원 할당 및 관리”가 운영체제의 역할이며, 여기서 자원은 “프로그램 실행에 마땅히 필요한 요소"를 의미함
</aside>
운영체제는 사용자가 실행하는 응용 프로그램을 대신해 CPU, RAM(메모리), 보조기억장치 등의 컴퓨터 부품에 접근하고 각 부품들이 효율적으로 사용되도록 관리하며, 응용 프로그램이 컴퓨터 부품들을 효율적으로 할당받아 문제 없이 실행할 수 있도록 응용 프로그램에게 자원을 할당함
메모리에는 실행 중인 프로그램이 다수 적재되지만, CPU가 이들 모두를 동시 실행 가능한 것은 아님. CPU는 한정된 자원이므로 CPU를 할당받아 사용하기 위해 때로는 다른 프로그램의 CPU 사용이 끝날 때까지 기다리는 것도 필요. 그래서 운영체제가 실행 중인 모든 프로그램들이 공정하고 합리적으로 CPU를 할당받도록 CPU의 할당 순서와 사용 시간을 결정함(= CPU 스케줄링)
graph TD
1[CPU 관리] --> 2(기본 개념)
2[기본 개념] --> 5(우선순위)
2[기본 개념] --> 6(스케줄링 큐)
2[기본 개념] --> 7(선점형 & 비선점형)
1[CPU 관리] --> 3(CPU 스케줄링 알고리즘)
1[CPU 관리] --> 4(리눅스 CPU 스케줄링)
운영체제는 새롭게 실행하는 프로그램을 메모리에 적재하고, 종료된 프로그램을 메모리에서 삭제함. 동시에 낭비되는 메모리 용량이 없도록 효울적으로 관리하는데, 이를 위해 가상 메모리 기술을 활용함. 가상 메모리란 “운영체제의 메모리 관리 기법” 중 하나로, 실제 물리적인 메모리 크기보다 더 큰 메모리를 이용할 수 있도록 하는 기술임.
graph TD
1[메모리 관리] --> 2(물리 주소 & 논리 주소)
1[메모리 관리] --> 3(메모리 할당)
1[메모리 관리] --> 4(페이징 & 페이지 교체 알고리즘)
메모리보다 더 큰 용량을 갖고 있는 보조기억장치는 더욱 일목요연하게 관리할 필요가 있음. 이때, 운영체제는 보조기억장치를 효율적으로 관리하기 위해 파일 시스템을 활용함. 파일 시스템은 보조기억장치 내의 정보를 파일 및 폴더 단위로 접근하고 관리할 수 있도록 하는 운영체제 내부 프로그램임.
참고로 입출력 장치와 캐시 메모리 또한 운영체제에 의해 관리되는 자원임. 운영체제가 일부 입출력장치의 장치 드라이버와 하드웨어 인터럽트 서비스 루틴을 제공하거나 캐시 메모리의 일관성을 유지하는 등의 기능을 제공함.
graph TD
1[파일/디렉토리 관리] --> 2(파일 & 디렉터리)
1[파일/디렉토리 관리] --> 3(파일 시스템)
<aside> <img src="/icons/info-alternate_blue.svg" alt="/icons/info-alternate_blue.svg" width="40px" />
프로세스는 **“**실행 중인 프로그램”을 의미하며, 스레드는 “프로세스를 이루는 실행 단위”를 의미함.
</aside>
메모리에는 여러 프로세스가 적재될 수 있음. 운영체제는 여러 프로세스에 필요한 자원을 할당하고, 스레드는 프로세스가 할당받은 자원을 이용해 프로세스의 작업을 수행함(프로세스를 이루는 스레드가 둘 이상인 경우, 동일 작업을 동시 실행 가능). 운영체제는 이렇게 동시다발적으로 실행되는 프로세스와 스레드가 올바르게 처리되도록 실행 순서를 제어하고, 프로세스와 스레드가 요구하는 자원을 적절히 배분해야

graph TD
1[프로세스 및 스레드 관리] --> 2(프로세스 & 스레드)
1[프로세스 및 스레드 관리] --> 3(동기화 & 교착 상태)