운영체제를 왜 알아야 할까?
운영체제는 사용자를 위한 프로그램이라기보다
프로그램을 위한 프로그램이라고 보는것이 맞다.
그렇기에 프로그램을 만드는 개발자가 목표라면
운영체제에 대해 이해하고 대화하는법을 통해
오류메세지를 접하고 이해하며
문제해결능력을 상승시킬 필요가 있다.
그렇기에 운영체제를 공부해야 한다.
운영체제란?
정의
운영체제(OS, Operating System)는 컴퓨터 하드웨어와 사용자 간의 중개 역할을 하는 소프트웨어. 시스템 자원을 효율적으로 관리하고, 여러 프로그램이 동시에 실행될 수 있는 환경을 제공한다. 또한, 사용자와 상호작용을 위해 CLI(명령줄)나 GUI(그래픽) 인터페이스를 제공한다.
쉽게말해서
운영체제는
- 실행할 프로그램에 필요한 자원을 할당하고
- 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램
운영체제 또한 프로그램이기에 메모리에서 실행된다. 하지만 운영체제는 프로그램을 동작시키는 너무 중요한 프로그램이기에 다른 응용프로그램( ex. 롤, 한글, 웹브라우저) 와 달리 따로 메모리에 적재되는 공간이 존재한다. 이를 커널 영역 이라고한다.
응용프로그램 (Application Software)?
- 사용자가 특정 목적을 위해 사용하는 일반적인 프로그램
운영체제의 종류
운영체제는 사용 목적과 환경에 따라 다양한 종류로 나뉜다. 주요 운영체제의 종류는 다음과 같다.
1. 데스크톱 운영체제
개인용 컴퓨터에서 사용되는 운영체제로, 사용자 친화적이고 다양한 응용 프로그램을 지원.
- 예: Windows, macOS, Linux.
2. 서버 운영체제
서버에서 네트워크와 데이터를 관리하도록 설계된 운영체제. 안정성과 보안성 강조.
- 예: Linux(우분투 서버, CentOS), Windows Server.
3. 모바일 운영체제
스마트폰과 태블릿 같은 모바일 장치를 위한 운영체제. 터치 기반 UI와 전력 효율성이 특징.
- 예: Android, iOS.
4. 실시간 운영체제 (RTOS)
실시간 처리가 필요한 시스템에서 사용하는 운영체제, 속도와 신뢰성 중요.
- 예: FreeRTOS, VxWorks.
운영체제의 역할
1. 프로세스 관리
운영체제는 프로세스의 생성, 실행, 종료, 스케줄링을 포함하여 프로세스의 생명 주기를 관리한다. 또한 CPU를 효율적으로 분배하기 위해 프로세스 간의 우선순위를 설정하거나, 멀티태스킹 환경에서 여러 프로세스를 병렬적으로 실행한다.
- 예: CPU 스케줄링 알고리즘(FIFO, Round Robin, SJF 등)을 사용하여 CPU 시간을 효율적으로 분배.
프로세스?
- 프로세스는 실행 중인 프로그램을 뜻하며, CPU와 메모리 같은 자원을 사용하여 특정 작업을 수행하는 단위
스케줄링?
- CPU, 메모리와 같은 시스템 자원을 여러 프로세스가 효율적으로 사용할 수 있도록 순서를 정하는 과정
2. 메모리 관리
운영체제는 RAM과 같은 주기억장치를 효율적으로 관리합니다. 프로세스 실행에 필요한 메모리 공간을 할당하고, 실행이 끝난 프로세스의 메모리를 회수하며, 메모리 단편화를 최소화합니다. 또한 가상 메모리(Virtual Memory)를 통해 실제 메모리보다 더 큰 메모리 공간을 제공하는 역할도 수행합니다.
- 예: 페이징, 세그멘테이션 기법을 사용하여 메모리 관리.
메모리단편화?
- 프로그램들이 메모리를 할당하고 해제하는 과정에서, 사용되지 못하는 작은 메모리 공간들이 생기는 현상
3. 파일 시스템 관리
운영체제는 파일의 생성, 삭제, 읽기, 쓰기, 저장을 포함한 파일 관리 작업을 제공합니다. 이를 통해 디스크에 데이터를 저장하거나 검색할 수 있는 체계적인 구조를 제공합니다. 파일 권한 관리와 같은 보안도 포함됩니다.
- 예: NTFS, ext4와 같은 파일 시스템을 통해 데이터 관리.
4. 디스크 및 스토리지 관리
운영체제는 하드디스크나 SSD 같은 저장 장치를 효율적으로 사용하도록 관리합니다. 디스크 스케줄링 알고리즘을 통해 읽기 및 쓰기 요청을 최적화하며, 디스크 공간의 할당 및 사용 현황을 추적합니다.
- 예: FCFS, SSTF, SCAN과 같은 디스크 스케줄링 알고리즘.
5. 장치 관리 (I/O 관리 <입출력 장치>)
운영체제는 키보드, 마우스, 디스플레이, 프린터 같은 입출력 장치를 제어하고 관리합니다. 이를 위해 장치 드라이버를 통해 하드웨어와 소프트웨어 간의 인터페이스를 제공합니다.
- 예: 사용자가 입력한 키보드 데이터를 읽어 애플리케이션에 전달.
장치 드라이버?
- 장치 드라이버는 운영체제와 하드웨어 간의 통신을 가능하게 하는 소프트웨어
인터페이스?
- 인터페이스는 서로 다른 시스템, 소프트웨어, 하드웨어, 또는 사용자 간에 정보를 주고받을 수 있도록 연결하는 중간 매개체
6. 네트워크 관리
운영체제는 네트워크 연결을 관리하며, 데이터 전송 및 통신을 위한 프로토콜을 지원합니다. 이를 통해 서로 다른 시스템 간의 데이터 교환이 가능하게 합니다.
- 예: TCP/IP 프로토콜 스택을 통해 인터넷 통신 지원.
프로토콜?
- 프로토콜은 컴퓨터나 네트워크 장치 간에 데이터를 주고받을 때 따르는 약속이나 규칙
7. 보안 및 권한 관리
운영체제는 시스템의 자원을 보호하고, 권한이 없는 사용자나 프로그램이 자원에 접근하지 못하도록 합니다. 또한 사용자 인증, 데이터 암호화, 접근 제어와 같은 기능을 제공합니다.
- 예: 사용자가 로그인할 때 비밀번호를 확인하거나 특정 파일에 대한 접근 권한을 설정.
8. 에러 감지 및 복구
운영체제는 하드웨어, 소프트웨어, 또는 사용자로 인해 발생하는 오류를 감지하고 복구하는 역할을 합니다. 시스템 안정성을 유지하고 다운타임을 줄이기 위한 조치를 제공합니다.
- 예: 파일 시스템 손상 시 복구 도구 제공.
9. 사용자 인터페이스 제공
운영체제는 사용자와 하드웨어 간의 상호작용을 가능하게 하는 인터페이스를 제공합니다. CLI(Command Line Interface) 또는 GUI(Graphical User Interface)를 통해 사용자는 명령을 입력하거나 애플리케이션을 실행할 수 있습니다.
- 예: Windows의 GUI 또는 Linux의 CLI(Bash Shell).
10. 자원 관리 및 할당
운영체제는 CPU, 메모리, 디스크, I/O 장치 등 시스템 자원을 효율적으로 관리하고 여러 프로세스나 사용자 간에 공정하게 분배합니다.
- 예: 다중 사용자 환경에서 자원을 균형 있게 할당.