1. 운영체제 개요
운영체제 (OS, Operating System)란?
컴퓨터 하드웨어와 사용자(응용 프로그램) 사이의 중재자 / 관리자 역할을 수행하는 시스템 소프트웨어
운영체제와 네트워크
운영체제는 네트워크 자원을 효율적이고 안전하게 사용할 수 있도록 관리하며,
네트워크는 운영체제를 통해 사용자 / 다른 응용 시스템과 연결됨
-
네트워크 기반 서비스 제공
네트워크 측면에서는 OS가 네트워크 통신을 위한 자원 관리와 인터페이스 및 네트워크 실행 환경을 제공
-
네트워크 자원의 관리
운영체제는 네트워크 인터페이스 카드 (NIC)와 같은 하드웨어를 제어하고, 네트워크 연결을 설정 / 관리함
-
*운영체제와 네트워크는 계층적 구조로 맞물려 있음 *
| OS 계층 | 네트워크 계층 (OSI 7 Layer) | 설명 |
|---|
| 응용 프로그램 | 응용 계층 (HTTP, FTP 등) | 웹, 이메일 등 네트워크 기반 앱 |
| 시스템 콜, API | 세션/표현 계층 | 데이터 표현 방식, 연결 관리 |
| 커널 (네트워크 스택) | 전송/네트워크/데이터링크 계층 | TCP/IP, IP 라우팅, MAC 주소 등 |
| 하드웨어 | 물리 계층 | 케이블, 무선 신호 등 물리적 연결 |
운영체제의 역할 (네트워크 관점)
- 프로세스 관리
네트워크 서버의 동시 연결 처리
[e.g.] 웹 서버의 다중 클라이언트 처리
- 메모리 관리
수신 패킷 버퍼링, 송수신 큐 할당
- 파일 시스템 관리
FTP/HTTP를 통한 원격 파일 접근
- 입출력 시스템 관리
NIC(Device) 제어, 데이터 전송 및 수신
- 보안 및 보호
방화벽, 사용자 인증, 접근 제어
2. 커널과 쉘 → 네트워크 명령어 및 API
| 항목 | 커널 (Kernel) | 쉘 (Shell) |
|---|
| 비유 | 주방장 & 주방 | 웨이터 |
| 위치 | OS의 핵심 | 사용자와 커널 사이 |
| 역할 | 하드웨어 제어, 자원 관리 | 명령어 해석 및 전달 |
| 사용자 접근 | 직접 접근 불가 | 명령줄/터미널로 접근 가능 |
| 예시 | Linux Kernel | bash, zsh, sh, fish |
커널(Kernel)
운영체제의 가장 핵심적인 부분으로 컴퓨터의 모든 자원을 관리하고 제어하는 중심부
하드웨어와 직접 통신하며 시스템 자원을 관리하는 역할
[주요 기능]
- 하드웨어 관리:
CPU, 메모리(RAM), 디스크, 입출력 장치와 같은 모든 하드웨어 자원을 직접 관리
- 자원 할당:
여러 프로그램(프로세스)이 동시에 실행될 수 있도록 프로세스 관리, 메모리 할당 및 회수 등을 담당
- 시스템 호출 (System Call):
응용 프로그램이 하드웨어 자원을 사용하고자 할 때, 커널에게 정해진 방식으로 요청(시스템 호출)하고 그 결과를 처리
[특징]
- 운영체제의 가장 깊숙한 내부 계층에 위치
- 시스템이 부팅될 때 메모리에 로드되어 항상 상주하며 실행됨
- 사용자는 커널과 직접 상호작용할 수 없음
- 시스템 전체의 안정성과 성능에 결정적 영향을 줌
쉘(Shell)
사용자와 커널 사이에서 명령어를 해석하고 전달하는 인터페이스
사용자의 명령을 받아서 해석하고, 그 명령을 커널이 이해할 수 있는 형태로 전달
커널의 실행 결과를 다시 사용자에게 보여주는 역할
Shell(껍데기)의 이름처럼 Kernal(알맹이)를 감싸고 있음
[주요 기능]
- 사용자 인터페이스 제공: 사용자가 시스템과 소통할 수 있는 환경 제공
- 명령어 해석기 (Command Interpreter)
- 커널의 작업이 완료 되면 이를 다시 사용자에게 보여줌
[종류]
- CLI (Command Line Interface)
명령어 입력창(터미널)을 통해 텍스트로 명령을 주고받는 방식
[e.g.] Linux - bash / Windows - PowerShell
- GUI (Graphical User Interface)
아이콘, 창, 메뉴 등의 그래픽 요소를 통해 마우스나 터치로 상호작용 하는 방식
[e.g.] Windows - 바탕화면 / Mac - Finder
[특징]
- 운영체제의 가장 외부 계층을 형성
- 커널 위에서 실행되는 응용 프로그램의 일종