운영체제 : 특별한 프로그램


graph TD
  1[운영체제] --> 2(큰 그림)
  2(큰 그림) --> 3(커널)
  2(큰 그림) --> 4(시스템 콜)
  1[운영체제] --> 5(프로세스 및 스레드 관리)
  5(프로세스 및 스레드 관리) --> 6(프로세스와 스레드)
  5(프로세스 및 스레드 관리) --> 7(동기화와 교착 상태)
  1[운영체제] --> 8(자원 할당 및 관리)
  8(자원 할당 및 관리) --> 9(CPU 관리 : CPU 스케줄링)
  8(자원 할당 및 관리) --> 10(메모리 관리 : 가상 메모리)
  8(자원 할당 및 관리) --> 11(파일/디렉터리 관리 : 파일 시스템)

운영체제의 역할

운영체제의 핵심 기능 : 자원 할당 및 관리 자원(시스템 자원) : 프로그램 실행에 마땅히 필요한 요소

  1. 운영체제는 사용자가 실행하는 응용 프로그램을 대신해 CPU, 메모리, 보조기억장치 등의 컴퓨터 부품에 접근하고, 각 부품들이 효율적으로 사용되도록 관리
  2. 응용 프로그램이 컴퓨터 부품들을 효율적으로 할당받아 문제 없이 실행할 수 있도록 응용 프로그램에게 자원을 할당

CPU 관리 : CPU 스케줄링

메모리에는 실행 중인 프로그램이 다수 적재되지만, CPU가 이들 모두를 동시 실행 가능한 것은 아님. CPU는 한정된 자원이므로 CPU를 할당받아 사용하기 위해 때로는 다른 프로그램의 CPU 사용이 끝날 때까지 기다리는 것도 필요. 그래서 운영체제가 실행 중인 모든 프로그램들이 공정하고 합리적으로 CPU를 할당받도록 CPU의 할당 순서와 사용 시간을 결정(= CPU 스케줄링)

graph TD
  1[CPU 관리 : CPU 스케줄링] --> 2(기본 개념 : 우선순위, 스케줄링 큐, 선점형 & 비선점형)
  1[CPU 관리 : CPU 스케줄링] --> 3(CPU 스케줄링 알고리즘)
  1[CPU 관리 : CPU 스케줄링] --> 4(리눅스 CPU 스케줄링)

메모리 관리 : 가상 메모리

운영체제는 새롭게 실행하는 프로그램을 메모리에 적재하고, 종료된 프로그램을 메모리에서 삭제. 동시에 낭비되는 메모리 용량이 없도록 효울적으로 관리. 이를 위해 가상 메모리 기술을 활용

가상 메모리 : 운영체제의 메모리 관리 기법 중 하나 (실제 물리적인 메모리 크기보다 더 큰 메모리를 이용 가능하도록 하는 기술)

graph TD
  1[메모리 관리 : 가상 메모리] --> 2(물리 주소 & 논리 주소)
  1[메모리 관리 : 가상 메모리] --> 3(메모리 할당)
  1[메모리 관리 : 가상 메모리] --> 4(페이징 & 페이지 교체 알고리즘)

파일/디렉토리 관리 : 파일 시스템

메모리보다 더 큰 용량을 갖고 있는 보조기억장치는, 더욱 일목요연하게 관리할 필요가 있음. 운영체제는 보조기억장치를 효율적으로 관리하기 위해 파일 시스템을 활용

파일 시스템 : 보조기억장치 내의 정보를 파일 및 폴더 단위로 접근 및 관리할 수 있도록 만드는 운영체제 내부 프로그램

graph TD
  1[파일/디렉토리 관리 : 파일 시스템] --> 2(파일 & 디렉터리)
  1[파일/디렉토리 관리 : 파일 시스템] --> 3(파일 시스템)