자작 운영체제는 은근 단순한 구조를 가진다

리눅스, FreeBSD 등등 여러 운영체제의 코드가 공개되어 있다보니 많은 사람들이 여러모로 운영체제 구조를 보고 공부하는 데에는 익숙해졌다고 봐도 될 정도이다. (못하면 할 수 있도록 공부하는 사람들이라고 생각하겠다.)

그러나, 실제로 개발을 진행하다 보면 운영체제 개발은 그렇게 쉬운 개발이 아니게 된다. 리눅스 커널만 보더라도 자료구조가 상당히 복잡하다. 그런데, 그런 구조여야 될 수 있는 수준으로 규모가 커진 운영체제 또한 리눅스이다.

그런 걸 보다가 다른 사람들이 자작으로 만든 운영체제를 보면 은근 단순한 구조를 가지고 있는 것을 보게 된다. 실제로 지금 내가 만들고 있는 운영체제도 메모리 구조는 단순한 매칭 형식으로 지원되어 있다. 1:1 매핑이라던가, 단순 세그멘테이션으로만 이루어진 보호모드에서 걍 1:1 페이징을 구성한다던가….

이렇게 만드는 이유는 간단하다. 디버깅이 편하다. ㅠㅠ 운영체제 개발에 필요한 디버깅은 사람의 머리다. 그러다 보니 어느 정도 제어를 할 수 있는 자료구조를 가지고 운영체제 개발을 하게 된다. 그러다가 좀 더 규모가 커지면서 구조를 업데이트 하는 것이고, 그렇게 계속 튜닝을 하다 보면 어느샌가 어느 정도 이상의 규모를 지지할 수 있는 성능의 운영체제가 되는 것이다.

그렇다고 해서 대충 한다? 그건 아니다. 다들 운영체제의 이론에서 볼 법한 그런 내용들을 기반으로 생각해서 만드는 것이다. 그러므로 모르면 모르는대로 또 문제가 된다. 이거 은근 여러모로 사람 머리를 엄청 써야 하는 거니깐 은근 무시할 수 없는 수준까지 올라간다. 그러니, 단순한 구조라고 해서 무시할 것이 못된다.

p.s. 이런 운영체제 혼자서 설계해서 만들 수 있는 사람들은 널리고 널렸다는 게 문제다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.