[1] 운영체제의 큰 그림

hyunsooo·2023년 4월 27일
0
post-thumbnail

운영체제는 현재 존재하는 프로그램 중 가장 규모가 크고 다양한 종류가 존재합니다. 운영체제의 종류마다 지원하는 기능이 다르지만 운영체제로 가져야할 핵심적인 서비스는 동일합니다. 따라서 이번 시간에는 운영체제 전체 그림을 그려보는 시간을 가져보겠습니다.

커널

위에서 말한 운영체제의 여러 기능 중 핵심적인 서비스를 담당하는 부분을 커널이라고 합니다. 운영체제는 커널 이외에도 UI(GUI, CLI)와 같이 핵심적인 서비스는 아닌 부분들이 존재합니다. 이런 사용자 인터페이스는 운영체제가 제공하는 서비스 중 하나지만, 사용자와 컴퓨터 사이의 통로 역할을 할 뿐 커널에 속하는 기능은 아닙니다.


이중 모드 & 시스템 호출(콜)

운영체제는 사용자가 실행하는 프로그램이 하드웨어의 자원(CPU, 메모리, 디스크 등)에 직접 접근하는 것을 방지합니다. 만약 프로그램이 자원에 직접 접근한다면 프로그램 보관 및 관리나 CPU나 메모리 할당이 무질서하게 이루어지게 되고 결국 컴퓨터를 사용할 수 없게 될 수 있습니다. 따라서 일반 프로그램들은 운영체제를 통해 자원에 접근하게 됩니다.

이중 모드란 CPU가 명령어를 실행하는 모드를 사용자 또는 커널 모드로 나누어 구분하는 방식입니다. 일반적인 프로그램은 사용자 모드로 실행이 됩니다. 사용자 모드는 운영체제 서비스를 제공받을 수 없는 실행 모드이며 결국 커널 영역의 코드를 실행할 수 없습니다. 따라서 하드웨어 자원에 접근할 수 없습니다.

커널 모드란 운영체제 서비스를 제공받을 수 있는 실행 모드이기 때문에 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행할 수 있으며 운영체제는 커널 모드로 실행되기 때문에 자원에 접근할 수 있습니다.

CPU가 사용자 모드인지 커널 모드인지는 컴퓨터 구조시간에 배웠던 플래그 레지스터의 슈퍼바이저 플래그를 통해 알 수 있습니다. 그렇다면 사용자 모드에서 언제 커널 모드로 전환될까요? 이 역할을 하는게 시스템 호출(콜) 입니다.

시스템 호출은 일종의 인터럽트로 운영체제마다 정해진 시스템 호출이 실행된다면 커널 모드로 전환되어 운영체제 서비스를 제공 받을 수 있습니다. 이는 CPU 내부의 명령어로 발생하는 인터럽트로 소프트웨어 인터럽트의 한 종류입니다. 일반적으로 프로그램 실행 과정에서 운영체제 서비스들을 빈번하게 이용하고 있고 그 과정에서 많은 시스템 호출을 발생시켜 사용자 모드와 커널 모드를 오가며 실행됩니다.


운영체제의 서비스 종류

운영체제의 대표적인 핵심 서비스는 프로세스 관리, 자원 접근 및 할당, 파일 시스템 관리로 나눌 수 있습니다.

프로세스 관리

지금까지 실행중인 프로그램이라고 표현했던 것을 프로세스라고 합니다. 또한 컴퓨터는 여러개의 프로그램을 실행할 수 있습니다. 이처럼 운영체제는 동시다발적으로 실행/생성/삭제 되는 프로그램들을 관리하게 됩니다. 대표적으로 프로세스와 쓰레드, 동기화, 교착 상태 등의 개념이 있습니다.

자원 접근 및 할당

  • 운영체제의 CPU 접근 및 할당 : CPU 스케줄링 기능

  • 운영체제의 메모리 접근 및 할당 : 페이징 및 스와핑 기능

  • 운영체제의 입출력장치 접근 및 할당 : 인터럽트 서비스 루틴

파일 시스템 관리

관련된 정보를 하나의 파일로 보관 및 관리하고 이런 파일들을 하나의 폴더로 관리할 수 있게끔 하는 파일 시스템 기능도 운영체제의 핵심 기능입니다.

profile
CS | ML | DL

0개의 댓글