운영 체제(Operating System)
운영 체제는 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스로 한정된 메모리나 시스템 자원을 효율적으로 분배해 준다.
운영체제는 컴퓨터에서 항상 실행되는 하나의 프로그램이고, 다른 모든 프로그램은 응용 프로그램이라고 한다.
우리가 컴퓨터를 직접 사용한다고 하면 상당히 어려운 일이 될 것이다. 또한 컴퓨터를 최대한 잘 활용한다는 것도 어려운 일이 될 것이다.
이처럼 직접적으로 사용하기 어려운 컴퓨터를 보다 쉽게 사용할 수 있도록 사용자 친화적으로 제공하는 것이 바로 운영체제이다.
그럼 우리가 운영체제를 통해서 컴퓨터를 맘대로 조작할 수 있게 되는데 우리가 원래 해야 했던 어려운 작업들을 운영체제가 대신해주게 된다.
운영체제가 없었을 때 사용자가 직접 컴퓨터는 사용해야 하는데 이 부분을 운영체제가 대신해주는 것으로 운영체제를 공부한다는 것은 컴퓨터를 어떻게 사용할 것인지를 이해하는 것과 같다.
컴퓨터의 구성 요소
운영체제는 컴퓨터를 쉽게 사용하기 위한 인터페이스로 운영체제를 이해하기 위해서는 컴퓨터에 대한 이해가 필요하다.
컴퓨터는 CPU, DMA 컨트롤러, 메모리, 타이머, 디바이스 컨트롤러 등으로 이루어져 있다.
CPU
CPU는 산술논리 연산 장치(ALU), 제어 장치(CU), 레지스터로 구성되어 있는 컴퓨터 장치를 말한다.
인터럽트에 의해 단순히 메모리에 존재하는 명령어를 해석해서 실행한다.
- 제어장치(CU)
프로세스 조작을 지시하는 CPU의 한 부품이다.
입출력장치 간 통신을 제어하고 명령어들을 읽고 해석하며 데이터 처리를 위한 순서를 결정한다.
- 레지스트리
CPU 안에 있는 매우 빠른 임시기억장치로 연산 속도가 메모리에 비해서 월등히 빠르다.
CPU는 자체적으로 데이터를 저장할 방법이 없기 때문에 레지스터를 거쳐 데이터를 전달하게 된다.
- 산술논리연산장치(ALU)
덧셈, 뺄셈 같은 두 숫자의 산술 연산과 배타적 논리합, 논리곱 같은 논리 연산을 계산하는 디지털 회로이다.
- CPU의 연산 처리
1. 제어장치가 메모리와 레지스터에 계산할 값을 로드한다.
2. 제어장치가 레지스터에 있는 값을 계산하라고 산술논리연산장치에 명령한다.
3. 제어장치가 계산된 값을 다시 레지스터에서 메모리로 계산한 값을 저장한다.
- 인터럽트(Interrupt)
인터럽트는 어떤 신호가 들어왔을 때 CPU를 잠깐 정지시키는 것을 말한다.
키보드, 마우스 등 IO 디바이스로 인한 인터럽트, 0으로 숫자를 나누는 산술 연산에서의 인터럽트, 프로세스 오류 등에서 발생한다.
인터럽트가 발생되면 인터럽트 핸들러 함수가 모여 있는 인터럽트 벡터로 가서 인터럽트 핸들러 함수가 실행된다.
인터럽트 간에는 우선순위가 있고 우선순위에 따라 실행되며 인터럽트는 하드웨어 인터럽트, 소프트웨어 인터럽트 두 가지로 나뉜다.
- 하드웨어 인터럽트
키보드를 연결한다거나 마우스를 연결하는 일 등의 IO 디바이스에서 발생하는 인터럽트를 의미한다.
인터럽트 라인이 설계된 이후 순차적인 인터럽트 실행을 중지하고 운영체제에 시스템콜을 요청해서 원하는 디바이스로 향해 디바이스에 있는 작은 로컬 버퍼에 접근하여 작업을 수행하게 된다.
- 소프트웨어 인터럽트
트랩이라고도 불리며 프로세스 오류 등으로 프로세스가 시스템콜을 호출할 때 발동한다.
DMA(Direct Memory Access) 컨트롤러
DMA 컨트롤러를 통해서 주변 I/O 장치들(보조 기억장치, 네트워크 카드 등)이 CPU를 거치지 않고 메모리에 직접 접근할 수 있게 해주는 하드웨어 장치이다.
주변 장치들이 CPU를 거치지 않기 떄문에 CPU의 부하를 막아주며 CPU의 부담을 줄여 시스템 성능을 향상해 준다.
DMA 컨트롤러는 하나의 작업을 CPU와 동시에 하는 것을 방지한다. 이를 통해서 CPU를 다른 작업에 할당할 수 있게 되면서 시스템 효율성을 높여준다.
메모리(Memory)
메모리는 전자회로에서 데이터나 상태, 명령어 등을 기록하는 장치이다. 보통 RAM이라고 불리며 기억을 담당한다.
메모리가 크면 클수록 많은 일을 동시에 할 수 있다.
타이머(Timer)
몇 초 안에는 작업이 끝나야 한다는 것을 정하고 특정 프로그램에 시간제한을 다는 역할이다.
시간이 많이 걸리는 프로그램이 작동할 때 제한을 걸기 위해 존재한다.
디바이스 컨트롤러
컴퓨터와 연결되어 있는 IO 디바이스들의 작은 CPU를 말한다.
운영 체제의 목적
운영 체제는 다양한 사용자 및 작업 간의 컴퓨팅 시스템 리소스(CPU, 메모리, 디스크 등) 할당 및 사용을 제어한다.
예를 들어 사용자가 직접 컴퓨터를 다루게 되면 특정 프로그램에 대해서 CPU는 얼마나 사용하고, 메모리와 디스크 자원은 얼마다 할당해야 하는지 등과 같은 작업을 해야 되는데 이러한 일련의 작업들을 운영체제가 대신해주게 된다.
또한, 운영 체제는 응용 프로그램의 코딩 및 디버깅을 단순화하고 실행 가능하게 만드는 컴퓨터 하드웨어와 개발자 간의 인터페이스를 제공한다.
개발자가 어떤 프로그램을 코딩해서 만든다고 할 때 컴퓨터가 이해하려면 어셈블리어와 같은 기계어로 변경을 해줘야 한다. 기계어는 공부하기 어렵고 따져봐야 할 조건이 많지만 이러한 부분을 운영 체제가 대신해줘서 간편하고 단순하게 프로그래밍이 가능해진다.
운영체제의 역할
운영체제는 여러 가지 역할이 존재하지만 대표적인 역할은 4가지로 볼 수 있다.
1. CPU 스케줄링과 프로세스 관리
다중 프로그래밍 환경에서는 프로세스 관리가 중요한데 운영체제는 프로세스가 프로세서에 액세스 하는 순서와 각 프로세스의 처리 시간을 결정하여 스케줄링 기능을 수행하게 된다.
다른 기능으로는 프로세스 상태를 추적하여 프로세스가 더 이상 필요하지 않을 때 프로세서 할당을 취소한다.
CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리한다.
2. 메모리 관리
운영체제는 기본 메모리 또는 주 메모리를 관리한다.
주 메모리는 각 바이트 또는 단어에 특정 주소가 할당된 대규모 바이트 또는 단어 배열로 구성된다. 따라서 주 메모리는 빠른 저장 공간이며 CPU에서 직접 접근할 수 있다.
프로그램이 실행되려면 먼저 주 메모리에 올라가야 된다. 또한 운영체제는 다양한 프로세스에 대한 메모리 할당 및 해제를 관리하고 다른 프로세스가 한 프로세스에 할당된 메모리를 소비하지 않도록 해야 한다.
한정된 메모리를 어떤 프로세스에 얼마큼 할당해야 하는지 관리한다.
3. 디스크 파일 관리
운영 체제는 데이터가 저장된 위치, 사용자 액세스 설정, 모든 파일의 상태 등을 추적한다. 또한 데이터의 무결성을 위해 파일의 생성, 삭제, 전송, 복사 및 저장에 관한 정보를 체계적으로 추적하여 무단 액세스로부터 보호한다.
또한, 디스크 파일을 어떠한 방법으로 보관할지 관리한다.
4. I/O 디바이스 관리
운영 체제는 드라이버를 통해 시스템에 연결된 모든 장치를 추적하고, 특정 장치에 액세스 할 수 있는 프로세스와 기간을 결정한다.
또한, 효과적이고 효율적으로 장치를 할당하고 더 이상 필요하지 않은 장치를 할당을 취소한다.
I/O 디바이스들인 마우스, 키보드 등 컴퓨터 간에 데이터를 주고받는 것을 관리한다.
운영체제의 구조
GUI, 시스템콜, 커널, 드라이버 부분이 운영체제를 지칭한다.
GUI(Graphical User Interface)
사용자가 전자장치와 상호 작용할 수 있도록 하는 사용자 인터페이스의 한 형태로 단순 명령어 창이 아닌 아이콘을 마우스로 클릭하는 단순한 동작으로 컴퓨터와 상호 작용할 수 있게 해 준다.
대표적인 GUI로는 windows, macOS가 있다.
리눅스와 같은 운영 체제는 GUI가 아닌 CLI(Command Line Interface)로 동작하게 된다.
시스템 콜(System Call)
운영체제가 커널에 접근하기 위한 인터페이스이며 유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 사용된다.
시스템 콜은 커널 시스템에 대한 유일한 진입점으로 리소스가 필요한 모든 프로그램은 시스템 콜을 사용해야 한다.
시스템 콜은 컴퓨터 자원에 대한 직접 접근을 차단하고 프로그램을 다른 프로그램으로부터 보호한다.
- modebit
modebit는 1 또는 0의 값을 가지는 플래그 변수로 시스템 콜이 작동될 때 해당 modebit를 참고해서 유저 모드와 커널 모드를 구분하게 된다.
I/O 디바이스는 운영 체제를 통해서만 작동되는데 만약 운영 체제를 통하지 않고 작동이 된다면 공격자가 해당 I/O 디바이스를 마음대로 조작할 수 있게 된다.
따라서 운영 체제를 통해서 해당 I/O 디바이스들을 작동하게 해야 공격을 막기가 수월해지는데 이를 위한 장치가 modebit가 된다.
modebit에서는 0을 커널 모드, 1은 유저 모드로 설정되고 유저 모드일 경우 시스템 콜을 못하게 막아서 한정된 일만 수행할 수 있게 할 수 있다.
커널(Kernel)
커널은 운영 체제의 핵심 구성 요소 중 하나로 작동한다. 다른 구성 요소들은 운영 체제가 제공하는 중요한 서비스를 제공하기 위해 커널에 의존하게 된다.
커널은 운영체제와 하드웨어 사이의 주요 인터페이스 역할을 한다.
커널의 주요 기능
1. 시스템 콜을 제어하는 데 도움을 준다.
2. 입출력 관리를 지원한다.
3. 응용 프로그램, 메모리 관리 등을 관리하는 데 도움을 준다.
드라이버(Driver)
드라이버는 하드웨어를 제어하기 위한 소프트웨어이다.
운영 체제의 장단점
운영체제의 장점
1. 장치에 존재하는 메모리 관리를 관리하는 데 도움이 된다.
2. 컴퓨터 하드웨어를 최대한 활용하는 데 도움이 된다.
3. 장치의 보안을 유지하는 데 도움이 된다.
4. 다양한 애플리케이션을 효율적으로 실행하는 데 도움이 된다.
운영체제의 단점
1. 사용자가 컴퓨터를 보다 쉽게 다루기 위해서 운영체제가 나왔지만 쉽게 사용하지 못할 수도 있다.
2. 일부 OS는 가격이 비싸고 유지 관리가 많이 필요하다.
3. 해커가 운영체제를 사용하면 위협을 받을 수 있다.
참고 자료
- CS전공지식노트(주홍철)
- https://www.geeksforgeeks.org/operating-systems/?ref=ghm
'CS > OS' 카테고리의 다른 글
운영체제 - 시스템 콜 (0) | 2024.06.26 |
---|---|
운영체제 - 인터럽트(Interrupt) (0) | 2024.06.25 |
운영체제 - CPU 스케줄링 알고리즘 (0) | 2023.10.26 |
운영체제 - 프로세스와 스레드 (0) | 2023.10.24 |
운영체제 - 메모리 (2) | 2023.10.23 |