Open Kjm04175 opened 8 months ago
구조를 이해하는 것은 정말 중요한 것 같습니다. 앞으로 진행할 커리큘럼을 대충 살펴보는 역할을 수행하기도 하고, 디테일한 내용을 다룰 때도 전체 구조는 심심잖게 등장하거든요.
C언어를 배우기 전 배웠던 데이터 저장 구조나 유니티의 이벤트 함수 실행 구조 등이 그러했죠.
오늘은 운영체제의 기초 구조에 대해 공부해보고자 합니다. 기초적인 내용이지만, 몇 가지 바리에이션이 존재하는 만큼 각각의 특징과 장단점을 확실히 알고 넘어가는 것을 목표로 진행하겠습니다.
운영체제 구조로 넘어가기 전, System call이라는 동작을 이해하고 가도록 하겠습니다. 운영체제의 핵인 '커널(kernel)'은 스스로를 보호하기 위해 사용자에게는 제한된 인터페이스만 제공합니다. 이 인터페이스를 system call이라고 합니다.
사용자나 응용프로그램은 컴퓨터 자원을 이용하기 위해 필수적으로 이 시스템 콜을 이용해야 합니다.
왜 이런 구조를 선택한 것일까요?
사용자를 내부 자원에 직접 접근하게 하는 것은 위 사진과 같은 것입니다. 지구상의 모든 사용자가 초지성을 갖고 완벽한 컴퓨터 이용을 수행한다면 문제가 없겠지만, 사용자에게 많은 자율성을 부여했을 때 컴퓨터 시스템은 파괴될 확률이 큽니다.
시스템 콜은 운영체제를 통해서 컴퓨터가 죽지 않을 정도의 커뮤니케이션을 제공하기 때문에 안전합니다!
위 그림은 system call이라고 할 수 있을까요? 조카(사용자)가 자원(장난감, PC 등)에 접근하는 것을 제가 제어하고 있으니까요.
저는 아니라고 봅니다. 조카가 제게 자유롭게 dynamic한 질문을 하고 있으니까요.
이런 느낌으로 팻말 중 하나를 선택하는 느낌의 정해진 요청만 할 수 있어야 system call에 가깝다고 생각합니다.
드라이버는 커널과 하드웨어 사이의 인터페이스입니다. 컴퓨터와 연동되는 하드웨어는 수도 없이 많지만, 윈도우 개발자들이 모든 하드웨어에 대한 코드를 작성할 수는 없는 법입니다.
이 때, 각 하드웨어의 개발자가 운영체제에 맞는 소프트웨어를 개발하고 배포하는데, 이것을 드라이버라고 합니다.
단일형 구조 커널은 운영체제 초창기에 이용되었던 구조입니다. 특별한 구조가 있다기 보다는 모든 기능들이 구분 없이 하나의 계층에 구현되어 있습니다.
장점
단점
계층형 구조 커널은 비슷한 기능을 갖는 모듈을 하나로 묶어 계층을 만들고, 그 계층 간 통신을 진행함으로 운영체제를 구현하는 방식입니다.
마이크로 구조 커널은 계층형 구조의 문제를 해소하기 위해 나타난 구조입니다. 운영체제는 프로세스 관리, 메모리 관리, 프로세스 관리 등 가장 기본적인 기능만을 제공하고 나머지는 사용자 영역에 구현하는 것이죠.
애플의 운영체제인 MAC OS와 IOS가 이런 구조를 채택하고 있다고 합니다.
오늘은 시스템 콜, 드라이버로 시작해, 커널의 구조 3가지를 알아보았습니다. 아직까지는 쉬운 내용이 주를 이루고 있어 다행이네요.
내일 또 봐요~
https://ardor-dev.tistory.com/22
마우스집착남
ㅋㅋㅋㅋㅋㅋ 아니 저렇게 적절한 짤들은 어떻게 찾는거에요???? 그림도 넘 재밌군요 ㅋㅋㅋㅋㅋ
서론
잡설
구조를 이해하는 것은 정말 중요한 것 같습니다. 앞으로 진행할 커리큘럼을 대충 살펴보는 역할을 수행하기도 하고, 디테일한 내용을 다룰 때도 전체 구조는 심심잖게 등장하거든요.
C언어를 배우기 전 배웠던 데이터 저장 구조나 유니티의 이벤트 함수 실행 구조 등이 그러했죠.
오늘은 운영체제의 기초 구조에 대해 공부해보고자 합니다. 기초적인 내용이지만, 몇 가지 바리에이션이 존재하는 만큼 각각의 특징과 장단점을 확실히 알고 넘어가는 것을 목표로 진행하겠습니다.
int main()
System call
운영체제 구조로 넘어가기 전, System call이라는 동작을 이해하고 가도록 하겠습니다. 운영체제의 핵인 '커널(kernel)'은 스스로를 보호하기 위해 사용자에게는 제한된 인터페이스만 제공합니다. 이 인터페이스를 system call이라고 합니다.
사용자나 응용프로그램은 컴퓨터 자원을 이용하기 위해 필수적으로 이 시스템 콜을 이용해야 합니다.
왜 이런 구조를 선택한 것일까요?
사용자를 내부 자원에 직접 접근하게 하는 것은 위 사진과 같은 것입니다. 지구상의 모든 사용자가 초지성을 갖고 완벽한 컴퓨터 이용을 수행한다면 문제가 없겠지만, 사용자에게 많은 자율성을 부여했을 때 컴퓨터 시스템은 파괴될 확률이 큽니다.
시스템 콜은 운영체제를 통해서 컴퓨터가 죽지 않을 정도의 커뮤니케이션을 제공하기 때문에 안전합니다!
위 그림은 system call이라고 할 수 있을까요? 조카(사용자)가 자원(장난감, PC 등)에 접근하는 것을 제가 제어하고 있으니까요.
저는 아니라고 봅니다. 조카가 제게 자유롭게 dynamic한 질문을 하고 있으니까요.
이런 느낌으로 팻말 중 하나를 선택하는 느낌의 정해진 요청만 할 수 있어야 system call에 가깝다고 생각합니다.
드라이버
드라이버는 커널과 하드웨어 사이의 인터페이스입니다. 컴퓨터와 연동되는 하드웨어는 수도 없이 많지만, 윈도우 개발자들이 모든 하드웨어에 대한 코드를 작성할 수는 없는 법입니다.
이 때, 각 하드웨어의 개발자가 운영체제에 맞는 소프트웨어를 개발하고 배포하는데, 이것을 드라이버라고 합니다.
커널의 구성 및 종류
단일형 구조 커널
단일형 구조 커널은 운영체제 초창기에 이용되었던 구조입니다. 특별한 구조가 있다기 보다는 모든 기능들이 구분 없이 하나의 계층에 구현되어 있습니다.
장점
단점
계층형 구조 커널
계층형 구조 커널은 비슷한 기능을 갖는 모듈을 하나로 묶어 계층을 만들고, 그 계층 간 통신을 진행함으로 운영체제를 구현하는 방식입니다.
장점
단점
마이크로 구조 커널
마이크로 구조 커널은 계층형 구조의 문제를 해소하기 위해 나타난 구조입니다. 운영체제는 프로세스 관리, 메모리 관리, 프로세스 관리 등 가장 기본적인 기능만을 제공하고 나머지는 사용자 영역에 구현하는 것이죠.
애플의 운영체제인 MAC OS와 IOS가 이런 구조를 채택하고 있다고 합니다.
장점
단점
결론
오늘은 시스템 콜, 드라이버로 시작해, 커널의 구조 3가지를 알아보았습니다. 아직까지는 쉬운 내용이 주를 이루고 있어 다행이네요.
내일 또 봐요~
참조
https://ardor-dev.tistory.com/22