공룡책 #1 - 운영체제를 다시 공부하는 이유
AI 시대에 CS 기반 지식이 필요한 이유와 운영체제를 다시 공부하려는 이유
개요
AI의 빠른 발전으로 비개발자도 서비스를 만들고 배포하는 시대가 되었다. AI가 코드를 생성하는 모습을 보면 개발자가 언젠가 대체되는 것은 아닌지 의문이 들기도 한다.
하지만 개발자의 일이 사라진다기보다, 개발자가 해오던 일의 비중이 달라지고 있다고 생각한다. 그렇다면 AI 시대의 개발자는 어떤 역할을 해야 하며, 지금 다시 CS와 운영체제를 공부하는 일은 어떤 의미가 있을까?
이번 글에서는 이 질문을 출발점으로 운영체제를 다시 공부하려는 이유와 앞으로 이어갈 OS 시리즈의 방향을 정리한다.
AI 시대의 개발자 역할은 무엇인가
그동안 개발자는 코드를 작성하는 데 많은 시간을 써왔지만, 개발자가 하는 일이 코드 작성만은 아니었다. 현실의 요구와 제약을 바탕으로 문제를 정의하고, 여러 해결책의 트레이드 오프를 판단해 적절한 방향을 선택하는 일도 개발자의 역할이었다.
AI가 코드 작성의 많은 부분을 담당하게 되면서 개발자가 직접 코드를 쓰는 시간은 줄어들고 있다. 대신 그만큼 더 많은 지식과 판단을 요구하는 기술적 의사결정의 비중은 상대적으로 커지고 있다.
AI 시대의 개발자는 무엇을 해결해야 하고 어떤 조건을 만족해야 하는지 파악한 뒤, 이를 기술적인 과제로 구체화하고 AI를 활용해 해결책을 만들어내는 사람이라고 생각한다. 실무에서 만드는 소프트웨어는 단순히 코드가 동작하는 것으로 끝나지 않는다. 그 해결책이 실제 요구를 충족하는지, 가용성·보안·정확성 등의 조건을 만족하는지, 회사가 감당할 수 있는 비용과 운영 조건에 맞는지를 판단해야 한다.
이러한 기술적 선택은 서비스에 반영되어 사용자와 회사에 직접적인 영향을 미친다. AI가 해결책을 제시하고 구현할 수는 있지만, 그 선택으로 발생한 결과에 대한 책임의 주체가 될 수는 없다. 따라서 AI를 활용해 해결책을 만들되, 최종적으로 어떤 해결책을 선택할지 판단하고 그 결과에 책임지는 것은 개발자의 역할이다.
왜 CS 기반 지식이 필요한가
그렇다면 기술적 의사결정을 위한 판단력은 어떻게 기를 수 있을까?
기술적 의사결정을 하려면 각 선택지가 어떤 원리로 동작하고 어떤 트레이드 오프를 가지는지 이해해야 한다. 상위 기술은 특정 문제를 해결하기 위해 만들어지며, 그 과정에서 컴퓨팅의 기본 개념과 동작 방식을 활용한다.
기반 원리를 알면 기술의 사용법만 익히는 데서 그치지 않고, 다음과 같은 질문에 답할 수 있다.
- 어떤 문제를 해결하는가?
- 왜 이런 구조를 가졌는가?
- 무엇을 보장하며, 어떤 한계를 가지는가?
- 이 기술을 사용할 때 어떤 비용이 발생하는가?
이 질문에 대한 답은 기술적 의사결정의 근거가 된다.
상위 기술은 빠르게 변화하지만 그 기반이 되는 원리는 상대적으로 천천히 변한다. 따라서 기반 지식을 갖추면 새로운 기술이 등장할 때마다 처음부터 개별 기술을 학습하는 대신, 이미 알고 있는 원리와 연결하여 이해하고 판단할 수 있다. 그래서 이번에는 개별 기술보다 그 기반이 되는 CS 지식부터 다시 공부해보려 한다.
왜 그중 운영체제인가
일반적으로 애플리케이션은 하드웨어를 직접 다루지 않고 운영체제가 제공하는 기능과 추상화 위에서 동작한다. 운영체제는 CPU, 메모리, I/O 장치 등의 자원을 관리하고 프로세스·스레드·파일·네트워크 I/O처럼 애플리케이션이 사용하는 시스템 기능을 제공한다.
개발자는 이러한 추상화 덕분에 하위 동작을 모두 알지 못해도 프로그램을 작성할 수 있다. 하지만 추상화는 복잡성을 숨겨줄 뿐, 그 아래에서 발생하는 비용과 한계까지 없애주지는 않는다.
성능 저하나 자원 부족, 동시성, I/O 문제가 생기면 추상화 아래에서 실제로 어떤 일이 일어나는지 알아야 원인을 찾고 적절한 해결 방법을 선택할 수 있다. 그래서 애플리케이션 개발자로서 기술의 보장과 한계, 비용을 판단하는 데 필요한 기반 지식을 쌓기 위해 가장 먼저 운영체제를 공부해보려 한다.
이 시리즈를 어떻게 쓸 것인가
OS 공부는 흔히 공룡책이라고 부르는 『 Operating System Concepts 10th Edition 』 의 목차와 학습 순서를 따라 진행한다. 다만 책의 내용을 그대로 번역하거나 요약하는 방식으로 쓰지는 않으려 한다.
책을 읽으며 생긴 의문을 하나씩 풀어가고, 그 과정에서 새롭게 알게 된 내용과 기존에 알고 있던 지식을 연결해 정리할 것이다. 책의 개념을 순서대로 나열하기보다는 내가 이해한 흐름에 맞게 내용의 순서와 범위를 다시 구성하려 한다.
이 시리즈는 공룡책을 읽으며 생긴 질문과 기존 지식을 연결해, 스스로 이해하기 쉬운 형태로 재구성한 기록이다.