OS를 공부하기에 앞서 기본적인 Computer Structure에 대해 알아보자

컴퓨터의 구조

"컴퓨터 구조"컴퓨터 구조 기본적으로 우리가 생각하는 컴퓨터의 동작방식은 위의 그림과 같이 구성되어있다. 간단하게 알아보자

H/W

하드웨어의 경우에는 컴퓨터의 머리라고 할 수 있는 CPU와 최신의 컴퓨터의 성능에 큰 영향을 미치는 주기억장치라고 불리는 RAM이 메인보드에 물리적으로 자리잡고 있다. 거기에 추가적으로 SATA방식이나, USB방식등으로 연결되어있는 HDD, Sound 카드, Video 카드, NIC등이 연결되어있다. 이러한 컴퓨터에 결합되는 것들을 주변 기기라고 한다. 주변기기

  • HDD(보조기억장치): 비휘발성[전기가 끊겨도 저장한 데이터가 사라지지 않는]의 보조기억장치로 주기억장치인 RAM과 상호보완적인 관계라고 볼 수 있다. 그러나 최근 SSD의 개발과 보급화가 잘되는 바람에 최근에는 SSD가 주로 쓰인다.
  • Sound(Sound Card): 컴퓨터의 소리를 처리하거나 아날로그로 변환하여 재생하는 장치
  • Video(Capture Card): 디스플레이 영상신호를 PC에서 읽는 신호로 변환해주는 장치
  • NIC(Network Interface Controller): 네트워크 안에서 컴퓨터간 신호를 주고 받는데 쓰이는 하드웨어 주로 이더넷 카드, 네트워크 어뎁터라고 부르거나 랜카드라고도 부르기도 한다.

S/W

소프트웨어는 H/W와 반대로 물리적인 영역이 아닌 Virtual(가상의) 공간이다. 이 공간의 영역을 두가지로 나눌 수 있는데 Kernel 영역과 Usß´er 영역이다. 이 두영역을 통틀어서 OS(운영체제)또는 Platform이라고 부른다. 이런 OS는 App구역에서의 Process를 지원하는 역할을 하기도 하고, Process를 지원하는 과정에서 생기는 요청들에 의해서 H/W를 관리하거나 제어하는 역할을 하기도 한다. 이러한 Kernel 영역과 User영역에 대해 간단하게 알아보자

Kernel

커널은 하드웨어의 자원을 자원이 필요한 프로세스에 나눠주고, ㅍ로세스 제어, 메모리 제어 프로그램 운영체제에 요구하는 System call등을 수행하는 부분이다. 운영체제의 뼈대라고 볼 수 있고 커널이 오작동을 일으키거나 사라지면 운영체제에 큰 문제가 생긴다.

User

User부분은 OS가 사용자가 직접 보개되는 부분들을 말한다. Process나 API와 같이 사용자가 직접 확인할 수 있는 부분을 말하기도 한다.

일련의 출력과정

우리가 어떤 언어로든 시작할때 시도하는 “Hello World”의 출력과정을 통해서 컴퓨터가 어떠한 방식으로 움직이는지 알아보자

cpu로 보내지는 과정CPU로 Interrupt 되어지는 과정

Printf();

  • 우리가 사용하는 인터페이스 상에서 printf();라는 함수를 통해서 API에게 요청을 보내는데 이것을 call이라고 부른다.
  • 이때 API내부에서는 장치가 추상화 된 파일이라는 인터페이스를 통해서 Kernel 모드로 정보를 전달한다.
  • Kernel 영역으로 넘어가면서의 경계면에서는 코드를 통해 전달되는데 이것을 System call이라고 한다.
  • 이후 Video 주변장치를 제어하기 위해서 Driver에서 Interrupt를 보낸다. (Interrupt는 CPU에게 주변장치를 제어하기 위해 요청 메시지를 보낸다고 생각하면 된다. 자세한건 이후 포스트를 참고)
  • 이때 Interrupt request는 IRQ라고도 칭하며 고유번호를 가지고 있다.
  • 이후 Interrupt에 대한 작업이 완료된 경우에는 완료 신호를 return한다.
  • 결과적으로 Process -> API -> 구성요소 -> Driver -> Device
    Device -> Driver -> 구성요소 -> API -> Process까지 이어지는 과정을 거친다.

참고 출처

  1. “널널한 개발자 유투브”
  2. 위키백과, 우리 모두의 백과사전

태그: ,

카테고리:

업데이트:

댓글남기기