1. 운영체제란? 운영체제는 컴퓨터를 사용할 때 가장 기본이 되는 프로그램이다. 사용자는 운영체제를 직접 다루는 것 같지 않지만 우리가 어떤 프로그램을 실행하거나 파일을 저장할 때마다 운영체제가 그 과정을 전부 관리하고 있다. 운영체제의 중심에는 커널이라는 부분이 있다. 커널은 프로그램 실행, 메모리 관리, 장치 제어 등 컴퓨터의 핵심 기능을 맡고 있어서, 말 그대로 운영체제의 중심 역할을 한다. 프로그램이 이런 기능들을 사용할 땐 운영체제에게 직접 요청을 보내야 하는데, 이걸 시스템 호출이라고 한다. 시스템 호출은 프로그램이 파일을 저장하거나 다른 프로그램을 실행할 때처럼, 운영체제의 기능을 활용할 때 사용된다.

  2. 프로세스와 스레드 컴퓨터에서 실행 중인 프로그램을 운영체제는 프로세스라고 부른다. 프로세스는 단순한 프로그램이 아니라, 실행 상태나 메모리 정보 등 여러 요소를 포함한 실행 단위다. 여러 개의 프로세스가 동시에 실행될 수 있고, 운영체제는 이들을 효율적으로 관리한다. 하나의 프로세스 안에는 스레드라는 더 작은 단위가 있다. 스레드는 실제로 작업을 수행하는 실행 흐름이며, 여러 스레드를 사용하면 한 프로그램에서 여러 작업을 동시에 처리할 수 있다. 이런 구조를 멀티스레딩이라고 하며, 실행 속도를 높이는 데 도움이 된다. 운영체제는 동시에 실행되는 프로세스가 많을 때, CPU를 어떤 순서로 나눠줄지 결정해야 한다. 가장 먼저 도착한 순서대로 처리하는 방법(FCFS), 실행 시간이 짧은 작업을 먼저 처리하는 방법(SJF), 시간 단위를 나눠가며 번갈아 처리하는 방법 (RR) 등 다양한 방식이 있다. 각각의 방법은 장단점이 있어서, 시스템 환경에 따라 적절하게 선택된다.

  3. 동기화와 교착상태 여러 개의 프로세스가 동시에 자원을 사용하려고 할 때, 자원 관리가 제대로 되지 않으면 문제가 생길 수 있다. 그중 대표적인 예가 교착상태다. 교착상태란 두 개 이상의 프로세스가 서로 자원을 점유한 채 상대방의 자원을 기다리면서, 아무 작업도 진행하지 못하고 멈춰 있는 상황이다. 이런 상황은 상호 배제, 점유와 대기, 비선점, 순환 대기라는 네 가지 조건이 모두 만족될 때 발생한다. 교착상태를 막기 위한 방법으로는 발생 조건 중 하나를 사전에 없애는 예방 방법, 자원을 할당하기 전에 문제가 생길지를 검사하는 회피 방법, 그리고 이미 발생한 교착상태를 감지하고 해결하는 회복 방법이 있다. 어떤 방식을 선택하든 시스템 상황에 맞는 적절한 대응이 필요하다.

  4. 메모리 관리 운영체제는 실행 중인 프로그램이 사용할 수 있도록 메모리를 할당하고 관리한다. 컴퓨터의 메모리는 한정돼 있기 때문에, 여러 프로그램이 동시에 실행되려면 메모리를 효율적으로 나눠 쓰는 방식이 중요하다. 초기에는 연속된 공간에 메모리를 할당하는 방식이 주로 사용됐다. 이 방식은 구조가 단순하지만, 메모리 공간의 낭비가 심해질 수 있다. 이를 보완하기 위해 고정 분할 방식, 가변 분할 방식, 그리고 프로그램을 여러 조각으로 나눠서 메모리 여러 곳에 저장하는 비연속 할당 방식 등이 사용되었다. 페이징은 메모리를 일정한 크기의 페이지로 나누어 사용하는 방식이다. 물리 메모리와 논리 메모리를 분리해서 프로그램이 메모리를 자유롭게 사용하는 것처럼 보이게 만들며, 페이지 테이블을 통해 논리 주소를 물리 주소로 변환한다. 또한 가상 메모리는 실제 메모리보다 더 많은 공간이 있는 것처럼 보이게 해주는 기술이다. 필요한 부분만 메모리에 올리고, 나머지는 하드디스크 같은 보조기억장치에 저장해둔다. 이로 인해 큰 프로그램도 실행이 가능해진다. 하지만 메모리를 계속 나눠 쓰다 보면 내부 단편화와 외부 단편화 같은 문제가 생긴다. 이런 단편화를 줄이기 위해 압축, 페이징, 세그멘테이션 등의 기법이 함께 사용된다.

  5. 보조기억장치 관리 보조기억장치는 하드디스크나 SSD 같은 장치를 말하며, 운영체제는 이 장치도 효율적으로 관리해야 한다. 특히 여러 요청이 동시에 들어올 때, 어떤 순서로 데이터를 처리할지 정하는 디스크 스케줄링이 중요하다. 디스크는 물리적으로 움직이는 헤드를 통해 데이터를 읽거나 쓰기 때문에, 접근 순서에 따라 속도 차이가 생긴다. 그래서 단순히 들어온 순서대로 처리하는 것보다, 가까운 위치의 데이터를 먼저 처리하는 방법 등이 더 효율적일 수 있다. 디스크 스케줄링 알고리즘에는 FCFS, SSTF, SCAN, C-SCAN, LOOK 등이 있으며, 각각 처리 속도나 공정성 측면에서 특징이 다르다. 예를 들어 SCAN은 디스크의 한쪽 끝까지 이동하면서 요청을 처리하고, 끝에 도달하면 반대 방향으로 이동한다. 반면 C-SCAN은 한 방향으로만 이동하고 다시 시작 위치로 돌아오는 방식이다. 운영체제는 처리량을 높이고, 응답 시간을 줄이며, 모든 요청이 공정하게 처리되도록 다양한 전략을 사용한다. 이런 관리 덕분에 여러 작업을 동시에 하더라도 시스템이 안정적으로 유지될 수 있다.

자료 출처 : 지피티, 학습지