Home [CS] OS: 운영체제란 무엇인가?
포스트
취소

[CS] OS: 운영체제란 무엇인가?

운영체제

운영체제(Operating System)는 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임이다. 운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공해 준다.

운영체제의 목적에는 처리능력 향상, 사용 가능도 향상, 신뢰도 향상, 반환 시간 단축 등이 있다.

역할

운영 체제의 역할은 크게 네 가지가 있다.

자원기능
프로세스 관리CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리
기억장치 관리한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리
주변장치 관리마우스, 키보드 같은 데이터를 주고받는 장치를 관리
파일 관리파일을 어떤 방법으로 보관할지 관리

구조

운영체제는 응용프로그램과 하드웨어 사이에 위치해 있으며, 커널과 인터페이스로 이루어져있다.

  • 커널 : 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것으로 운영체제의 성능을 좌우한다.
  • 인터페이스 : 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할을 한다. 그래픽으로 되어있으면 GUI, 명령어 형태로만 전달하면 CUI라고 한다.

커널

커널 내부에는 시스템콜과 드라이버가 있는데, 각각이 무엇인지 알아보도록 하자.

  • 시스템콜

시스템콜이란 커널이 자신을 보호하기 위해 만든 인터페이스이다. 사용자나 프로그램이 직접 컴퓨터 자원에 직접 접근하는 것을 막는다. 사용자나 응용 프로그램이 컴퓨터 자원을 사용하기 위해서는 시스템 호출을 사용해야 한다. 보통은 함수의 형태로 제공된다. (Ex. printf(), write())

시스템콜이 작동 될 때, modebit을 참고해 유저 모드와 커널 모드를 구분한다. I/O 장치를 작동시킬 때 운영 체제를 통하지 않는다면, 공격자가 I/O 장치를 건드리기 쉬워진다. 이를 방지하기 위해 I/O 장치를 작동시키고 싶으면 시스템콜을 호출해 modebit을 1에서 0으로 바꿔 해당 장치를 이용한 로직을 수행하도록 한다.

  • 드라이버

드라이버는 커널과 하드웨어의 인터페이스를 담당한다. 컴퓨터 하드웨어의 종류는 다양한데, 이때 운영체제가 각 하드웨어에 맞는 인터페이스를 개발하기는 어려우므로 하드웨어 제작자가 만든 소프트웨어를 받아서 설치하여 하드웨어를 사용할 수 있게 한다. 이 소프트웨어를 디바이스 드라이버라고 한다.

인터럽트

인터럽트란, 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 중단하고 발생된 상황을 처리한 후 다시 실행중인 작업으로 복귀하는 것을 말한다. 인터럽트가 발생하면, 인터럽트 핸들러 함수가 모여있는 인터럽트 벡터로 가서 인터럽트 핸들러 함수가 실행된다. 인터럽트 간에는 우선 순위가 있고, 우선 순위에 따라 실행된다.

종류

인터럽트는 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉜다.

  • 하드웨어 인터럽트

하드웨어 인터럽트는 키보드, 마우스를 연결하는 등 IO 장치에서 발생하는 인터럽트를 말한다.

  • 소프트웨어 인터럽트

트랩이라고도 불리는 소프트웨어 인터럽트는 프로세스에서 오류가 일어나거나, 프로세스가 시스템콜을 호출해 발생하는 인터럽트를 말한다.

처리 과정

  1. 현재 실행중인 명령의 메모리 주소를 포함한 부가 정보를 PCB에 저장한다.

CPU에서 명령이 실행될 때에는 CPU 내부에 있는 임시 기억장치인 레지스터에 데이터를 읽거나 쓰면서 작업을 한다.

이때 인터럽트가 발생하면 기존의 레지스터값들이 지워지게 되므로 CPU 내의 이러한 상태를 PCB에 저장한다.

  1. 인터럽트 처리 루틴에 따라 인터럽트를 처리한다.

운영체제는 할 일을 쉽게 찾아가기 위해 인터럽트 벡터(interrupt vector)를 가지고 있다. 인터럽트 백터란 인터럽트 종류마다 번호를 정해서 번호에 따라 처리해야 할 코드가 위치한 부분을 가리키는 자료구조를 말한다.

인터럽트 백터를 따라가면 실제 처리해야 할 코드는 인터럽트 처리 루틴(Interrupt service routine) 또는 인터럽트 핸들러(Interrupt handler)라고 불리는 다른 곳에 정의된다.

  1. 인터럽트 당하기 직전으로 복원한다.

인터럽트 처리 루틴을 통해 해당되는 인터럽트 처리를 완료하고 나면 PCB에 저장한 수행중이던 원래 수행하던 작업으로 돌아가 중단되었던 일을 계속해서 수행한다.

예상 질문

  • 운영 체제에 대해 설명해주세요.
답변 운영 체제는 컴퓨터 하드웨어가 컴퓨터 소프트웨어와 통신하고 작동하도록하는 소프트웨어 프로그램입니다.

  • 운영 체제의 주요 목적은 무엇인가요?
답변 운영 체제에는 두 가지 주요 목적이 있습니다. 하나는 컴퓨터 시스템의 자원들을 효율적으로 관리하는 것이고, 다른 하나는 사용자가 컴퓨터를 사용하기 편리한 환경을 제공하는 것입니다.

  • 인터럽트가 무엇이고, 인터럽트 발생 시 어떤 동작이 일어나는지 간략히 말해 보세요.
답변 1. 인터럽트는 현재 실행 중인 프로그램을 중단하고, 다른 프로그램의 실행을 요구하는 명령어입니다. 2. 키보드를 누름으로 인해 발생하는 인터럽트나, 입출력 장치등에 의한 인터럽트등이 있고, 소프트웨어적인 인터럽트는 시스템 콜로써 구현이 됩니다. 3. 인터럽트가 발생하면, 현재 실행 중이었던 프로세스의 상태 정보를 PCB에 저장해 둡니다. 이후 인터럽트 서비스 루틴이 인터럽트를 처리하고, 처리가 모두 끝나면 다시 이전 작업 상태 정보를 복구하여 재개합니다.

  • 시스템 콜이 무엇인지 설명해 주세요.
답변 1. 시스템 콜은 응용프로그램에서 시스템 커널에 어떠한 기능을 수행해 달라고 요청하는 것을 말합니다. 사용자가 직접 커널에 접근할 수는 없기 때문에, 이를 시스템 콜을 통해 대신하는 것입니다. 2. 리눅스의 프로세스 정지 명령어나 fork 명령어, 파일을 오픈, 클로즈 하거나 읽는 등 open, read, close 등의 명령들도 모두 시스템 콜에 해당이 됩니다.

참고 자료


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

[CS] HTTP와 HTTPS: 메시지를 안전하게 보내는 방법

[CS] OS: 메모리와 캐시