본문 바로가기
컴퓨터 공부

운영체제(OS)의 역할과 구조

by pon9 2024. 11. 27.

OS(Operating System)

 

 운영체제의 역할

 

컴퓨터 시스템의 핵심 소프트웨어로, 컴퓨터의 하드웨어를 관리하는 소프트웨어다.

스마트폰, PC, IoT등 어디에든 존재하고, 사용자가 직접적으로 CPU, RAM 등에 접근하지 못하게 안전하게 이용할 수 있도록 한다.

사용자의 직접 접근을 제한하는 대신 다양한 인터페이스를 통해 사용자의 요청을 받는다.

요청에 따라서 마우스, 키보드, 스피커, 모니터 입출력을 제어하고 편리한 기능을 제공한다.

 

이처럼, 사용자를 위해 다양한 어플리케이션 간의 하드웨어 사용을 조정하고, 

리소스를 효율적으로 프로그램에 할당하고, 컴퓨터 자원을 사용할 수 있게 환경을 제공한다.(메모리 할당, 패킷 송수신)

 

대표적으로 Windows와 MacOs(데스크톱), Android, IOS(모바일), Unix, Linux(서버), 라즈베리 파이(임베디드) 등이 있다.

 

 운영체제의 구조

 

 1. Application Layer

 

사용자 프로그램과 같은 어플리케이션이 실행된다. 인터넷 브라우저, 게임 등이 여기에 해당한다.

 

 

 2. User Interface

 

CLI, GUI, API 를 통해 사용자가 시스템과 상호작용한다.

 

CLI (commend line interface) :

텍스트 기반의 인터페이스로, 사용자가 운영체제가 수행할 명령어를 입력해 시스템을 제어한다.

대표적으로 Linux가 CLI 기반 운영체제다.

 

GUI (graphic user interface) :

그래픽 기반의 인터페이스로, 사용자가 마우스 키보드 등의 동작으로 시스템을 제어한다.

Windows, MacOS가 GUI 기반 운영체제다.

 

API (application programming interface) :

프로그램이나 서비스 간의 의사소통을 돕는 표준화된 인터페이스다.

일반적으로 요청(Request)과 응답(Response)의 구조로 동작한다.

클라이언트가 API를 호출해 특정 작업을 요청하면, 서버에서 요청을 처리하고 결과를 반환한다.

 

 

 3. System Libraries

 

운영체제가 제공하는 표준 라이브러리와 유틸리티 라이브러리를 통해 어플리케이션이 커널과 소통한다.

어플리케이션은 시스템 호출을 직접 수행하지 않고 시스템 라이브러리를 통해 커널의 기능을 호출한다.

 

표준 라이브러리 (standard libraries) :

프로그래밍 언어와 함께 제공되는, 앱 개발에 필요한 기본적인 함수들을 제공한다.

Java의 java.util 패키지, C의 stdio.h 와 같은 헤더파일이 여기에 속한다.

 

유틸리티 라이브러리 (utility libraries) :

고급 기능을 제공하며, 특정 작업을 더 쉽게 처리하도록 돕는다.

HTTP/FTP 요청을 처리하는 네트워크 라이브러리, 3D 그래픽 처리를 돕는 그래픽 라이브러리가 여기에 속한다.

 

 

 4. Kernel

 

하드웨어와 소프트웨어 간의 다리 역할을 함으로써 프로세스가 하드웨어를 직접 제어하지 않고 안전하게 접근하게 해준다.

하드웨어 자원을 효율적이고 안전하게 관리하며, 시스템의 안정성을 유지하는 데 중요한 역할을 한다.

 

프로세스 관리 :

여러 응용 프로그램과 프로세스가 동시에 실행될 수 있도록 관리한다.

어떤 프로세스가 CPU를 사용할지 결정하고, 멀티태스킹과 컨텍스트 스위칭을 지원한다. 교착 상태(Deadlock)을 방지하고 해결해준다.

 

메모리 관리 :

RAM을 효율적으로 관리해 프로세스에 필요한 메모리를 할당한다.

메모리를 할당 및 해제하고, 가상 메모리를 지원하고, 캐시를 통해 효율적으로 자원을 사용할 수 있게 하고, 각 프로세스가 독립된 메모리 공간을 사용하도록 보장해준다.

 

파일 시스템 관리 :

데이터 저장과 검색을 위해 파일들을 관리한다.

 

장치 관리 :

하드웨어 장치와 소프트웨어 간의 통신을 지원한다.

디바이스 드라이버를 로드하고, 입출력 작업을 처리한다.

 

보안 및 권한 관리 :

사용자 인증을 받고 권한을 부여해 시스템과 데이터를 안전하게 보호한다. 또한 데이터를 암호화하고 무결성을 보장한다.

 

네트워킹 :

시스템 간의 네트워크 통신을 지원한다. TCP/IP 프로토콜 등의 네트워크 스택을 관리하고, 데이터 패킷의 송수신을 받고 처리한다.

 

 

 5. Hardware Abstraction Layer(Hardware Drivers)

 

운영체제와 하드웨어 사이의 추상화 계층이다. 드라이버를 통해 하드웨어와 통신하고, 운영체제와 다양한 하드웨어 간의 통합을 가능하게 한다.

예시 : 

애플리케이션에서 하드웨어 요청이 발생함(사용자가 와이파이 기능을 사용하기를 원함)

-> 애플리케이션이 HAL API를 호출하고, 요청을 적절한 드라이버로 전달함(무선 랜 드라이버)

-> 드라이버가 하드웨어를 제어하고 결과를 HAL로 전달함

-> HAL이 결과를 운영체제나 애플리케이션으로 반환함.

 

HAL은 운영체제의 설계와 구현 방식에 따라서 커널의 일부로 간주될 수도 있고, 독립적인 계층으로 볼 수도 있음.

Linux는 다양한 하드웨어를 지원하기 위해서 HAL과 드라이버를 커널에 통합함.

Android의 HAL은 커널과 독립적으로 설계되어 운영체제와 하드웨어 사이의 추상화 계층을 형성함.

 

 6. HardWare

 

실제 하드웨어(CPU, RAM, I/O 장치 등)가 포함된다. OS가 드라이버와 HAL을 통해서 제어하는 물리적인 컴퓨터 자원이다.