컴퓨터 시스템은 HW(하드웨어), SW(소프트웨어), 그리고 데이터로 구성되어 있다고 볼 수 있습니다.

 

운영체제는 컴퓨터 시스템을 구성하는 요소들이 1. 컴퓨터의 자원들을 효율적으로 사용할 수 있도록 환경을 제공하며, 2.컴퓨터가 부적절하게 행동하지 않도록 프로그램을 컨트롤  하는 소프트웨어 입니다!

 

우리에게 익숙한 ios, window, linux 등 이 이런 역할을 한다는 것입니다. 그런데 상기처럼 한 문장으로 운영체제를 정의할 수는 없습니다. 운영체제는 워낙 복잡해서 아직까지도 운영체제란 무엇이다~ 하고 한마디로 정의하지 못합니다. 그렇지만 운영체제가 왜 존재하냐? 라고 한다면 "컴퓨팅 시스템이 만드는 문제를 유용하게 해결하는 방법을 제시하게 위해" 라고 말할 수 있습니다.

 

일반 사용자 관점에서는 운영체제가 컴퓨터 자원을 어떻게 쓰는지는 관심이 없습니다. 컴퓨터가 빠르고, 사용성이 좋으면 그만이지 내부적인 것까지 알 필요는 없으니까요. 우리는 앞으로 위에서 정의한 것처럼 시스템적 관점에서 운영체제가 어떻게 동작하는지 자세히 알아보겠습니다. 

 

---

시스템 관점에서 운영체제는

  • 효율적이고 공정하게 컴퓨터 시스템의 운영하게 합니다
  • cpu시간, 메모리 공간, 저장장치 공간, 입출력 장치와 같은 자원들을 관리합니다
    • 자원의 관리란 : 자원들의 상충될 수 있는 많은 요청들에게 어떤 자원을 얼마나 어떻게 할당하는지 결정하는 것
  • 즉, 효율적이고 공정하게 컴퓨터 시스템의 운영하게 합니다

---

 

컴퓨터는 CPU도, 마우스/키보드/프린터/모니터 같은 입출력 장치도, 하드디스크도 메모리를 통합니다. 장치들이 어떻게 작동할지 메모리를 통해서 CPU에게 명령을 내리고, CPU는 명령을 처리하고 장치들이 실제로 수행될 수 있게 하는 것입니다. 여러 장치들이 메모리와 연결되어야 하는데, 연결되는 길을 버스라고 합니다. 특히 여기서의 버스는(컴퓨터 시스템에는 많은 버스가 있습니다). 시스템 버스입니다. 

 

이때 장치는 직접 메모리와 연결되있지 않고, 장치-장치 컨트롤러-메모리 와 같은 모양입니다. 모든 장치에는 장치 컨트롤러가 있고, 운영체제는 각 장치 컨트롤러에 대응되는 장치 드라이버가 있습니다. 장치 컨트롤러는 HW이고, 장치 드라이버는 SW입니다. 그러니까 OS가 키보드와 같은 device를 바라볼때, 물리적으로 이 키보드가 어디서 만든 무슨 키보드인지는 관심이 없습니다. OS는 키보드를 논리적인 device, 즉 파일로써 본다. 이때 파일은 디바이스 컨트롤러라는 프로그램인 것입니다.

 

장치 컨트롤러-장치디바이스간에 상호작용은 이렇게 합니다 : 장치 드라이버는 장치 컨트롤러의 작동에 대해 알고 있으며, 이때 운영체제에는 일관된 인터페이스를 제공합니다. 장치 드라이버는 장치 컨트롤러 안의 적절한 레지스터에 값을 저장하고, 장치 컨트롤러는 레지스터의 내용을 검사한 뒤 작업을 결정해서 로컬 버퍼로 데이터를 보냅니다. 다 보냈으면 장치 드라이버에 알립니다. 

어떻게 알리느냐??? 장치 컨트롤러가 장치 드라이버에 작업을 알리는 방법을 인터럽트(interrupt)라고 합니다. 한편, OS가 버퍼의 내용들을 순서대로 읽는 SW적인 방식인 폴링(polling) 방식도 있는데 OS가 요청 순서대로 모두 살피기에는 안그래도 바쁘므로 잘 사용되지 않는다고 합니다. 폴링방식은 속도는 느리지만 회로가 간단하며 별도의 HW가 필요 없다는 장점이 있습니다.

 

OS의 장치드라이버가 받는 요청은 두 가지로 나눠서 바라볼 수 있습니다.

  • 장치드라이버가 받은 요청이 읽기 요청일 경우 : [ 데이터에 대한 포인터 ] or [ 데이터 자체 ] 를 반환한 뒤 운영체제
    다른 부분으로 제어를 넘깁니다.
  • 장치드라이버가 받은 요청이 읽기 요청이 아닌 경우 : [ 쓰기 완료 ] or [ 장치 사용 중 ] 과 같은 ‘상태 정보’를 반환합니다.

다음 글에서는 인터럽트가 무엇이고 어떻게 동작하는지 좀 더 알아보겠습니다.

---

 

 

 

 

'OS 공룡책' 카테고리의 다른 글

입출력 구조  (0) 2022.05.15
저장장치 구조  (0) 2022.05.15
인터럽트  (0) 2022.05.14

+ Recent posts