035 운영체제가 일하는 법

백종석·2022년 6월 8일
0
post-thumbnail

프로세서는

컴퓨터가 켜졌을 떄 영구 기억 장치에 저장된 약간의 명령어를 실행해서 작동을 시작하도록 구성

  • 플래시 메모리에서 읽은 멸령어는 최종적으로 유용한 작업을 하기에 충분한 코드가 로드될 때까지 더욱더 많은 명령어를 읽는다.
    • 이 과정을 부트스트래핑bootstrapping이라고 불렀는데, 지금은 부팅booting이라고 한다.
    • 부팅 과정에는 메모리와 다른 구성 요소를 점검해서 올바르게 작동하는지 확인하는 절차가 포함된다.
  • 운영체제는 일단 실행되면 간단한 작업 사이클을 집중적으로 수행하는데, 실행할 준비가 됐거나 관심이 필요한 각 애플리케이션에 차례로 통제권을 준다.
  • 프로세서가 이 프로세스 각각에 차례로 관심을 갖고 처리하게 하고, 필요에 따라 프로세스 간에 초점을 전환한다.
  • 각 프로그램은 짧은 시간조각을 할당 받는데, 시간 조각은 프로그램이 시스템 서비스를 요천하거나 프로그램에 할당된 시간이 다 되면 끝난다.
  • 운영체제는 각 이벤트에 대해 필요한 어떤 일이든 수행하며, 보통은 그런 이벤트가 발생했다는 사실을 해당 이벤트를 처리해야 하는 애플리케이션에 전달한다.
    • 예를 들어 사용자가 메뉴에서 종료를 선택하거나 닫기 버튼을 클랙해서 애플리케이션을 종료하면 OS는 애플리케이션에 곧 끝나야 된다고 통보해서 애플리케이션이 남은 일을 정리할 기회를 준다.
    • 그러고 나서 OS는 프로그램이 사용하던 모든 자원을 회수하고, 화면에 창이 노출될 다른 애플리케이션에 창을 다시 그려야 한다고 알려준다.

시스템 콜

  • 운영체제는 하드웨어와 다른 소프트웨어 간의 인터페이스를 제공한다.
    • OS는 애플리케이션이 구축될 수 있는 플랫폼platform을 제공한다.
    • 추상화의 또 다른 예로, 구현상 들쑥날쑥한 부분이나 관련 없는 세부 사항을 감추는 인터페이스 또는 외관을 제공한다.
  • OS는 이러한 서비스를 표준화된 방식 또는 합의된 방식으로 이용할 수 있게 하고, 애플리케이션은 운영체제의 특정 부분에 통제권을 넘겨주는 특별한 명령어를 실행함으로써 서비스를 요청한다.
    • OS에 서비스를 요청하는 이 진입점을 시스템 콜system call이라고 하며, 시스템 콜의 세부 명세에서 그 운영체제가 무엇인지를 규정한다.

디바이스 드라이버

운영체계와 프린터나 마우스 같은 특정 종류의 하드웨어 장치 간에 가교 역할을 하는 코드

  • 드라이버 코드는 특정 장치가 어떤 일을 하도록 하는 방법을 자세히 알고 있다.
  • 디바이스 드라이버는 특정 장치의 즉이한 속성에서 시스템의 나머지 부분을 분리한다.
    • 드라이버 인터페이스는 OS가 서로 다른 장치에 균일한 방식으로 접근하도록해서 장치를 전환하기 쉽게 해준다.
    • 실제로는 OS가 추상적이거나 이상화된 장치에 포괄적인 요청을 하고, 드라이버가 특정 장치에 맞게 요청을 구체적으로 구현한다.
    • 범용 OS는 많은 디바이스 드라이버가 있다.
    • 부팅 시에 시스템에 현재 가용 장치에 필요한 드라이버를 불러오는 작업도 이루어진다.
    • 새로운 장치가 갑자기 연결되는 일도 흔한데, 보통은 새로운 드라이버를 찾을 필요가 없다.

  • 위 그림은 디바이스 드라이버, 운영체제, 시스템 콜, 애플리케이션 간의 관계를 보여준다.

다양한 디지털 장치와 OS

  • 기술 발달 덕분에 장치들은 전반적으로 앞에서 살펴봤던 범용 컴퓨터와 비슷한 모습을 띠고 있다.
    • 성능이 좋은 프로세서와 용량이 큰 메모리가 내장되어 있고, 카메라 렌즈와 디스플레이 같은 주변 장치가 여러 개 달려있다.
  • 사용환경이 특수한 경우가 아니라면 자신만의 전용 시스템을 개발하거나 값비싼 상용 제품의 라이선스를 얻는 것보다 리눅스에서 불필요한 부분을 뺀 버전을 사용하는 편이 더 쉽고 저렴하다.
    • 별도의 OS를 만들기보다는 범용 OS를 사용하는 방식이 더 타당하다.

리눅스의 장점

  • 견고하다.
  • 개조하기 용이하다.
  • 이식 가능하다
  • 무료이다.

리눅스의 단점

  • GPL 같은 라이센스에 따라 결과물 코드 일부를 공개해야 한다.
profile
항해중인 우당탕탕 코린이

0개의 댓글