본문 바로가기
3. 개발 관련/임베디드 :: 괴발개발주절주절이야기보따리

3. OS가 뭐냐고?

by kyuho.choi 2011. 9. 3.
728x90
반응형
언제나 모든 이야기의 이어짐이 그렇듯,

물론 오늘도 말로만 떠듬미다. 

=============================
Root Filesystem
=============================
Operating System
=============================
Bootloader
=============================


오늘은 Operating System, 즉 운영체제라는 놈을 글로만 설명해보렴미다.

요녀석은 참 말도 많고 탈도 많으면서도 복잡하고 심오한데, 알면 알수록 까리한 녀석입니다. 희희

흔히들 OS, 운영체제는 시스템의 전반적인 관리와 제어를 위한 목적으로 구동시키는 녀석이라고 한답니다.
앞서 언급한대로 Linux OS에 대한 이야기를 좀 주절주절 떠들겁니다.

운영체제는 사용자를 위한 인터페이스와 시스템의 리소스(리소스는 하드 디스크나 랜카드 처럼 물리적인 것을 의미하기도 하고, 프로세스나 파일 시스템과 같은 논리적인 녀석들도 포함합니다)를 처리 및 관리하는 녀석입니다.
 
그럼 이 시스템을 제어하는 리눅스라는 운영체제가 어떤 구조를 갖고 있는 지를 살펴봅지요.

=====================================================================
Root Filesystem
=====================================================================
                                                           kernel area (1Gbytes ~ 3Gbytes)

Systemcall Interface
---------------------------------------------------------------
Virtual Filesystem
---------------------------------------------------------------
FileSystem    DeviceDriver    NetworkProtocol  Process MemoryManagement

=====================================================================
Bootloader
=====================================================================
 
간단하게 생각 나는 것만 표현해봤습니다.  :)

리눅스라는 운영체제는 흔히 kernel 이라고 합니다. 이 kernel 에 사용자용 인터페이스인 shell 이나
GUI 환경을 서포트해주는 Xwindows, 부팅용 프로그램인 GRUB 같은 녀석들을 잘 포장해서 릴리즈되는
배포판들도 편의상 리눅스라고 표현하지요. 정확히는 kernel 에 해당하는 부분이 Linux입니다.

저희가 개발하고 사용하면서도 Android 를 Linux라고 표현하지 않는 것 처럼 말이죠. :)
(Android는 앞서 표현한 임베디드 리눅스 의 구조에서 Root Filesystem에 해당합니다. 운영체제는 Linux kernel을 사용하지요)

그라나저라나 위에 표현한 것들을 우선 살펴보도록 하지요.

밑에서 부터 위로! 좌에서 우로!

Filesystem : 파일 시스템은 하드디스크와 같은 저장장치에 있는 데이터에 접근하기 위한 인터페이스입니다. 
                  물론 저장 장치 내부의 데이터를 표현하는 블럭이기도 하지요.
                  커널에서는 단순히 저장장치만을 위한 것이 아닌 특수한 목적을 위한 파일 시스템들도 존재합니다.

                  예를 들어 USB 메모리에 있는 "파일"을 NTFS로 포맷된 "C 드라이브" 아래의 내 문서 폴더에 옮기는
                 작업을 할 수 있게 남몰래 도와주는 녀석이라고 할 수 있지요.
 
DeviceDriver : 편의상 디바이스 드라이버라고 부릅니다만, 이 부분은 나중에 따로 살펴보겠습니다.
                     하드웨어를 제어하는 블럭이라고만 정의하고 넘어가지요.
                   
Network : 네트워크는 저희가 데이터 통신이나 컴퓨터 네트워크와 관련된 강좌나 서적에서 접할 수 있듯이
              그 네트워크입니다. 커널 내부에 구현되어있는 프로토콜대로 IPv4/IPv6/Wireless LAN/Bluetooth 등
              네트워크 통신을 위한 블럭인데, 전 잘 모름미다. 사실 관심도 그닥 없시요. 어허허허

Process : 프로세스라고 말하는 작업 단위의 개체입니다. 리눅스는 하나의 프로세스가 프로그램이 되기도 하고,
              여러개의 프로세스가 모여서 하나의 프로그램이 되기도 하지요. 웹서버 같은 경우에는 지금 보시는
              웹페이지를 보여주는 프로세스와 DB를 제어하며 웹페이지에 표시할 데이터를 처리하는 프로세스 들이
              모여서 하나의 웹 서버 프로그램이 되는 것과 유사하달까요? 또는 task 라고도 부른답니다.

MemoryManagement : 거의 대부분의 프로그램은 자신이 동작하기 위해 만드시 필요한 조건이 있습니다.
                                 바로 메모리이지요. 프로그램이라고 하는 것은 기본적으로 소스코드를 빌드해서 생성한
                                 바이너리 파일인데...요녀석들은 실행되기 위해 적당량의 메모리를 할당받고 그 영역으로
                                 바이너리를 복사하여 실행되지요. 메모리는 이 프로그램들이 동작하는 중간중간에도
                                 할당받아 쓰기도 합니다. 그러한 메모리 할당과 회수등을 처리하는 블럭입니다.

Virtual Filesystem과 System Call 은 다음 기회에 살펴볼랍니다. 제가 졸려서 -ㅅ-;

아이고 신나라!
728x90
반응형

댓글