운영체제
운영체제는 컴퓨터 시스템 자원을 관리하고 사용자 프로그램이 하드웨어에 접근할 수 있도록 인터페이스를 제공하는 소프트웨어
-
컴퓨터 시스템의 하드웨어 자원을 효율적으로 관리하는 역할
-
사용자와 하드웨어 사이의 인터페이스를 제공해 효율적으로 응용 프로그램이 동작하도록 지원함
역할
자원 관리
CPU, 메모리, 디스크, 네트워크 등 컴퓨터 시스템의 자원을 관리하고, 각 프로그램이 필요한 자원을 효율적으로 사용할 수 있도록 운영체제가 이를 조정
-
프로세스 관리: 여러 프로그램(프로세스)이 동시에 실행될 때, 운영체제는 이 프로그램들이 CPU 시간을 적절히 나누어 사용할 수 있도록 합니다. 이는 멀티태스킹의 핵심 기능입니다.
-
메모리 관리: 운영체제는 각 프로그램이 적절한 메모리를 사용할 수 있도록 관리합니다. 동시에 프로그램 간의 메모리 충돌을 방지하고, 가상 메모리 기술을 통해 제한된 물리 메모리로 더 큰 작업을 처리할 수 있게 합니다.
-
저장 장치 관리: 운영체제는 파일과 데이터를 디스크와 같은 저장 장치에 저장하고 관리합니다. 파일 시스템을 통해 데이터를 조직하고, 읽기 및 쓰기 작업을 효율적으로 수행합니다.
-
입출력 장치 관리: 운영체제는 마우스, 키보드, 프린터, 네트워크 카드와 같은 다양한 입출력 장치를 제어하고 관리합니다.
-
보안: 운영체제는 시스템의 보안과 사용자 데이터를 보호하는 중요한 역할을 합니다. 각 사용자와 프로그램이 자신에게 할당된 자원만 접근할 수 있게 제한하며, 시스템 전체의 무결성을 유지합니다.
주요 기능
프로세스 관리 (Process Management)
프로세스는 실행 중인 프로그램의 인스턴스입니다. 운영체제는 여러 프로세스를 동시에 관리하며, 각각의 프로세스가 CPU 시간을 얻고 종료될 수 있도록 처리합니다.
- 프로세스 스케줄링: 운영체제는 CPU 자원을 각 프로세스에 분배하여 여러 프로그램이 동시에 실행되는 것처럼 보이게 합니다. 이를 위해 스케줄링 알고리즘이 사용됩니다.
- FCFS(First-Come, First-Served): 먼저 도착한 프로세스가 먼저 실행됩니다.
- Round Robin: 각 프로세스에 동일한 시간 단위가 할당되어 순환적으로 실행됩니다.
- SJF(Shortest Job First): 실행 시간이 가장 짧은 프로세스를 먼저 실행합니다.
- 우선순위 스케줄링: 우선순위가 높은 프로세스가 먼저 실행됩니다.
-
프로세스 상태: 프로세스는 실행(Running), 대기(Waiting), 중지(Terminated)와 같은 상태를 가지며, 운영체제는 이 상태를 전환하며 관리합니다.
- 컨텍스트 스위칭(Context Switching): 여러 프로세스가 번갈아 가며 CPU를 사용할 수 있도록 운영체제는 현재 실행 중인 프로세스의 상태(컨텍스트)를 저장하고, 다른 프로세스의 상태를 복원하여 CPU를 전환합니다. 컨텍스트 스위칭은 CPU와 메모리 간의 오버헤드가 있지만, 멀티태스킹을 구현하는 핵심 기술입니다.
메모리 관리 (Memory Management)
운영체제는 메모리 관리를 통해 각 프로세스가 사용할 수 있는 메모리 공간을 할당하고, 효율적으로 자원을 나누어 사용하게 합니다.
프로그램이 실행될 때, 운영체제는 해당 프로그램에 필요한 메모리를 할당하고, 프로그램이 종료되면 메모리를 반환합니다.
-
가상 메모리(Virtual Memory): 물리적 메모리가 부족한 경우, 운영체제는 가상 메모리라는 기법을 사용하여 디스크의 일부 공간을 메모리처럼 사용할 수 있게 합니다. 이를 통해 실행 중인 프로그램이 더 많은 메모리를 사용할 수 있습니다.
-
페이징(Paging): 메모리를 작은 단위(페이지)로 나누어 관리하는 기법입니다. 필요한 페이지만 메모리에 올려 작업을 처리함으로써 메모리 사용을 효율적으로 관리할 수 있습니다.
-
메모리 보호: 운영체제는 각 프로세스가 자신에게 할당된 메모리만 사용하도록 제한하며, 다른 프로세스의 메모리에 접근하지 못하게 막습니다. 이를 통해 시스템의 안정성과 보안을 유지합니다.
-
세그먼트(Segmentation): 메모리를 논리적 단위로 나누는 기법으로, 각 세그먼트는 프로그램의 다른 부분(코드, 데이터, 스택, 힙 등)을 나타냅니다. 운영체제는 이 세그먼트를 동적으로 할당하고 해제합니다.
파일 시스템 관리 (File System Management)
운영체제는 컴퓨터의 파일 시스템을 관리하여 데이터가 저장 장치에 어떻게 저장되고 읽혀야 하는지를 결정합니다.
-
파일 관리: 운영체제는 데이터를 파일 단위로 저장하고, 디렉터리 구조를 통해 파일을 관리합니다. 파일은 각각 이름과 확장자, 크기, 속성 등을 가지고 있습니다.
-
파일 권한: 파일에 대한 읽기, 쓰기, 실행 권한을 부여함으로써 시스템 보안을 유지합니다. 특정 사용자만 파일을 수정하거나 삭제할 수 있도록 제어할 수 있습니다.
-
저장 장치 관리: 운영체제는 하드디스크나 SSD와 같은 저장 장치에 데이터를 저장하고, 이를 효율적으로 관리하여 필요한 데이터를 빠르게 찾을 수 있도록 도와줍니다.
입출력 장치 관리 (I/O Device Management)
입출력 장치(I/O Device)는 컴퓨터 시스템과 외부 세계 간의 상호작용을 가능하게 합니다.
운영체제는 키보드, 마우스, 프린터, 디스크 등 다양한 장치를 제어하고, 사용자가 이러한 장치와 상호작용할 수 있도록 관리합니다.
-
장치 드라이버(Device Driver): 운영체제는 각 하드웨어 장치와 통신하기 위해 장치 드라이버를 사용합니다. 드라이버는 하드웨어에 명령을 보내고, 장치에서 데이터를 받아오는 역할을 합니다.
-
입출력 제어: 운영체제는 입출력 스케줄링을 통해 여러 프로그램이 동시에 입출력 작업을 요청할 때, 이를 효율적으로 처리합니다. 또한, CPU가 입출력 장치와의 작업을 기다리지 않고 다른 작업을 할 수 있도록 비동기 입출력을 지원합니다.
보안과 접근 제어 (Security and Access Control)
운영체제는 시스템의 보안과 안정성을 유지하는 중요한 역할을 합니다. 각 사용자가 허용된 자원만 접근할 수 있게 제어하고, 시스템 내에서 발생하는 악의적인 활동을 차단합니다.
-
사용자 인증(Authentication): 운영체제는 시스템에 접근하는 사용자에게 인증을 요구하여, 허가된 사용자만 시스템 자원을 사용할 수 있게 합니다.
-
파일 및 데이터 보호: 운영체제는 사용자가 권한을 가지고 있는 파일이나 데이터만 접근할 수 있도록 제어합니다. 이를 통해 데이터 유출을 방지하고 보안을 강화합니다.
-
네트워크 보안: 운영체제는 네트워크를 통한 외부의 공격이나 해킹으로부터 시스템을 보호하기 위해 방화벽 등의 보안 기능을 제공합니다.
종류
데스크탑 운영체제
- Windows: 가장 널리 사용되는 운영체제 중 하나로, 직관적인 그래픽 사용자 인터페이스(GUI)와 광범위한 하드웨어 및 소프트웨어 호환성을 제공합니다.
- macOS: Apple이 개발한 운영체제로, Apple 하드웨어와 최적화된 안정성과 사용 편의성을 제공하는 운영체제입니다.
- Linux: 오픈 소스 운영체제로, 다양한 배포판이 있으며 개발자와 서버 환경에서 많이 사용됩니다.
모바일 운영체제
- Android: 구글이 개발한 운영체제로, 스마트폰과 태블릿에서 가장 많이 사용됩니다.
- iOS: Apple의 모바일 운영체제로, iPhone 및 iPad에서 사용됩니다.
서버 운영체제
- Windows Server: Microsoft가 개발한 서버용 운영체제로, 기업 환경에서 많이 사용됩니다.
- Linux 기반 서버: 비용 효율성과 높은 안정성 덕분에 웹 서버 및 데이터 센터에서 많이 사용됩니다
커널의 이중모드
- 커널 모드(Kernel Mode)와 유저 모드(User Mode)
컴퓨터 시스템에서 커널 모드와 유저 모드는 운영체제와 프로그램이 하드웨어에 접근하는 권한 수준을 나타냅니다.
커널 모드 (Kernel Mode)
- 커널(Kernel)은 운영체제의 핵심 부분으로, 시스템 자원에 대한 완전한 접근 권한을 가집니다.
- 하드웨어 제어: 커널 모드에서는 CPU, 메모리, 디스크 등 하드웨어 자원에 직접 접근할 수 있으며, 입출력 장치도 제어할 수 있습니다.
- 운영체제의 핵심 코드 실행: 커널 모드에서는 운영체제의 핵심 기능(프로세스 관리, 메모리 관리 등)을 수행하는 코드가 실행됩니다. 이 모드는 시스템 충돌이나 보안 위협을 막기 위해 보호된 환경입니다.
- 위험 요소: 커널 모드에서 실행되는 코드는 시스템 전체에 영향을 미칠 수 있어, 버그가 발생하면 시스템이 불안정해질 수 있습니다.
유저 모드 (User Mode)
- 유저 모드는 일반 응용 프로그램이 실행되는 모드로, 제한된 자원 접근 권한을 가집니다.
- 보안과 안정성: 유저 모드는 직접 하드웨어에 접근할 수 없으며, 하드웨어 자원에 접근하기 위해서는 시스템 콜(System Call)을 사용해야 합니다.
- 안전한 환경: 유저 모드에서 실행되는 프로그램이 오류를 발생시키더라도, 시스템 전체에 영향을 미치지 않으며 다른 프로그램의 메모리에 접근할 수 없습니다.
커널 모드와 유저 모드의 차이
- 커널 모드에서는 운영체제가 직접 하드웨어를 제어할 수 있으며, 모든 시스템 자원에 대한 접근 권한을 가집니다.
- 유저 모드에서는 응용 프로그램이 제한된 자원만 접근할 수 있으며, 하드웨어 자원에 직접 접근하지 못하고 운영체제의 도움을 받아야 합니다.
시스템 콜
프로그램이 운영체제의 기능을 사용하고 싶을 때 운영체제를 부르는 기능
- 시스템 콜을 이용해 커널에 접근할 수 있음
시스템 콜의 동작 과정
-
프로그램이 시스템 콜을 호출: 유저 모드에서 실행 중인 프로그램이 파일을 열거나, 데이터를 네트워크로 보내는 등의 작업을 할 때 시스템 콜을 호출합니다.
-
모드 전환: 시스템 콜이 호출되면 CPU는 유저 모드에서 커널 모드로 전환됩니다. 이때 운영체제는 하드웨어 자원에 대한 접근 권한을 얻습니다.
-
운영체제가 작업을 처리: 커널 모드에서 운영체제가 요청된 작업을 수행합니다. 예를 들어, 파일을 열거나 네트워크를 통해 데이터를 전송하는 등의 작업이 실행됩니다.
-
결과 반환: 운영체제가 작업을 완료하면 CPU는 다시 커널 모드에서 유저 모드로 전환되며, 프로그램에 결과를 반환합니다.
시스템 콜의 종류
시스템 콜은 다양한 작업을 수행하는 데 사용되며, 크게 다음과 같은 기능을 제공합니다:
-
프로세스 제어: 프로세스 생성, 종료, 중단, 실행 등의 작업.
-
파일 관리: 파일 열기, 닫기, 읽기, 쓰기 등의 작업.
-
장치 관리: 장치에 대한 읽기/쓰기 작업, 장치 제어.
-
정보 유지: 시스템 시간, 날짜 조회 등의 시스템 정보를 반환.
-
통신 관리: 프로세스 간 통신(IPC), 네트워크 통신 관리.