신비한 개발사전

운영체제와 운영체제 시스템 본문

CS

운영체제와 운영체제 시스템

jbilee 2024. 12. 16. 16:13

운영체제(operating system)란 컴퓨터 기기 즉 하드웨어가 제대로 동작하도록 관리하는 소프트웨어다. 컴퓨터 시스템의 자원을 효율적으로 활용하는 것이 운영체제의 목표다. 또한 하드웨어와 사용자 사이에서 정보 교환이 가능하도록 인터페이스를 제공하기도 한다. 운영체제는 프로세스 스케줄링, 메모리 관리, 입출력 관리, 외부 장치 관리 등의 역할을 수행한다.

 

운영체제 시스템

운영체제는 기술의 발전과 함께 필요에 따라 다양한 방식으로 컴퓨터 자원을 운용하도록 변화해왔다. 운영체제 시스템은 여러 종류가 있는데, 오늘날의 운영체제는 워낙 복잡해 다수의 시스템을 복합적으로 쓰고 있다.

 

· 다중 프로그래밍 시스템

다중 프로그래밍 시스템(multi-programming system)은 CPU의 사용률과 처리량을 높이기 위해 고안된 시스템이다. 초창기 컴퓨터는 프로그램을 한번에 하나씩만 실행시키고 한 작업이 완전히 끝나야 다음 작업으로 넘어갈 수 있었는데, 일반적으로 속도가 느린 입출력 작업이 완료되길 기다리는 동안에는 CPU를 놀리게 된다는 단점이 있었다. 다중 프로그래밍 시스템에서는 여러 프로그램을 메모리에 적재해두고, 한 프로그램에서 입출력 작업을 실행하면 해당 작업이 완료되는 동안 다른 프로그램이 CPU를 쓸 수 있도록 해 CPU의 유휴시간(idle time)을 줄이도록 했다.

 

· 시분할 시스템

시분할 시스템(time-sharing system)은 다중 프로그래밍의 개념을 확장해 탄생한 시스템이다. CPU가 한 프로그램을 실행할 때 제한시간을 걸어 시간이 경과하면 다음 프로그램을 실행하도록 하는 시스템인데, 이를 통해 메모리에 적재된 프로그램들이 주기적으로 번갈아가면서 CPU를 사용해 모든 작업이 동시에 진행되는 것처럼 보이는 효과를 가진다.

 

· 다중 처리기 시스템

다중 처리기 시스템(multi-processor system)은 프로세서(CPU)를 여럿 두는 방식을 사용한다. 하나의 컴퓨터에 둘 이상의 프로세서를 장착해 여러 프로세스를 병렬로 실행할 수 있다. 하나의 운영체제가 다수의 프로세서를 관리하는 형태로, 대칭형 다중 처리(symmetric multi-processing, SMP)과 비대칭형 다중 처리(asymmetric multi-processing, AMP) 구조로 구분된다.

 

SMP에서는 모든 프로세서가 동일한 메모리를 공유하고 동등한 역할을 수행한다. 뿐만 아니라 단일 시스템 버스를 통해 I/O 장치, 인터럽트 등의 컴퓨터 자원도 공유한다.

 

AMP의 경우 특정 CPU가 주 프로세서(master) 역할을 하고 나머지는 보조 프로세서(slave)로 동작하면서 각각의 프로세서가 자신만의 기능을 수행한다. AMP 구조에서는 메인 운영체제를 실행하는 프로세서도 따로 있다. AMP의 대표적인 예시로는 임베디드 시스템이 있다.

 

· 대화형 시스템

실시간으로 대화하는 것처럼 사용자의 입력에 대한 결과를 즉시 출력해 보여주는 시스템을 대화형 시스템(interactive system)이라고 한다. 우리가 키보드 타자를 치거나 마우스를 클릭했을 때 그에 따른 결과가 바로 모니터에 보여지는 것이 대화형 시스템으로 인한 결과물이라고 보면 된다. 주어진 작업이 모두 끝나야 결과를 확인할 수 있는 일괄 처리 시스템과 반대되는 개념이다. 윈도우, macOS 같은 운영체제가 사용자와 빠르게 상호작용할 수 있는 GUI를 대화형 시스템으로 구현하고 있다.

 

커널, 커널모드, 유저모드

커널(kernel)은 메모리에 상시로 올라가 구동하고 있는 운영체제의 핵심 부분이다. 컴퓨터 기기가 부팅되면 CPU에 전원이 들어오면서 부트스트랩 과정을 거치게 되는데, 이때 부트로더 프로그램이 디스크에 있는 커널 프로그램을 RAM으로 읽어와 커널을 실행시킨다.

 

커널은 컴퓨터 자원(CPU, 메모리 등)에 직접적으로 액세스할 수 있으며, 따라서 사용자가 직접적으로 컴퓨터 자원과 상호작용할 수 없도록 운영체제는 커널이 동작하는 커널모드와 사용자가 별도의 응용프로그램(application)으로 필요한 기능만 사용할 수 있는 유저모드로 구분되어있다. 유저모드와 커널모드로 환경을 분리하면 유저모드에서 소프트웨어를 사용하는 도중 오류가 발생해도 커널모드에는 영향을 주지 않아 전체 시스템의 안정성을 보장할 수 있다. 사용자가 통제된 환경에서 컴퓨터 자원을 활용할 수 있도록 해주는 소프트웨어의 예시로는 shell이 있다.

 

커널모드와 유저모드는 modebit이라고 부르는 값으로 표현한다. Modebit이 0이면 커널모드, 1이면 유저모드인 상태다.

 

시스템 콜

유저모드에서도 파일 저장이나 외부 장치 제어 등, 커널모드에서만 접근이 허용되는 컴퓨터 자원을 건드려야 하는 순간이 있는데, 이때 활용하는 것이 시스템 콜(system call)이다. 유저모드에서 시스템 콜을 호출하면 커널모드로 전환되어 해당 콜의 요청 작업을 커널에서 처리하고, 요청 작업이 완료되면 다시 유저모드로 돌아온다.

'CS' 카테고리의 다른 글

CPU 스케줄링 개요  (0) 2024.12.29
I/O(입출력) 시스템  (0) 2024.12.26
JSCODE 모의면접 스터디 참여 회고  (1) 2024.12.01
네트워크 라우팅  (0) 2024.11.28
공인 IP vs 사설 IP  (0) 2024.11.26