조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다
1. 소개
프로그래밍의 도입
- 초기 컴퓨터는 하드웨어에 설계된 기능만 수행할 수 있는 기계였습니다.
- ✅ 범용성 부족: 새로운 문제를 해결하려면 하드웨어 변경이 필요함
- ➡️ 이 문제를 해결하기 위해 프로그래밍이란 개념이 도입됨
Stored Program Concept (폰 노이만)
- 명령어를 데이터처럼 메모리에 저장하고 실행할 작업을 프로그램 형태로 기술하여 같은 하드웨어에 다양한 작업을 수행함
- ✅ 계산 중심의 기계 → 범용 컴퓨터
- ✅ 하드웨어 중심 → 소프트웨어 중심
- ✅ 제한된 기능 → 확장 가능한 시스템
- ➡️ 원하는 프로그램을 추가하고 실행할 수 있게 되었습니다.
2. 역사
| 발전 과정 | 정의 | 특징 |
| ENIAC | 세계 최초의 전자 디지털 범용 컴퓨터 | - 약 18,000개의 진공관 사용 - 대규모 데이터 처리 - 회계, 급여 계산, 통계 분석 등 |
| 일괄작업 시스템 |
프로그램과 데이터를 한 번에 입력 후 자동 실행
|
- 작업을 스케줄링하여 실행 - 사용자와의 상호작용 부재 |
| 대화형 시스템 | 사용자와 컴퓨터 간의 양방향 커뮤니케이션 |
- 실시간 입출력
- 실행 중 입력 및 중간 결과값 표시 가능 |
| 시분할 시스템 | CPU 시간을 짧은 단위로 나누어 여러 작업에 번갈아 할당 | - 다중 프로그래밍: 하나의 CPU를 여러 프로세스가 공유 - 효율적: CPU 대기시간 감소 |
| 다중 사용자 시스템 (유닉스) | 여러 사용자가 동일 시스템을 동시에 사용 가능 | - 여러 사용자에 의한 자원 공유 허용 - 각 사용자는 고유한 계정을 가짐 |
| 분산 시스템 | 여러 대의 컴퓨터가 하나의 네트워크로 협력하여 작업 수행 |
논리적으로 하나의 통합된 시스템처럼 작동
|
| 클라이언트-서버 시스템 |
서버가 클라이언트의 요청을 처리하는 방식
|
클라이언트와 서버로 나뉜 이중 구조
|
| P2P 시스템 | 서버 없이 클라이언트끼리 직접 연결 | 서버 과부하 문제 해결 목적 |
| 클라우드 컴퓨팅 | 인터넷을 통해 서버, 스토리지 등의 컴퓨팅 서비스 제공 |
유연한 자원 할당 및 확장 가능
|
3. 기능
| 기능 | 설명 | 예시 |
| 자원 관리 | 프로그램들이 사용하는 자원들을 안전하고 효율적으로 사용하도록 관리 | CPU, 메모리, 디스크, 네트워크 |
| 사용자 인터페이스 제공 | 사용자와 컴퓨터 사이의 중간 다리 역할을 담당함 ➡️ 하드웨어를 직접 다루지 않아도 컴퓨터를 사용할 수 있게 해줌 |
GUI, CLI
|
| 동시성 관리 | 여러 작업이 동시에 실행되는 것처럼 보이도록 관리함 | 멀티태스킹, 스레드 스케줄링 |
4. 역할
| 역할 | 설명 |
| 안정성 (자원 보호) |
- 사용자가 직접 자원에 접근하지 못하도록 제한
- 자원을 보호하고 관리하여 시스템의 안정성 유지 - 결함 포용: 문제가 발생하면 이전 상태로 복구 |
| 효율성 (자원 관리) |
- 스케줄링: 자원을 어떤 프로그램에 어떤 순서로 할당할지 결정
- 독점 방지: 특정 프로그램이 자원을 독점하는 것을 막아 공정한 자원 할당 유지 |
| 확장성 (하드웨어 인터페이스) |
- Plug & Play 지원: 하드웨어 종류와 관계없이 연결 후 바로 사용 가능
- 다양한 하드웨어 자원의 추가 및 제거가 용이 (단, 드라이버 필요) |
| 편의성 (사용자 인터페이스) |
- 사용자가 시스템과 쉽게 상호작용할 수 있도록 인터페이스 제공 (GUI, CLI 등)
|
5. 구조
커널

- 운영체제에서 사용자와 시스템의 인터페이스 역할을 담당하는 프로그램
- ✅ 운영체제의 핵심이 되는 프로그램
- ✅ 프로세스 관리, 메모리 관리, 저장장치 관리 등
시스템 호출
- 커널이 자신을 보호하기 위해 만든 인터페이스 입니다.
- 커널이 제공하는 서비스를 시스템 호출로 제한함으로써 컴퓨터 자원을 보호합니다.
디바이스 드라이버
- 커널과 하드웨어의 인터페이스 입니다.
- 하드웨어의 특징이 반영된 프로그램으로 커널이 실행될 때 같이 실행됩니다.
- 이를 통해 커널이 하드웨어를 제어할 수 있습니다.
출처
'OS' 카테고리의 다른 글
| [쉽게 배우는 운영체제] 4-2. CPU 스케줄링: 인터럽트 처리 (0) | 2024.12.12 |
|---|---|
| [쉽게 배우는 운영체제] 4-1. CPU 스케줄링: 스케줄링 (0) | 2024.12.12 |
| [쉽게 배우는 운영체제] 3-2. 프로세스와 스레드: 스레드 (0) | 2024.12.12 |
| [쉽게 배우는 운영체제] 3-1. 프로세스와 스레드: 프로세스 (0) | 2024.12.11 |
| [쉽게 배우는 운영체제] 2. 컴퓨터의 구조와 성능 향상 (0) | 2024.01.11 |