이 Organization은 2023학년도 충남대학교 컴퓨터융합학부 [운영체제 및 실습] 과목의 실습 강의를 위해 준비되고 있습니다. 만약 23년 3월에 강의실에서 이 화면을 보고 계신다면, 진심으로 환영합니다!
이 강의의 실습과제는 전부 C로 진행됩니다. C로 코드를 작성하고 읽을 수 있어야 수월하게 따라올 수 있습니다. 특히 구조체, 공용체, 포인터, 배열 등 각종 자료구조에 대한 이해를 필요로 합니다. 작성된 코드의 실행은 모두 gcc로 빌드되므로 gcc를 포함하여 make와 같은 각종 빌드 툴체인에 대한 사용법을 익혀두셔야 합니다.
운영체제는 굉장히 많은 자료구조들을 처리하는 여러가지 알고리즘의 집합체입니다. 2학년때 열리는 [자료구조] 강의와 [시스템 프로그래밍] 강의를 듣고 오시는 것을 추천합니다. 추천 까지는 아니지만, [알고리즘] 강의도 듣고 오시면 나쁘지 않습니다.
리눅스와 쉘을 사용할 수 있어야 합니다. 이 강의에서 코드 작성을 제외한 거의 모든 지시사항은 쉘로 처리 되도록 작성되었습니다. 강의 자료에서는 Ubuntu를 사용할 예정이지만, 학생 개인의 능력이나 기호에 따라 다른 리눅스 배포판을 사용할 수도 있습니다.
운영체제는 아주 거대한 프로그램입니다. 따라서 개발에 아주 오랜 시간이 걸리며, 그 과정에서 작성되고 지워지는 코드의 양은 상상을 초월합니다. 이것을 효율적으로 관리하기 위한 도구 중 하나인 Git은 현 시대에서 가장 인기있는 형상관리 프로그램 중 하나로, 지금 여러분이 보고 계시는 GitHub의 기반 기술이기도 합니다. 그리고...
우리가 대학 오기 전부터, 그리고 지금도 여러모로 배우고 있는 그 English 맞습니다. 커널 밑으로 내려오게 되면 여태까지 여러분들을 지켜주던 한글 입력기는 물론 유니코드조차 사라져버립니다. 그 커널이 심지어 직접 만드는거라면 말입니다. 앞으로 여기서 제공되는 자료들은 특별한 상황이 아닌 이상 전부 영어로 제공됩니다.
Make, GCC, Binutils 등 C 소스코드를 실행 가능한 프로그램을 만들기 위한 여러가지 툴체인들의 사용법을 익혀봅니다. 또한 버그를 수정하는데 도움이 되는 도구인 디버거, 그 중에서도 gdb를 이용해 프로그램의 실행 과정을 점검하는 방법에 대해 알아봅니다.
본 과정에서는 기초적인 커널 프로그래밍을 다룹니다. 운영체제는 분명 하드웨어와 밀접하게 동작하지만, 커널 그 자체로서는 추상화를 통해 하드웨어와 어느정도 분리된 환경을 이루어 어느정도 독립성을 갖추기도 합니다. 이 과정에서는 C언어를 이용하여 cnuos라고 하는 자그마한 운영체제를 개발해봅니다.
이론 시간에 배운 운영체제 이론들을 cnuos에 실제로 옮겨보며 체득해봅니다. 이 과정은 분명 고통스럽겠지만, 무사히 넘긴다면 여러분은 진정 컴퓨터를 전공했다고 자신할 수 있을 것입니다. 물론 운영체제를 하나 만들었다는 자부심은 덤입니다.
- Logo was generated from Kemonogen, by cstria0106